@halcyonlabs/app 0.47.0-halcyon.150 → 0.47.0-halcyon.154
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/README.md +42 -42
- package/app/dist/assets/AddMachineDialog-BdJpkihi.js +1 -0
- package/app/dist/assets/AddMachineDialog-BdJpkihi.js.br +0 -0
- package/app/dist/assets/AddMachineDialog-BdJpkihi.js.gz +0 -0
- package/app/dist/assets/{AppCommandShortcutHint-XqWnnhwm.js → AppCommandShortcutHint-BHgq3YeS.js} +1 -1
- package/app/dist/assets/{AppFileExternalNavigationDispatcher-BSAKfw3w.js → AppFileExternalNavigationDispatcher-BeDkvNKN.js} +1 -1
- package/app/dist/assets/AppFileExternalNavigationDispatcher-BeDkvNKN.js.br +0 -0
- package/app/dist/assets/AppFileExternalNavigationDispatcher-BeDkvNKN.js.gz +0 -0
- package/app/dist/assets/{AppToasterView-CXc7iVrR.js → AppToasterView-DuifTr5L.js} +1 -1
- package/app/dist/assets/{BbDiff-DphdUFhF.js → BbDiff-GK254uaZ.js} +1 -1
- package/app/dist/assets/BbDiff-GK254uaZ.js.br +0 -0
- package/app/dist/assets/BbDiff-GK254uaZ.js.gz +0 -0
- package/app/dist/assets/{BbDiffSplit-DoZzLlkG.js → BbDiffSplit-WqGywaFa.js} +2 -2
- package/app/dist/assets/BbDiffSplit-WqGywaFa.js.br +0 -0
- package/app/dist/assets/BbDiffSplit-WqGywaFa.js.gz +0 -0
- package/app/dist/assets/{BbSourceCode-BpW5o86b.js → BbSourceCode-C5bDBexv.js} +1 -1
- package/app/dist/assets/BbSourceCode-C5bDBexv.js.br +0 -0
- package/app/dist/assets/BbSourceCode-C5bDBexv.js.gz +0 -0
- package/app/dist/assets/{BrowserTabDeck-BAqPQSof.js → BrowserTabDeck-CdoghDkN.js} +1 -1
- package/app/dist/assets/BrowserTabDeck-CdoghDkN.js.br +0 -0
- package/app/dist/assets/BrowserTabDeck-CdoghDkN.js.gz +0 -0
- package/app/dist/assets/{CommandPaletteBody-DP0u2Xvo.js → CommandPaletteBody-CYJbbw07.js} +1 -1
- package/app/dist/assets/CommandPaletteBody-CYJbbw07.js.br +0 -0
- package/app/dist/assets/CommandPaletteBody-CYJbbw07.js.gz +0 -0
- package/app/dist/assets/{DiffHost-BYfjGqQR.js → DiffHost-B1V_Qu-M.js} +1 -1
- package/app/dist/assets/DiffHost-B1V_Qu-M.js.br +0 -0
- package/app/dist/assets/DiffHost-B1V_Qu-M.js.gz +0 -0
- package/app/dist/assets/{ExperimentalFileLinkMenu-BAq3i6fs.js → ExperimentalFileLinkMenu-10AbAPks.js} +1 -1
- package/app/dist/assets/ExperimentalFileLinkMenu-10AbAPks.js.br +0 -0
- package/app/dist/assets/ExperimentalFileLinkMenu-10AbAPks.js.gz +0 -0
- package/app/dist/assets/{FilePreview-D3M2shlJ.js → FilePreview-B8mmtVCb.js} +1 -1
- package/app/dist/assets/FilePreview-B8mmtVCb.js.br +0 -0
- package/app/dist/assets/FilePreview-B8mmtVCb.js.gz +0 -0
- package/app/dist/assets/{GitDiffCardHeader-CRpu_qP7.js → GitDiffCardHeader-6438-ciu.js} +1 -1
- package/app/dist/assets/GitDiffCardHeader-6438-ciu.js.br +0 -0
- package/app/dist/assets/GitDiffCardHeader-6438-ciu.js.gz +0 -0
- package/app/dist/assets/{InlineMessageEditorFrame-BIfhlo1r.js → InlineMessageEditorFrame-DgUMycK2.js} +1 -1
- package/app/dist/assets/InlineMessageEditorFrame-DgUMycK2.js.br +0 -0
- package/app/dist/assets/InlineMessageEditorFrame-DgUMycK2.js.gz +0 -0
- package/app/dist/assets/{MachineRenameDialog-KYbZxaU8.js → MachineRenameDialog-Cgu_3BCL.js} +1 -1
- package/app/dist/assets/MachineRenameDialog-Cgu_3BCL.js.br +0 -0
- package/app/dist/assets/MachineRenameDialog-Cgu_3BCL.js.gz +0 -0
- package/app/dist/assets/{MachineSettingsView-B2gik2Fi.js → MachineSettingsView-Bv44IfNC.js} +1 -1
- package/app/dist/assets/MachineSettingsView-Bv44IfNC.js.br +0 -0
- package/app/dist/assets/MachineSettingsView-Bv44IfNC.js.gz +0 -0
- package/app/dist/assets/{MicrophonePreferences-D8yXHTVX.js → MicrophonePreferences-BHJopO0d.js} +1 -1
- package/app/dist/assets/MicrophonePreferences-BHJopO0d.js.br +0 -0
- package/app/dist/assets/MicrophonePreferences-BHJopO0d.js.gz +0 -0
- package/app/dist/assets/{ModelReasoningMenu-64I3wWj8.js → ModelReasoningMenu-IS0CHDdZ.js} +1 -1
- package/app/dist/assets/ModelReasoningMenu-IS0CHDdZ.js.br +0 -0
- package/app/dist/assets/ModelReasoningMenu-IS0CHDdZ.js.gz +0 -0
- package/app/dist/assets/{NewTabPage-0D1zh52c.js → NewTabPage-BlwyBjYu.js} +1 -1
- package/app/dist/assets/NewTabPage-BlwyBjYu.js.br +0 -0
- package/app/dist/assets/NewTabPage-BlwyBjYu.js.gz +0 -0
- package/app/dist/assets/{NewThreadComposer-CzhJPPA-.js → NewThreadComposer-CHSISNL-.js} +1 -1
- package/app/dist/assets/NewThreadComposer-CHSISNL-.js.br +0 -0
- package/app/dist/assets/NewThreadComposer-CHSISNL-.js.gz +0 -0
- package/app/dist/assets/{OnboardingFlow-B7dIXW5b.js → OnboardingFlow-BNj0nIEa.js} +1 -1
- package/app/dist/assets/OnboardingFlow-BNj0nIEa.js.br +0 -0
- package/app/dist/assets/OnboardingFlow-BNj0nIEa.js.gz +0 -0
- package/app/dist/assets/{OptionPicker-CVNc9bQV.js → OptionPicker-DhStUln1.js} +1 -1
- package/app/dist/assets/OptionPicker-DhStUln1.js.br +0 -0
- package/app/dist/assets/OptionPicker-DhStUln1.js.gz +0 -0
- package/app/dist/assets/{PaletteShell-BmMN3w8R.js → PaletteShell-CPrD4CCm.js} +1 -1
- package/app/dist/assets/PaletteShell-CPrD4CCm.js.br +0 -0
- package/app/dist/assets/PaletteShell-CPrD4CCm.js.gz +0 -0
- package/app/dist/assets/{PaneMaximizeButton-CJ2jMV6A.js → PaneMaximizeButton-XAgQw8mC.js} +1 -1
- package/app/dist/assets/PaneMaximizeButton-XAgQw8mC.js.br +0 -0
- package/app/dist/assets/PaneMaximizeButton-XAgQw8mC.js.gz +0 -0
- package/app/dist/assets/{PierreLineSelectionActions-CKcwMnwZ.js → PierreLineSelectionActions-o8f-eWuJ.js} +1 -1
- package/app/dist/assets/PierreLineSelectionActions-o8f-eWuJ.js.br +0 -0
- package/app/dist/assets/PierreLineSelectionActions-o8f-eWuJ.js.gz +0 -0
- package/app/dist/assets/{PluginPanelRightPanelHost-CM5fWHYY.js → PluginPanelRightPanelHost-BfbYIoWW.js} +1 -1
- package/app/dist/assets/PluginPanelRightPanelHost-BfbYIoWW.js.br +0 -0
- package/app/dist/assets/PluginPanelRightPanelHost-BfbYIoWW.js.gz +0 -0
- package/app/dist/assets/{PluginThreadChat-TLqw_QGC.js → PluginThreadChat-DWFQ8LHw.js} +1 -1
- package/app/dist/assets/PluginThreadChat-DWFQ8LHw.js.br +0 -0
- package/app/dist/assets/PluginThreadChat-DWFQ8LHw.js.gz +0 -0
- package/app/dist/assets/{ProjectDetailSettingsView-BsUvPmd1.js → ProjectDetailSettingsView-06DRszyG.js} +1 -1
- package/app/dist/assets/ProjectDetailSettingsView-06DRszyG.js.br +0 -0
- package/app/dist/assets/ProjectDetailSettingsView-06DRszyG.js.gz +0 -0
- package/app/dist/assets/{ProjectMachineSetupDialog-BP7XMssh.js → ProjectMachineSetupDialog-DHuOOhYL.js} +1 -1
- package/app/dist/assets/ProjectMachineSetupDialog-DHuOOhYL.js.br +0 -0
- package/app/dist/assets/ProjectMachineSetupDialog-DHuOOhYL.js.gz +0 -0
- package/app/dist/assets/{ProjectsSettingsSection-yZ2EdUuh.js → ProjectsSettingsSection-B-X7Xz7C.js} +1 -1
- package/app/dist/assets/ProjectsSettingsSection-B-X7Xz7C.js.br +0 -0
- package/app/dist/assets/ProjectsSettingsSection-B-X7Xz7C.js.gz +0 -0
- package/app/dist/assets/{QueuedMessagesList-BwnbJOmz.js → QueuedMessagesList-C008DSJg.js} +1 -1
- package/app/dist/assets/QueuedMessagesList-C008DSJg.js.br +0 -0
- package/app/dist/assets/QueuedMessagesList-C008DSJg.js.gz +0 -0
- package/app/dist/assets/{RemotePathBrowser-DUrwe6ZE.js → RemotePathBrowser-CKFtgh2_.js} +1 -1
- package/app/dist/assets/RemotePathBrowser-CKFtgh2_.js.br +0 -0
- package/app/dist/assets/RemotePathBrowser-CKFtgh2_.js.gz +0 -0
- package/app/dist/assets/{RootComposeView-oJcCn_s1.js → RootComposeView-DdzcUM0J.js} +1 -1
- package/app/dist/assets/RootComposeView-DdzcUM0J.js.br +0 -0
- package/app/dist/assets/RootComposeView-DdzcUM0J.js.gz +0 -0
- package/app/dist/assets/{SecondaryPanelLayout-CL5xgoDW.js → SecondaryPanelLayout-CpUjw8_E.js} +1 -1
- package/app/dist/assets/SecondaryPanelLayout-CpUjw8_E.js.br +0 -0
- package/app/dist/assets/SecondaryPanelLayout-CpUjw8_E.js.gz +0 -0
- package/app/dist/assets/{ServerMoveOverlayView-BRspdcDG.js → ServerMoveOverlayView-Bq0CSTyk.js} +1 -1
- package/app/dist/assets/ServerMoveOverlayView-Bq0CSTyk.js.br +0 -0
- package/app/dist/assets/ServerMoveOverlayView-Bq0CSTyk.js.gz +0 -0
- package/app/dist/assets/{SettingsSidebar-ji-CSeC6.js → SettingsSidebar-CMW-e9Nx.js} +1 -1
- package/app/dist/assets/SettingsSidebar-CMW-e9Nx.js.br +0 -0
- package/app/dist/assets/SettingsSidebar-CMW-e9Nx.js.gz +0 -0
- package/app/dist/assets/{SettingsView-CkBg3_lw.js → SettingsView-DhD-DKNU.js} +2 -2
- package/app/dist/assets/SettingsView-DhD-DKNU.js.br +0 -0
- package/app/dist/assets/SettingsView-DhD-DKNU.js.gz +0 -0
- package/app/dist/assets/{SidebarFooterCustomize-BzHHOUw-.js → SidebarFooterCustomize-C-njt8d8.js} +1 -1
- package/app/dist/assets/SidebarFooterCustomize-C-njt8d8.js.br +0 -0
- package/app/dist/assets/SidebarFooterCustomize-C-njt8d8.js.gz +0 -0
- package/app/dist/assets/{SidebarVisibilityCustomize-C1sJJmLO.js → SidebarVisibilityCustomize-q9kX3edG.js} +1 -1
- package/app/dist/assets/SidebarVisibilityCustomize-q9kX3edG.js.br +0 -0
- package/app/dist/assets/SidebarVisibilityCustomize-q9kX3edG.js.gz +0 -0
- package/app/dist/assets/{SourceCodeHost-BTHk84dk.js → SourceCodeHost-BSVZZsXz.js} +2 -2
- package/app/dist/assets/SourceCodeHost-BSVZZsXz.js.br +0 -0
- package/app/dist/assets/SourceCodeHost-BSVZZsXz.js.gz +0 -0
- package/app/dist/assets/{SplitWorkspaceRoute-B5Zx7J8C.js → SplitWorkspaceRoute-ChAornRc.js} +2 -2
- package/app/dist/assets/SplitWorkspaceRoute-ChAornRc.js.br +0 -0
- package/app/dist/assets/SplitWorkspaceRoute-ChAornRc.js.gz +0 -0
- package/app/dist/assets/{TerminalOutputBlock-D8Coy0K6.js → TerminalOutputBlock-DQQ_wFdt.js} +1 -1
- package/app/dist/assets/TerminalOutputBlock-DQQ_wFdt.js.br +0 -0
- package/app/dist/assets/TerminalOutputBlock-DQQ_wFdt.js.gz +0 -0
- package/app/dist/assets/{ThreadActionsMenu-BB7XL5Ux.js → ThreadActionsMenu-DbzG74B6.js} +1 -1
- package/app/dist/assets/ThreadActionsMenu-DbzG74B6.js.br +0 -0
- package/app/dist/assets/ThreadActionsMenu-DbzG74B6.js.gz +0 -0
- package/app/dist/assets/{ThreadDetailView-sCxYviMF.js → ThreadDetailView-BWYGGTcQ.js} +3 -3
- package/app/dist/assets/ThreadDetailView-BWYGGTcQ.js.br +0 -0
- package/app/dist/assets/ThreadDetailView-BWYGGTcQ.js.gz +0 -0
- package/app/dist/assets/{ThreadSearchPaletteMode-CNuSxSDT.js → ThreadSearchPaletteMode-rPLvkZPN.js} +1 -1
- package/app/dist/assets/ThreadSearchPaletteMode-rPLvkZPN.js.br +0 -0
- package/app/dist/assets/ThreadSearchPaletteMode-rPLvkZPN.js.gz +0 -0
- package/app/dist/assets/{ThreadSecondaryPanel--TXJtwro.js → ThreadSecondaryPanel-zRuy2IFh.js} +1 -1
- package/app/dist/assets/ThreadSecondaryPanel-zRuy2IFh.js.br +0 -0
- package/app/dist/assets/ThreadSecondaryPanel-zRuy2IFh.js.gz +0 -0
- package/app/dist/assets/{ThreadSecondaryPanelTabContent-I4ppwNUx.js → ThreadSecondaryPanelTabContent-BKOeGhrZ.js} +1 -1
- package/app/dist/assets/ThreadSecondaryPanelTabContent-BKOeGhrZ.js.br +0 -0
- package/app/dist/assets/ThreadSecondaryPanelTabContent-BKOeGhrZ.js.gz +0 -0
- package/app/dist/assets/{ThreadStatusGlyph-DodjCUyJ.js → ThreadStatusGlyph-04rqDWss.js} +1 -1
- package/app/dist/assets/ThreadStatusGlyph-04rqDWss.js.br +0 -0
- package/app/dist/assets/ThreadStatusGlyph-04rqDWss.js.gz +0 -0
- package/app/dist/assets/{ThreadTerminalPanel-BvegWjNb.js → ThreadTerminalPanel-CPO7T676.js} +1 -1
- package/app/dist/assets/ThreadTerminalPanel-CPO7T676.js.br +0 -0
- package/app/dist/assets/ThreadTerminalPanel-CPO7T676.js.gz +0 -0
- package/app/dist/assets/{ThreadTerminalView-eitR3jHV.js → ThreadTerminalView-DVoz-Pk9.js} +1 -1
- package/app/dist/assets/ThreadTerminalView-DVoz-Pk9.js.br +0 -0
- package/app/dist/assets/ThreadTerminalView-DVoz-Pk9.js.gz +0 -0
- package/app/dist/assets/{ThreadTimelineNavigationContext-CsCsqcye.js → ThreadTimelineNavigationContext-DH_gUsNq.js} +2 -2
- package/app/dist/assets/ThreadTimelineNavigationContext-DH_gUsNq.js.br +0 -0
- package/app/dist/assets/ThreadTimelineNavigationContext-DH_gUsNq.js.gz +0 -0
- package/app/dist/assets/{ThreadUnarchiveButton-3l74PF2Y.js → ThreadUnarchiveButton-DtYLOt5h.js} +1 -1
- package/app/dist/assets/{TimelineDetailScroll-Wqjtt19Q.js → TimelineDetailScroll-DGCsPfT5.js} +1 -1
- package/app/dist/assets/TimelineDetailScroll-DGCsPfT5.js.br +0 -0
- package/app/dist/assets/TimelineDetailScroll-DGCsPfT5.js.gz +0 -0
- package/app/dist/assets/{TimelineFileDiffBlock-DP66VABD.js → TimelineFileDiffBlock-CJJqE1Hp.js} +1 -1
- package/app/dist/assets/TimelineFileDiffBlock-CJJqE1Hp.js.br +0 -0
- package/app/dist/assets/TimelineFileDiffBlock-CJJqE1Hp.js.gz +0 -0
- package/app/dist/assets/{TimelineSelectionMenu-dDFIppSs.js → TimelineSelectionMenu-DUGdkfJf.js} +1 -1
- package/app/dist/assets/TimelineSelectionMenu-DUGdkfJf.js.br +0 -0
- package/app/dist/assets/TimelineSelectionMenu-DUGdkfJf.js.gz +0 -0
- package/app/dist/assets/{ToolsView-BbgSCMyJ.js → ToolsView-DbPjm_5d.js} +1 -1
- package/app/dist/assets/ToolsView-DbPjm_5d.js.br +0 -0
- package/app/dist/assets/ToolsView-DbPjm_5d.js.gz +0 -0
- package/app/dist/assets/{ToolsViewSplits-3v4dQMWH.js → ToolsViewSplits-CW7YNNC0.js} +2 -2
- package/app/dist/assets/ToolsViewSplits-CW7YNNC0.js.br +0 -0
- package/app/dist/assets/ToolsViewSplits-CW7YNNC0.js.gz +0 -0
- package/app/dist/assets/{WaveformVisualizer-CTuYQaxv.js → WaveformVisualizer-BvWy1QDO.js} +1 -1
- package/app/dist/assets/WaveformVisualizer-BvWy1QDO.js.br +0 -0
- package/app/dist/assets/WaveformVisualizer-BvWy1QDO.js.gz +0 -0
- package/app/dist/assets/{absolute-file-path-C52NE2Ra.js → absolute-file-path-n8gjdT4s.js} +1 -1
- package/app/dist/assets/{app-fixed-tab-navigation-Bazo4E3N.js → app-fixed-tab-navigation-BmS8pksE.js} +1 -1
- package/app/dist/assets/app-fixed-tab-navigation-BmS8pksE.js.br +0 -0
- package/app/dist/assets/app-fixed-tab-navigation-BmS8pksE.js.gz +0 -0
- package/app/dist/assets/{audio-input-device-preference-BInbKM6f.js → audio-input-device-preference-B_lng6h2.js} +1 -1
- package/app/dist/assets/audio-input-device-preference-B_lng6h2.js.br +0 -0
- package/app/dist/assets/audio-input-device-preference-B_lng6h2.js.gz +0 -0
- package/app/dist/assets/{bottom-anchored-scroll-body-BvJ4RPW1.js → bottom-anchored-scroll-body-8hYPbnt0.js} +1 -1
- package/app/dist/assets/bottom-anchored-scroll-body-8hYPbnt0.js.br +0 -0
- package/app/dist/assets/bottom-anchored-scroll-body-8hYPbnt0.js.gz +0 -0
- package/app/dist/assets/{browser-url-BZwRHtdQ.js → browser-url-CxrZuVov.js} +1 -1
- package/app/dist/assets/browser-url-CxrZuVov.js.br +0 -0
- package/app/dist/assets/browser-url-CxrZuVov.js.gz +0 -0
- package/app/dist/assets/{checkbox-DNIhYMDu.js → checkbox-C0nhruDs.js} +1 -1
- package/app/dist/assets/checkbox-C0nhruDs.js.br +0 -0
- package/app/dist/assets/checkbox-C0nhruDs.js.gz +0 -0
- package/app/dist/assets/{code-loading-skeletons-IO1KXbza.js → code-loading-skeletons-D66C2XWf.js} +1 -1
- package/app/dist/assets/code-loading-skeletons-D66C2XWf.js.br +4 -0
- package/app/dist/assets/code-loading-skeletons-D66C2XWf.js.gz +0 -0
- package/app/dist/assets/{code-rendering-B0ibReMv.js → code-rendering-D7GYk6Ga.js} +1 -1
- package/app/dist/assets/{code-theme-registration-DQQ5WAyA.js → code-theme-registration-la64LL3B.js} +1 -1
- package/app/dist/assets/{detail-card-DDIAUec5.js → detail-card-DRqh7bq6.js} +1 -1
- package/app/dist/assets/detail-card-DRqh7bq6.js.br +0 -0
- package/app/dist/assets/detail-card-DRqh7bq6.js.gz +0 -0
- package/app/dist/assets/{diff-stats-tally-CKiw6JxL.js → diff-stats-tally-DJu2oLr3.js} +1 -1
- package/app/dist/assets/diff-stats-tally-DJu2oLr3.js.br +0 -0
- package/app/dist/assets/diff-stats-tally-DJu2oLr3.js.gz +0 -0
- package/app/dist/assets/{environment-mutations-NoOecJ_m.js → environment-mutations-CmUX4rLj.js} +1 -1
- package/app/dist/assets/environment-mutations-CmUX4rLj.js.br +0 -0
- package/app/dist/assets/environment-mutations-CmUX4rLj.js.gz +0 -0
- package/app/dist/assets/{environment-workspace-display-DlH4-2Je.js → environment-workspace-display-Dattk545.js} +3 -3
- package/app/dist/assets/environment-workspace-display-Dattk545.js.br +0 -0
- package/app/dist/assets/environment-workspace-display-Dattk545.js.gz +0 -0
- package/app/dist/assets/{event-code-block-BglioqVe.js → event-code-block-BF4l-E6T.js} +1 -1
- package/app/dist/assets/event-code-block-BF4l-E6T.js.br +0 -0
- package/app/dist/assets/event-code-block-BF4l-E6T.js.gz +0 -0
- package/app/dist/assets/{expandable-text-roHqoKS6.js → expandable-text-BctZMPkQ.js} +1 -1
- package/app/dist/assets/expandable-text-BctZMPkQ.js.br +0 -0
- package/app/dist/assets/expandable-text-BctZMPkQ.js.gz +0 -0
- package/app/dist/assets/{file-opener-preference-LZpK4AFI.js → file-opener-preference-C3yH4feg.js} +1 -1
- package/app/dist/assets/{file-path-link-BqX0yHKv.js → file-path-link-BNr97QLi.js} +1 -1
- package/app/dist/assets/file-path-link-BNr97QLi.js.br +0 -0
- package/app/dist/assets/file-path-link-BNr97QLi.js.gz +0 -0
- package/app/dist/assets/{host-mutations-BBHMe5SP.js → host-mutations-C23wDSgk.js} +1 -1
- package/app/dist/assets/host-mutations-C23wDSgk.js.br +0 -0
- package/app/dist/assets/host-mutations-C23wDSgk.js.gz +0 -0
- package/app/dist/assets/{icon-extended-QRecSyLO.js → icon-extended-BzpFbkPC.js} +1 -1
- package/app/dist/assets/icon-extended-BzpFbkPC.js.br +0 -0
- package/app/dist/assets/icon-extended-BzpFbkPC.js.gz +0 -0
- package/app/dist/assets/{image-lightbox-DcW9NMfz.js → image-lightbox-ByvVk7z3.js} +1 -1
- package/app/dist/assets/image-lightbox-ByvVk7z3.js.br +0 -0
- package/app/dist/assets/image-lightbox-ByvVk7z3.js.gz +0 -0
- package/app/dist/assets/index-BY3ej0PM.css +2 -0
- package/app/dist/assets/index-BY3ej0PM.css.br +0 -0
- package/app/dist/assets/{index-D2OEUGpi.css.gz → index-BY3ej0PM.css.gz} +0 -0
- package/app/dist/assets/{index-DacqPN7W.js → index-B_0TBqOi.js} +8 -8
- package/app/dist/assets/index-B_0TBqOi.js.br +0 -0
- package/app/dist/assets/index-B_0TBqOi.js.gz +0 -0
- package/app/dist/assets/{inline-rename-editor-C620Mj5u.js → inline-rename-editor-BVU5Ij1d.js} +1 -1
- package/app/dist/assets/inline-rename-editor-BVU5Ij1d.js.br +0 -0
- package/app/dist/assets/inline-rename-editor-BVU5Ij1d.js.gz +0 -0
- package/app/dist/assets/{launcherRow-DKoO_khe.js → launcherRow-CP53NnO3.js} +1 -1
- package/app/dist/assets/launcherRow-CP53NnO3.js.br +0 -0
- package/app/dist/assets/launcherRow-CP53NnO3.js.gz +0 -0
- package/app/dist/assets/{localhost-link-rewrite-description-D0-Y3k5i.js → localhost-link-rewrite-description-B_X4XQAr.js} +1 -1
- package/app/dist/assets/localhost-link-rewrite-description-B_X4XQAr.js.br +0 -0
- package/app/dist/assets/localhost-link-rewrite-description-B_X4XQAr.js.gz +0 -0
- package/app/dist/assets/{machine-provider-queries-raWIen_P.js → machine-provider-queries-tnn_naNk.js} +1 -1
- package/app/dist/assets/machine-provider-queries-tnn_naNk.js.br +0 -0
- package/app/dist/assets/machine-provider-queries-tnn_naNk.js.gz +0 -0
- package/app/dist/assets/{machine-server-access-DQREaCCd.js → machine-server-access-Dcj-Ghdj.js} +1 -1
- package/app/dist/assets/{markdown-file-image-routing-DVUeRAfb.js → markdown-file-image-routing-De6cFFfS.js} +1 -1
- package/app/dist/assets/{markdown-html-DHd4UhWi.js → markdown-html-FeTbcXhk.js} +1 -1
- package/app/dist/assets/markdown-html-FeTbcXhk.js.br +0 -0
- package/app/dist/assets/markdown-html-FeTbcXhk.js.gz +0 -0
- package/app/dist/assets/{markdown-local-file-link-C7ZSh39X.js → markdown-local-file-link-BBqyLr6W.js} +1 -1
- package/app/dist/assets/markdown-local-file-link-BBqyLr6W.js.br +0 -0
- package/app/dist/assets/markdown-local-file-link-BBqyLr6W.js.gz +0 -0
- package/app/dist/assets/{markdown-preview-BDgTvGB7.js → markdown-preview-B_YVrhSM.js} +2 -2
- package/app/dist/assets/markdown-preview-B_YVrhSM.js.br +0 -0
- package/app/dist/assets/markdown-preview-B_YVrhSM.js.gz +0 -0
- package/app/dist/assets/{markdown-prompt-mentions-8OPHWmgV.js → markdown-prompt-mentions-BJbOQiT4.js} +1 -1
- package/app/dist/assets/markdown-prompt-mentions-BJbOQiT4.js.br +0 -0
- package/app/dist/assets/markdown-prompt-mentions-BJbOQiT4.js.gz +0 -0
- package/app/dist/assets/{model-load-error-message-CvmPmrbk.js → model-load-error-message-DJpF2wvJ.js} +1 -1
- package/app/dist/assets/model-load-error-message-DJpF2wvJ.js.br +0 -0
- package/app/dist/assets/model-load-error-message-DJpF2wvJ.js.gz +0 -0
- package/app/dist/assets/onboarding-telemetry-tI_FNLaF.js +1 -0
- package/app/dist/assets/{open-in-editor-button-DRMlCZor.js → open-in-editor-button-C8n2v5LY.js} +1 -1
- package/app/dist/assets/open-in-editor-button-C8n2v5LY.js.br +0 -0
- package/app/dist/assets/open-in-editor-button-C8n2v5LY.js.gz +0 -0
- package/app/dist/assets/{page-shell-BK7L-DYe.js → page-shell-D47DKxLl.js} +1 -1
- package/app/dist/assets/page-shell-D47DKxLl.js.br +0 -0
- package/app/dist/assets/page-shell-D47DKxLl.js.gz +0 -0
- package/app/dist/assets/{pierre-worker-pool-CuLcpsi8.js → pierre-worker-pool-BMZ7tHdT.js} +1 -1
- package/app/dist/assets/pierre-worker-pool-BMZ7tHdT.js.br +0 -0
- package/app/dist/assets/pierre-worker-pool-BMZ7tHdT.js.gz +0 -0
- package/app/dist/assets/{plugin-detail-navigation-CJlE114J.js → plugin-detail-navigation-DVixJc20.js} +1 -1
- package/app/dist/assets/plugin-detail-navigation-DVixJc20.js.br +0 -0
- package/app/dist/assets/plugin-detail-navigation-DVixJc20.js.gz +0 -0
- package/app/dist/assets/{plugin-frontend-47rHuwej.js → plugin-frontend-DsVoCsSZ.js} +3 -3
- package/app/dist/assets/plugin-frontend-DsVoCsSZ.js.br +0 -0
- package/app/dist/assets/plugin-frontend-DsVoCsSZ.js.gz +0 -0
- package/app/dist/assets/{plugin-ui-CfMeVtjo.js → plugin-ui-B71Vu791.js} +1 -1
- package/app/dist/assets/plugin-ui-B71Vu791.js.br +0 -0
- package/app/dist/assets/plugin-ui-B71Vu791.js.gz +0 -0
- package/app/dist/assets/{project-default-execution-options-query-BJDaiFOL.js → project-default-execution-options-query-CgU72E4D.js} +1 -1
- package/app/dist/assets/{queued-editor-typeahead-layout-BLdiUUDF.js → queued-editor-typeahead-layout-CH1VnOO2.js} +1 -1
- package/app/dist/assets/queued-editor-typeahead-layout-CH1VnOO2.js.br +0 -0
- package/app/dist/assets/queued-editor-typeahead-layout-CH1VnOO2.js.gz +0 -0
- package/app/dist/assets/{queued-messages-layout-BznV1BaT.js → queued-messages-layout-B9pem2nd.js} +1 -1
- package/app/dist/assets/queued-messages-layout-B9pem2nd.js.br +0 -0
- package/app/dist/assets/queued-messages-layout-B9pem2nd.js.gz +0 -0
- package/app/dist/assets/{resource-list-CVE0YyK0.js → resource-list-DoUEf5wT.js} +1 -1
- package/app/dist/assets/resource-list-DoUEf5wT.js.br +0 -0
- package/app/dist/assets/resource-list-DoUEf5wT.js.gz +0 -0
- package/app/dist/assets/root-compose-create-preference-CyryTAWU.js +1 -0
- package/app/dist/assets/{save-file-Bf9FfsXN.js → save-file-DYPJF3dp.js} +1 -1
- package/app/dist/assets/{settings-nav-aUt1tDMl.js → settings-nav-6vCwAb5Y.js} +1 -1
- package/app/dist/assets/settings-nav-6vCwAb5Y.js.br +0 -0
- package/app/dist/assets/settings-nav-6vCwAb5Y.js.gz +0 -0
- package/app/dist/assets/{settings-sections-DBK3hwuR.js → settings-sections-Bo9wVSLf.js} +1 -1
- package/app/dist/assets/settings-sections-Bo9wVSLf.js.br +0 -0
- package/app/dist/assets/settings-sections-Bo9wVSLf.js.gz +0 -0
- package/app/dist/assets/{shortcut-pill-DEGa4D8O.js → shortcut-pill-DATfy56m.js} +1 -1
- package/app/dist/assets/{sidebarTouchSensor-CYys9CY6.js → sidebarTouchSensor-F4M3FBtR.js} +1 -1
- package/app/dist/assets/sidebarTouchSensor-F4M3FBtR.js.br +0 -0
- package/app/dist/assets/sidebarTouchSensor-F4M3FBtR.js.gz +0 -0
- package/app/dist/assets/{switch-BtMcgx46.js → switch-BJj4GzNp.js} +1 -1
- package/app/dist/assets/switch-BJj4GzNp.js.br +0 -0
- package/app/dist/assets/switch-BJj4GzNp.js.gz +0 -0
- package/app/dist/assets/{textarea-D7Nd-tMA.js → textarea-DzpMCsz6.js} +1 -1
- package/app/dist/assets/{thread-event-parser-BiJ_VfWf.js → thread-event-parser-DnjHYyuU.js} +1 -1
- package/app/dist/assets/thread-event-parser-DnjHYyuU.js.br +0 -0
- package/app/dist/assets/thread-event-parser-DnjHYyuU.js.gz +0 -0
- package/app/dist/assets/{thread-panel-queries-Car_bb3A.js → thread-panel-queries-DaOpGIrW.js} +1 -1
- package/app/dist/assets/thread-panel-queries-DaOpGIrW.js.br +0 -0
- package/app/dist/assets/thread-panel-queries-DaOpGIrW.js.gz +0 -0
- package/app/dist/assets/{thread-runtime-mutations-Cwga71Aj.js → thread-runtime-mutations-C-G1v_Ek.js} +1 -1
- package/app/dist/assets/thread-runtime-mutations-C-G1v_Ek.js.br +0 -0
- package/app/dist/assets/thread-runtime-mutations-C-G1v_Ek.js.gz +0 -0
- package/app/dist/assets/{thread-terminal-queries-Bg-tvpkN.js → thread-terminal-queries-BivE-ujh.js} +1 -1
- package/app/dist/assets/thread-terminal-queries-BivE-ujh.js.br +0 -0
- package/app/dist/assets/thread-terminal-queries-BivE-ujh.js.gz +0 -0
- package/app/dist/assets/{threadRecentItems-UnDeouJZ.js → threadRecentItems-Cw7AMHgZ.js} +1 -1
- package/app/dist/assets/threadRecentItems-Cw7AMHgZ.js.br +0 -0
- package/app/dist/assets/threadRecentItems-Cw7AMHgZ.js.gz +0 -0
- package/app/dist/assets/{threadWorkspaceOpenPath-Dzhkj2zL.js → threadWorkspaceOpenPath-C8kt97KM.js} +1 -1
- package/app/dist/assets/threadWorkspaceOpenPath-C8kt97KM.js.br +0 -0
- package/app/dist/assets/threadWorkspaceOpenPath-C8kt97KM.js.gz +0 -0
- package/app/dist/assets/{title-bar-scroll-fade-xPf3yN9Y.js → title-bar-scroll-fade-DsM_duhX.js} +1 -1
- package/app/dist/assets/title-bar-scroll-fade-DsM_duhX.js.br +0 -0
- package/app/dist/assets/title-bar-scroll-fade-DsM_duhX.js.gz +0 -0
- package/app/dist/assets/{truncate-start-Czvfq52J.js → truncate-start-BCO9vOzz.js} +1 -1
- package/app/dist/assets/{use-hover-popover-Ckcn2jmk.js → use-hover-popover-k_4HMDoJ.js} +1 -1
- package/app/dist/assets/use-hover-popover-k_4HMDoJ.js.br +0 -0
- package/app/dist/assets/use-hover-popover-k_4HMDoJ.js.gz +0 -0
- package/app/dist/assets/{useElementWidth-C1ACj7NT.js → useElementWidth-BkksLaeN.js} +1 -1
- package/app/dist/assets/useElementWidth-BkksLaeN.js.br +0 -0
- package/app/dist/assets/useElementWidth-BkksLaeN.js.gz +0 -0
- package/app/dist/assets/{useLocalOpenTargets-BHW47emg.js → useLocalOpenTargets-G_SbnjQv.js} +1 -1
- package/app/dist/assets/useLocalOpenTargets-G_SbnjQv.js.br +0 -0
- package/app/dist/assets/useLocalOpenTargets-G_SbnjQv.js.gz +0 -0
- package/app/dist/assets/{usePanelResizeSnap-XNmZmBMC.js → usePanelResizeSnap-9MCj1cnd.js} +1 -1
- package/app/dist/assets/usePanelResizeSnap-9MCj1cnd.js.br +0 -0
- package/app/dist/assets/usePanelResizeSnap-9MCj1cnd.js.gz +0 -0
- package/app/dist/assets/{usePanelTerminals-D854-ktJ.js → usePanelTerminals-CJ0qd2is.js} +1 -1
- package/app/dist/assets/usePanelTerminals-CJ0qd2is.js.br +0 -0
- package/app/dist/assets/usePanelTerminals-CJ0qd2is.js.gz +0 -0
- package/app/dist/assets/{usePathSuggestions-C7sDK8nq.js → usePathSuggestions-B1rdOa_N.js} +1 -1
- package/app/dist/assets/usePathSuggestions-B1rdOa_N.js.br +0 -0
- package/app/dist/assets/usePathSuggestions-B1rdOa_N.js.gz +0 -0
- package/app/dist/assets/{useResolvedLiveFileTarget-Djned7dt.js → useResolvedLiveFileTarget-BaB_Ekxe.js} +1 -1
- package/app/dist/assets/useResolvedLiveFileTarget-BaB_Ekxe.js.br +0 -0
- package/app/dist/assets/useResolvedLiveFileTarget-BaB_Ekxe.js.gz +0 -0
- package/app/dist/assets/{useThreadTerminalController-DzFZD_xB.js → useThreadTerminalController-CKKEu8on.js} +1 -1
- package/app/dist/assets/useThreadTerminalController-CKKEu8on.js.br +0 -0
- package/app/dist/assets/useThreadTerminalController-CKKEu8on.js.gz +0 -0
- package/app/dist/assets/{workspace-change-summary-B0yf2owq.js → workspace-change-summary-Bz0SBrOW.js} +1 -1
- package/app/dist/assets/workspace-change-summary-Bz0SBrOW.js.br +0 -0
- package/app/dist/assets/workspace-change-summary-Bz0SBrOW.js.gz +0 -0
- package/app/dist/assets/{workspace-checkout-display-lFuCbZPV.js → workspace-checkout-display-Df5Suf8u.js} +4 -4
- package/app/dist/assets/workspace-checkout-display-Df5Suf8u.js.br +0 -0
- package/app/dist/assets/workspace-checkout-display-Df5Suf8u.js.gz +0 -0
- package/app/dist/index.html +17 -17
- package/app/dist/index.html.br +0 -0
- package/app/dist/index.html.gz +0 -0
- package/dist/bb-app.js +52 -47
- package/dist/bb-host-daemon.js +17 -14
- package/dist/bb-server.js +11 -11
- package/dist/bb.js +10 -10
- package/dist/index.d.ts +6 -6
- package/dist/index.js +7 -7
- package/host-daemon/dist/bb +3 -3
- package/host-daemon/dist/bb-chunks/{browser-YPHFBSVB.js → browser-PXOR4X6F.js} +4 -4
- package/host-daemon/dist/bb-chunks/{chunk-ZJPO4YH6.js → chunk-4BCVNZDB.js} +1 -1
- package/host-daemon/dist/bb-chunks/{chunk-X63QVO5F.js → chunk-ALV4J5VN.js} +1 -1
- package/host-daemon/dist/bb-chunks/{chunk-ZQP2RXIS.js → chunk-CQDJJOYR.js} +1 -1
- package/host-daemon/dist/bb-chunks/{chunk-4LTU3BZP.js → chunk-D2KWU4RX.js} +2 -2
- package/host-daemon/dist/bb-chunks/{chunk-BKBU62SF.js → chunk-D7LYWFZN.js} +1 -1
- package/host-daemon/dist/bb-chunks/{chunk-LH4TBBGQ.js → chunk-DCARCNP4.js} +1 -1
- package/host-daemon/dist/bb-chunks/chunk-G5CP5ERL.js +3 -0
- package/host-daemon/dist/bb-chunks/{chunk-A5EPBP3W.js → chunk-KB4JEVSK.js} +1 -1
- package/host-daemon/dist/bb-chunks/{chunk-5WC25JJR.js → chunk-RMWILRQL.js} +1 -1
- package/host-daemon/dist/bb-chunks/{chunk-IFPJMI5M.js → chunk-W6JBTZU3.js} +2 -2
- package/host-daemon/dist/bb-chunks/chunk-YK2XUHXL.js +2 -0
- package/host-daemon/dist/bb-chunks/{client-TZLPC3BF.js → client-RKKQXNZ7.js} +1 -1
- package/host-daemon/dist/bb-chunks/{commander-errors-32JXRGRD.js → commander-errors-EZ2NMF23.js} +1 -1
- package/host-daemon/dist/bb-chunks/{context-env-6CUQJXI7.js → context-env-EL62ZC4K.js} +1 -1
- package/host-daemon/dist/bb-chunks/{context-hints-EXGBAHBP.js → context-hints-YONLOIB2.js} +1 -1
- package/host-daemon/dist/bb-chunks/diagnostics-UXMDENSE.js +3 -0
- package/host-daemon/dist/bb-chunks/{environment-6E2VT767.js → environment-F6GZH2ZS.js} +1 -1
- package/host-daemon/dist/bb-chunks/{file-OM3MGTJZ.js → file-IBKZG2L2.js} +1 -1
- package/host-daemon/dist/bb-chunks/{guide-2EVMHWEL.js → guide-Q6F6N45N.js} +2 -2
- package/host-daemon/dist/bb-chunks/{machine-53J3POIB.js → machine-AZEA455T.js} +1 -1
- package/host-daemon/dist/bb-chunks/marketplace-2YDWW3NX.js +2 -0
- package/host-daemon/dist/bb-chunks/{plugin-BD2V5QKV.js → plugin-TJV2N7FU.js} +25 -25
- package/host-daemon/dist/bb-chunks/{plugin-cli-proxy-DVR2UZ2H.js → plugin-cli-proxy-72GJCUWQ.js} +1 -1
- package/host-daemon/dist/bb-chunks/{project-SFF34VFX.js → project-D5Q37M6H.js} +1 -1
- package/host-daemon/dist/bb-chunks/{prompt-history-QPAZVRGL.js → prompt-history-4TVCGE4C.js} +1 -1
- package/host-daemon/dist/bb-chunks/{provider-7EX5JKW6.js → provider-DW234NFS.js} +1 -1
- package/host-daemon/dist/bb-chunks/server-JPRTWHFW.js +8 -0
- package/host-daemon/dist/bb-chunks/settings-JKLVC2XX.js +4 -0
- package/host-daemon/dist/bb-chunks/{skill-Z4C767WB.js → skill-XILUFL7N.js} +2 -2
- package/host-daemon/dist/bb-chunks/{status-FBZ7QAO7.js → status-YMK2HOUU.js} +1 -1
- package/host-daemon/dist/bb-chunks/{terminal-7N5CXPEK.js → terminal-2JYO63CF.js} +1 -1
- package/host-daemon/dist/bb-chunks/{theme-OOZ4YUIP.js → theme-2GK2M6XU.js} +1 -1
- package/host-daemon/dist/bb-chunks/{thread-VKVOFAYM.js → thread-4CMRHEBV.js} +13 -13
- package/host-daemon/dist/bb-chunks/updates-5IICEDZH.js +2 -0
- package/host-daemon/dist/bb-chunks/voice-Z5BS2D4I.js +2 -0
- package/host-daemon/dist/daemon-bundle.mjs +1 -1
- package/package.json +1 -1
- package/server/dist/assets/install-machine-windows.mjs +8 -8
- package/server/dist/assets/install-machine.sh +26 -24
- package/server/dist/builtin-plugins/bb-account/package.json +3 -3
- package/server/dist/builtin-plugins/composer/package.json +2 -2
- package/server/dist/builtin-plugins/concurrency-limit/package.json +2 -2
- package/server/dist/builtin-plugins/connect/package.json +2 -2
- package/server/dist/builtin-plugins/connect-next/dist/server.js +1 -1
- package/server/dist/builtin-plugins/connect-next/package.json +3 -3
- package/server/dist/builtin-plugins/custom-instructions/package.json +2 -2
- package/server/dist/builtin-plugins/environment-modal-sandbox/package.json +2 -2
- package/server/dist/builtin-plugins/keep-awake/package.json +2 -2
- package/server/dist/builtin-plugins/marketplace.json +20 -20
- package/server/dist/builtin-plugins/mcp/package.json +2 -2
- package/server/dist/builtin-plugins/navigation/package.json +2 -2
- package/server/dist/builtin-plugins/orbit/dist/app.js +2 -2
- package/server/dist/builtin-plugins/orbit/dist/assets/orbit/revision +1 -1
- package/server/dist/builtin-plugins/orbit/dist/host.js +2 -1
- package/server/dist/builtin-plugins/orbit/dist/host.meta.json +1 -1
- package/server/dist/builtin-plugins/orbit/dist/server.js +200 -200
- package/server/dist/builtin-plugins/plugin-api-docs/dist/app.js +2 -2
- package/server/dist/builtin-plugins/plugin-api-docs/dist/server.js +2 -2
- package/server/dist/builtin-plugins/plugin-api-docs/package.json +2 -2
- package/server/dist/builtin-plugins/plugin-api-tester/package.json +2 -2
- package/server/dist/builtin-plugins/provider-acp/package.json +2 -2
- package/server/dist/builtin-plugins/provider-claude-code/package.json +2 -2
- package/server/dist/builtin-plugins/provider-codex/package.json +2 -2
- package/server/dist/builtin-plugins/provider-pi/package.json +2 -2
- package/server/dist/builtin-plugins/tasks/dist/app.css +1 -1
- package/server/dist/builtin-plugins/tasks/dist/app.js +54 -54
- package/server/dist/builtin-plugins/tasks/dist/host.js +69 -0
- package/server/dist/builtin-plugins/tasks/dist/host.meta.json +12 -0
- package/server/dist/builtin-plugins/tasks/dist/server.js +117 -93
- package/server/dist/builtin-plugins/tasks/package.json +2 -0
- package/server/dist/builtin-plugins/theme-preview/package.json +2 -2
- package/server/dist/builtin-plugins/thread-list/package.json +2 -2
- package/server/dist/index.js +7 -7
- package/server/dist/start-server.js +56 -56
- package/app/dist/assets/AddMachineDialog-UUUJINN_.js +0 -1
- package/app/dist/assets/AddMachineDialog-UUUJINN_.js.br +0 -0
- package/app/dist/assets/AddMachineDialog-UUUJINN_.js.gz +0 -0
- package/app/dist/assets/AppFileExternalNavigationDispatcher-BSAKfw3w.js.br +0 -0
- package/app/dist/assets/AppFileExternalNavigationDispatcher-BSAKfw3w.js.gz +0 -0
- package/app/dist/assets/BbDiff-DphdUFhF.js.br +0 -0
- package/app/dist/assets/BbDiff-DphdUFhF.js.gz +0 -0
- package/app/dist/assets/BbDiffSplit-DoZzLlkG.js.br +0 -0
- package/app/dist/assets/BbDiffSplit-DoZzLlkG.js.gz +0 -0
- package/app/dist/assets/BbSourceCode-BpW5o86b.js.br +0 -0
- package/app/dist/assets/BbSourceCode-BpW5o86b.js.gz +0 -0
- package/app/dist/assets/BrowserTabDeck-BAqPQSof.js.br +0 -0
- package/app/dist/assets/BrowserTabDeck-BAqPQSof.js.gz +0 -0
- package/app/dist/assets/CommandPaletteBody-DP0u2Xvo.js.br +0 -0
- package/app/dist/assets/CommandPaletteBody-DP0u2Xvo.js.gz +0 -0
- package/app/dist/assets/DiffHost-BYfjGqQR.js.br +0 -0
- package/app/dist/assets/DiffHost-BYfjGqQR.js.gz +0 -0
- package/app/dist/assets/ExperimentalFileLinkMenu-BAq3i6fs.js.br +0 -0
- package/app/dist/assets/ExperimentalFileLinkMenu-BAq3i6fs.js.gz +0 -0
- package/app/dist/assets/FilePreview-D3M2shlJ.js.br +0 -0
- package/app/dist/assets/FilePreview-D3M2shlJ.js.gz +0 -0
- package/app/dist/assets/GitDiffCardHeader-CRpu_qP7.js.br +0 -0
- package/app/dist/assets/GitDiffCardHeader-CRpu_qP7.js.gz +0 -0
- package/app/dist/assets/InlineMessageEditorFrame-BIfhlo1r.js.br +0 -0
- package/app/dist/assets/InlineMessageEditorFrame-BIfhlo1r.js.gz +0 -0
- package/app/dist/assets/MachineRenameDialog-KYbZxaU8.js.br +0 -0
- package/app/dist/assets/MachineRenameDialog-KYbZxaU8.js.gz +0 -0
- package/app/dist/assets/MachineSettingsView-B2gik2Fi.js.br +0 -0
- package/app/dist/assets/MachineSettingsView-B2gik2Fi.js.gz +0 -0
- package/app/dist/assets/MicrophonePreferences-D8yXHTVX.js.br +0 -0
- package/app/dist/assets/MicrophonePreferences-D8yXHTVX.js.gz +0 -0
- package/app/dist/assets/ModelReasoningMenu-64I3wWj8.js.br +0 -0
- package/app/dist/assets/ModelReasoningMenu-64I3wWj8.js.gz +0 -0
- package/app/dist/assets/NewTabPage-0D1zh52c.js.br +0 -0
- package/app/dist/assets/NewTabPage-0D1zh52c.js.gz +0 -0
- package/app/dist/assets/NewThreadComposer-CzhJPPA-.js.br +0 -0
- package/app/dist/assets/NewThreadComposer-CzhJPPA-.js.gz +0 -0
- package/app/dist/assets/OnboardingFlow-B7dIXW5b.js.br +0 -0
- package/app/dist/assets/OnboardingFlow-B7dIXW5b.js.gz +0 -0
- package/app/dist/assets/OptionPicker-CVNc9bQV.js.br +0 -0
- package/app/dist/assets/OptionPicker-CVNc9bQV.js.gz +0 -0
- package/app/dist/assets/PaletteShell-BmMN3w8R.js.br +0 -0
- package/app/dist/assets/PaletteShell-BmMN3w8R.js.gz +0 -0
- package/app/dist/assets/PaneMaximizeButton-CJ2jMV6A.js.br +0 -0
- package/app/dist/assets/PaneMaximizeButton-CJ2jMV6A.js.gz +0 -0
- package/app/dist/assets/PierreLineSelectionActions-CKcwMnwZ.js.br +0 -0
- package/app/dist/assets/PierreLineSelectionActions-CKcwMnwZ.js.gz +0 -0
- package/app/dist/assets/PluginPanelRightPanelHost-CM5fWHYY.js.br +0 -0
- package/app/dist/assets/PluginPanelRightPanelHost-CM5fWHYY.js.gz +0 -0
- package/app/dist/assets/PluginThreadChat-TLqw_QGC.js.br +0 -0
- package/app/dist/assets/PluginThreadChat-TLqw_QGC.js.gz +0 -0
- package/app/dist/assets/ProjectDetailSettingsView-BsUvPmd1.js.br +0 -0
- package/app/dist/assets/ProjectDetailSettingsView-BsUvPmd1.js.gz +0 -0
- package/app/dist/assets/ProjectMachineSetupDialog-BP7XMssh.js.br +0 -0
- package/app/dist/assets/ProjectMachineSetupDialog-BP7XMssh.js.gz +0 -0
- package/app/dist/assets/ProjectsSettingsSection-yZ2EdUuh.js.br +0 -0
- package/app/dist/assets/ProjectsSettingsSection-yZ2EdUuh.js.gz +0 -0
- package/app/dist/assets/QueuedMessagesList-BwnbJOmz.js.br +0 -0
- package/app/dist/assets/QueuedMessagesList-BwnbJOmz.js.gz +0 -0
- package/app/dist/assets/RemotePathBrowser-DUrwe6ZE.js.br +0 -0
- package/app/dist/assets/RemotePathBrowser-DUrwe6ZE.js.gz +0 -0
- package/app/dist/assets/RootComposeView-oJcCn_s1.js.br +0 -0
- package/app/dist/assets/RootComposeView-oJcCn_s1.js.gz +0 -0
- package/app/dist/assets/SecondaryPanelLayout-CL5xgoDW.js.br +0 -0
- package/app/dist/assets/SecondaryPanelLayout-CL5xgoDW.js.gz +0 -0
- package/app/dist/assets/ServerMoveOverlayView-BRspdcDG.js.br +0 -0
- package/app/dist/assets/ServerMoveOverlayView-BRspdcDG.js.gz +0 -0
- package/app/dist/assets/SettingsSidebar-ji-CSeC6.js.br +0 -0
- package/app/dist/assets/SettingsSidebar-ji-CSeC6.js.gz +0 -0
- package/app/dist/assets/SettingsView-CkBg3_lw.js.br +0 -0
- package/app/dist/assets/SettingsView-CkBg3_lw.js.gz +0 -0
- package/app/dist/assets/SidebarFooterCustomize-BzHHOUw-.js.br +0 -0
- package/app/dist/assets/SidebarFooterCustomize-BzHHOUw-.js.gz +0 -0
- package/app/dist/assets/SidebarVisibilityCustomize-C1sJJmLO.js.br +0 -0
- package/app/dist/assets/SidebarVisibilityCustomize-C1sJJmLO.js.gz +0 -0
- package/app/dist/assets/SourceCodeHost-BTHk84dk.js.br +0 -0
- package/app/dist/assets/SourceCodeHost-BTHk84dk.js.gz +0 -0
- package/app/dist/assets/SplitWorkspaceRoute-B5Zx7J8C.js.br +0 -0
- package/app/dist/assets/SplitWorkspaceRoute-B5Zx7J8C.js.gz +0 -0
- package/app/dist/assets/TerminalOutputBlock-D8Coy0K6.js.br +0 -0
- package/app/dist/assets/TerminalOutputBlock-D8Coy0K6.js.gz +0 -0
- package/app/dist/assets/ThreadActionsMenu-BB7XL5Ux.js.br +0 -0
- package/app/dist/assets/ThreadActionsMenu-BB7XL5Ux.js.gz +0 -0
- package/app/dist/assets/ThreadDetailView-sCxYviMF.js.br +0 -0
- package/app/dist/assets/ThreadDetailView-sCxYviMF.js.gz +0 -0
- package/app/dist/assets/ThreadSearchPaletteMode-CNuSxSDT.js.br +0 -0
- package/app/dist/assets/ThreadSearchPaletteMode-CNuSxSDT.js.gz +0 -0
- package/app/dist/assets/ThreadSecondaryPanel--TXJtwro.js.br +0 -0
- package/app/dist/assets/ThreadSecondaryPanel--TXJtwro.js.gz +0 -0
- package/app/dist/assets/ThreadSecondaryPanelTabContent-I4ppwNUx.js.br +0 -0
- package/app/dist/assets/ThreadSecondaryPanelTabContent-I4ppwNUx.js.gz +0 -0
- package/app/dist/assets/ThreadStatusGlyph-DodjCUyJ.js.br +0 -0
- package/app/dist/assets/ThreadStatusGlyph-DodjCUyJ.js.gz +0 -0
- package/app/dist/assets/ThreadTerminalPanel-BvegWjNb.js.br +0 -0
- package/app/dist/assets/ThreadTerminalPanel-BvegWjNb.js.gz +0 -0
- package/app/dist/assets/ThreadTerminalView-eitR3jHV.js.br +0 -0
- package/app/dist/assets/ThreadTerminalView-eitR3jHV.js.gz +0 -0
- package/app/dist/assets/ThreadTimelineNavigationContext-CsCsqcye.js.br +0 -0
- package/app/dist/assets/ThreadTimelineNavigationContext-CsCsqcye.js.gz +0 -0
- package/app/dist/assets/TimelineDetailScroll-Wqjtt19Q.js.br +0 -0
- package/app/dist/assets/TimelineDetailScroll-Wqjtt19Q.js.gz +0 -0
- package/app/dist/assets/TimelineFileDiffBlock-DP66VABD.js.br +0 -0
- package/app/dist/assets/TimelineFileDiffBlock-DP66VABD.js.gz +0 -0
- package/app/dist/assets/TimelineSelectionMenu-dDFIppSs.js.br +0 -0
- package/app/dist/assets/TimelineSelectionMenu-dDFIppSs.js.gz +0 -0
- package/app/dist/assets/ToolsView-BbgSCMyJ.js.br +0 -0
- package/app/dist/assets/ToolsView-BbgSCMyJ.js.gz +0 -0
- package/app/dist/assets/ToolsViewSplits-3v4dQMWH.js.br +0 -0
- package/app/dist/assets/ToolsViewSplits-3v4dQMWH.js.gz +0 -0
- package/app/dist/assets/WaveformVisualizer-CTuYQaxv.js.br +0 -0
- package/app/dist/assets/WaveformVisualizer-CTuYQaxv.js.gz +0 -0
- package/app/dist/assets/app-fixed-tab-navigation-Bazo4E3N.js.br +0 -0
- package/app/dist/assets/app-fixed-tab-navigation-Bazo4E3N.js.gz +0 -0
- package/app/dist/assets/audio-input-device-preference-BInbKM6f.js.br +0 -0
- package/app/dist/assets/audio-input-device-preference-BInbKM6f.js.gz +0 -0
- package/app/dist/assets/bottom-anchored-scroll-body-BvJ4RPW1.js.br +0 -0
- package/app/dist/assets/bottom-anchored-scroll-body-BvJ4RPW1.js.gz +0 -0
- package/app/dist/assets/browser-url-BZwRHtdQ.js.br +0 -0
- package/app/dist/assets/browser-url-BZwRHtdQ.js.gz +0 -0
- package/app/dist/assets/checkbox-DNIhYMDu.js.br +0 -0
- package/app/dist/assets/checkbox-DNIhYMDu.js.gz +0 -0
- package/app/dist/assets/code-loading-skeletons-IO1KXbza.js.br +0 -0
- package/app/dist/assets/code-loading-skeletons-IO1KXbza.js.gz +0 -0
- package/app/dist/assets/detail-card-DDIAUec5.js.br +0 -0
- package/app/dist/assets/detail-card-DDIAUec5.js.gz +0 -0
- package/app/dist/assets/diff-stats-tally-CKiw6JxL.js.br +0 -0
- package/app/dist/assets/diff-stats-tally-CKiw6JxL.js.gz +0 -0
- package/app/dist/assets/environment-mutations-NoOecJ_m.js.br +0 -0
- package/app/dist/assets/environment-mutations-NoOecJ_m.js.gz +0 -0
- package/app/dist/assets/environment-workspace-display-DlH4-2Je.js.br +0 -0
- package/app/dist/assets/environment-workspace-display-DlH4-2Je.js.gz +0 -0
- package/app/dist/assets/event-code-block-BglioqVe.js.br +0 -0
- package/app/dist/assets/event-code-block-BglioqVe.js.gz +0 -0
- package/app/dist/assets/expandable-text-roHqoKS6.js.br +0 -0
- package/app/dist/assets/expandable-text-roHqoKS6.js.gz +0 -0
- package/app/dist/assets/file-path-link-BqX0yHKv.js.br +0 -0
- package/app/dist/assets/file-path-link-BqX0yHKv.js.gz +0 -0
- package/app/dist/assets/host-mutations-BBHMe5SP.js.br +0 -0
- package/app/dist/assets/host-mutations-BBHMe5SP.js.gz +0 -0
- package/app/dist/assets/icon-extended-QRecSyLO.js.br +0 -0
- package/app/dist/assets/icon-extended-QRecSyLO.js.gz +0 -0
- package/app/dist/assets/image-lightbox-DcW9NMfz.js.br +0 -0
- package/app/dist/assets/image-lightbox-DcW9NMfz.js.gz +0 -0
- package/app/dist/assets/index-D2OEUGpi.css +0 -2
- package/app/dist/assets/index-D2OEUGpi.css.br +0 -0
- package/app/dist/assets/index-DacqPN7W.js.br +0 -0
- package/app/dist/assets/index-DacqPN7W.js.gz +0 -0
- package/app/dist/assets/inline-rename-editor-C620Mj5u.js.br +0 -0
- package/app/dist/assets/inline-rename-editor-C620Mj5u.js.gz +0 -0
- package/app/dist/assets/launcherRow-DKoO_khe.js.br +0 -0
- package/app/dist/assets/launcherRow-DKoO_khe.js.gz +0 -0
- package/app/dist/assets/localhost-link-rewrite-description-D0-Y3k5i.js.br +0 -0
- package/app/dist/assets/localhost-link-rewrite-description-D0-Y3k5i.js.gz +0 -0
- package/app/dist/assets/machine-provider-queries-raWIen_P.js.br +0 -0
- package/app/dist/assets/machine-provider-queries-raWIen_P.js.gz +0 -0
- package/app/dist/assets/markdown-html-DHd4UhWi.js.br +0 -0
- package/app/dist/assets/markdown-html-DHd4UhWi.js.gz +0 -0
- package/app/dist/assets/markdown-local-file-link-C7ZSh39X.js.br +0 -0
- package/app/dist/assets/markdown-local-file-link-C7ZSh39X.js.gz +0 -0
- package/app/dist/assets/markdown-preview-BDgTvGB7.js.br +0 -0
- package/app/dist/assets/markdown-preview-BDgTvGB7.js.gz +0 -0
- package/app/dist/assets/markdown-prompt-mentions-8OPHWmgV.js.br +0 -0
- package/app/dist/assets/markdown-prompt-mentions-8OPHWmgV.js.gz +0 -0
- package/app/dist/assets/model-load-error-message-CvmPmrbk.js.br +0 -0
- package/app/dist/assets/model-load-error-message-CvmPmrbk.js.gz +0 -0
- package/app/dist/assets/onboarding-telemetry-DmkuGs4P.js +0 -1
- package/app/dist/assets/open-in-editor-button-DRMlCZor.js.br +0 -0
- package/app/dist/assets/open-in-editor-button-DRMlCZor.js.gz +0 -0
- package/app/dist/assets/page-shell-BK7L-DYe.js.br +0 -0
- package/app/dist/assets/page-shell-BK7L-DYe.js.gz +0 -0
- package/app/dist/assets/pierre-worker-pool-CuLcpsi8.js.br +0 -0
- package/app/dist/assets/pierre-worker-pool-CuLcpsi8.js.gz +0 -0
- package/app/dist/assets/plugin-detail-navigation-CJlE114J.js.br +0 -0
- package/app/dist/assets/plugin-detail-navigation-CJlE114J.js.gz +0 -0
- package/app/dist/assets/plugin-frontend-47rHuwej.js.br +0 -0
- package/app/dist/assets/plugin-frontend-47rHuwej.js.gz +0 -0
- package/app/dist/assets/plugin-ui-CfMeVtjo.js.br +0 -0
- package/app/dist/assets/plugin-ui-CfMeVtjo.js.gz +0 -0
- package/app/dist/assets/queued-editor-typeahead-layout-BLdiUUDF.js.br +0 -0
- package/app/dist/assets/queued-editor-typeahead-layout-BLdiUUDF.js.gz +0 -0
- package/app/dist/assets/queued-messages-layout-BznV1BaT.js.br +0 -0
- package/app/dist/assets/queued-messages-layout-BznV1BaT.js.gz +0 -0
- package/app/dist/assets/resource-list-CVE0YyK0.js.br +0 -0
- package/app/dist/assets/resource-list-CVE0YyK0.js.gz +0 -0
- package/app/dist/assets/root-compose-create-preference-CHbwpPRF.js +0 -1
- package/app/dist/assets/settings-nav-aUt1tDMl.js.br +0 -0
- package/app/dist/assets/settings-nav-aUt1tDMl.js.gz +0 -0
- package/app/dist/assets/settings-sections-DBK3hwuR.js.br +0 -0
- package/app/dist/assets/settings-sections-DBK3hwuR.js.gz +0 -0
- package/app/dist/assets/sidebarTouchSensor-CYys9CY6.js.br +0 -0
- package/app/dist/assets/sidebarTouchSensor-CYys9CY6.js.gz +0 -0
- package/app/dist/assets/switch-BtMcgx46.js.br +0 -0
- package/app/dist/assets/switch-BtMcgx46.js.gz +0 -0
- package/app/dist/assets/thread-event-parser-BiJ_VfWf.js.br +0 -0
- package/app/dist/assets/thread-event-parser-BiJ_VfWf.js.gz +0 -0
- package/app/dist/assets/thread-panel-queries-Car_bb3A.js.br +0 -0
- package/app/dist/assets/thread-panel-queries-Car_bb3A.js.gz +0 -0
- package/app/dist/assets/thread-runtime-mutations-Cwga71Aj.js.br +0 -0
- package/app/dist/assets/thread-runtime-mutations-Cwga71Aj.js.gz +0 -0
- package/app/dist/assets/thread-terminal-queries-Bg-tvpkN.js.br +0 -0
- package/app/dist/assets/thread-terminal-queries-Bg-tvpkN.js.gz +0 -0
- package/app/dist/assets/threadRecentItems-UnDeouJZ.js.br +0 -0
- package/app/dist/assets/threadRecentItems-UnDeouJZ.js.gz +0 -0
- package/app/dist/assets/threadWorkspaceOpenPath-Dzhkj2zL.js.br +0 -0
- package/app/dist/assets/threadWorkspaceOpenPath-Dzhkj2zL.js.gz +0 -0
- package/app/dist/assets/title-bar-scroll-fade-xPf3yN9Y.js.br +0 -0
- package/app/dist/assets/title-bar-scroll-fade-xPf3yN9Y.js.gz +0 -0
- package/app/dist/assets/use-hover-popover-Ckcn2jmk.js.br +0 -0
- package/app/dist/assets/use-hover-popover-Ckcn2jmk.js.gz +0 -0
- package/app/dist/assets/useElementWidth-C1ACj7NT.js.br +0 -0
- package/app/dist/assets/useElementWidth-C1ACj7NT.js.gz +0 -0
- package/app/dist/assets/useLocalOpenTargets-BHW47emg.js.br +0 -0
- package/app/dist/assets/useLocalOpenTargets-BHW47emg.js.gz +0 -0
- package/app/dist/assets/usePanelResizeSnap-XNmZmBMC.js.br +0 -0
- package/app/dist/assets/usePanelResizeSnap-XNmZmBMC.js.gz +0 -0
- package/app/dist/assets/usePanelTerminals-D854-ktJ.js.br +0 -0
- package/app/dist/assets/usePanelTerminals-D854-ktJ.js.gz +0 -0
- package/app/dist/assets/usePathSuggestions-C7sDK8nq.js.br +0 -0
- package/app/dist/assets/usePathSuggestions-C7sDK8nq.js.gz +0 -0
- package/app/dist/assets/useResolvedLiveFileTarget-Djned7dt.js.br +0 -0
- package/app/dist/assets/useResolvedLiveFileTarget-Djned7dt.js.gz +0 -0
- package/app/dist/assets/useThreadTerminalController-DzFZD_xB.js.br +0 -0
- package/app/dist/assets/useThreadTerminalController-DzFZD_xB.js.gz +0 -0
- package/app/dist/assets/workspace-change-summary-B0yf2owq.js.br +0 -0
- package/app/dist/assets/workspace-change-summary-B0yf2owq.js.gz +0 -0
- package/app/dist/assets/workspace-checkout-display-lFuCbZPV.js.br +0 -0
- package/app/dist/assets/workspace-checkout-display-lFuCbZPV.js.gz +0 -0
- package/host-daemon/dist/bb-chunks/chunk-ER46DNTR.js +0 -2
- package/host-daemon/dist/bb-chunks/chunk-H7ZMW3KO.js +0 -3
- package/host-daemon/dist/bb-chunks/diagnostics-U6HI5G5V.js +0 -3
- package/host-daemon/dist/bb-chunks/marketplace-CYKOR6QO.js +0 -2
- package/host-daemon/dist/bb-chunks/server-6XKNMUGR.js +0 -8
- package/host-daemon/dist/bb-chunks/settings-Z3W7VN6M.js +0 -4
- package/host-daemon/dist/bb-chunks/updates-FF4UHDLN.js +0 -2
- package/host-daemon/dist/bb-chunks/voice-J2G4CECQ.js +0 -2
package/README.md
CHANGED
|
@@ -2,27 +2,27 @@
|
|
|
2
2
|
<picture>
|
|
3
3
|
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/e40bda56-54a4-47f8-a417-6bbadf2e5b40">
|
|
4
4
|
<source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/4d9d02fb-c179-449b-a38a-041955143232">
|
|
5
|
-
<img alt="
|
|
5
|
+
<img alt="Moonlet" src="https://github.com/user-attachments/assets/4d9d02fb-c179-449b-a38a-041955143232" width="128">
|
|
6
6
|
</picture>
|
|
7
7
|
</p>
|
|
8
8
|
|
|
9
|
-
#
|
|
9
|
+
# Moonlet
|
|
10
10
|
|
|
11
11
|
[](https://www.npmjs.com/package/bb-app)
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Moonlet is an agentic IDE that builds itself. It can control, customize, and automate
|
|
14
14
|
itself, laying the groundwork for your own software factory.
|
|
15
15
|
|
|
16
16
|
This package provides the `npx -y -p @halcyonlabs/app bb-app` launcher, bundled `bb` CLI entry, and
|
|
17
17
|
Node SDK export. Every surface — the web app, CLI, and HTTP API — is a
|
|
18
|
-
first-class way to drive
|
|
18
|
+
first-class way to drive Moonlet. Work runs in threads you can follow live, steer at
|
|
19
19
|
any point, or hand off to another agent.
|
|
20
20
|
|
|
21
|
-
> Note:
|
|
21
|
+
> Note: Moonlet is in active development. Workflows and surfaces are still evolving.
|
|
22
22
|
|
|
23
23
|
## Quick Start
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
Moonlet runs from npm and orchestrates coding agents you already have installed.
|
|
26
26
|
|
|
27
27
|
### Prerequisites
|
|
28
28
|
|
|
@@ -30,7 +30,7 @@ bb runs from npm and orchestrates coding agents you already have installed.
|
|
|
30
30
|
- Git.
|
|
31
31
|
- At least one supported agent provider: [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Codex](https://developers.openai.com/codex/cli), Cursor via ACP, [Pi](https://github.com/earendil-works/pi/tree/main/packages/coding-agent), or another ACP-compatible agent.
|
|
32
32
|
|
|
33
|
-
If you already use one of these providers,
|
|
33
|
+
If you already use one of these providers, Moonlet will pick up your existing
|
|
34
34
|
credentials. If you use multiple providers, you can mix and match per task.
|
|
35
35
|
|
|
36
36
|
### Supported host environments
|
|
@@ -69,9 +69,9 @@ npx -y -p @halcyonlabs/app@nightly bb-app
|
|
|
69
69
|
Nightly versions are built from `main` and may be unstable. The `nightly`
|
|
70
70
|
dist-tag moves independently of the stable `latest` tag.
|
|
71
71
|
|
|
72
|
-
npm 12 and later block dependency install scripts by default.
|
|
72
|
+
npm 12 and later block dependency install scripts by default. Moonlet needs those
|
|
73
73
|
scripts to build its native add-ons (`better-sqlite3`, `node-pty`,
|
|
74
|
-
`@parcel/watcher`). Without them
|
|
74
|
+
`@parcel/watcher`). Without them Moonlet stops at startup with
|
|
75
75
|
`Could not locate the bindings file`. If your npm version is 12 or later, allow
|
|
76
76
|
the scripts for the install:
|
|
77
77
|
|
|
@@ -86,12 +86,12 @@ npm config set allow-scripts=better-sqlite3,node-pty,@parcel/watcher --location=
|
|
|
86
86
|
```
|
|
87
87
|
|
|
88
88
|
`npx -y -p @halcyonlabs/app@latest bb-app` downloads the published `@halcyonlabs/app` package, starts the server and
|
|
89
|
-
local host daemon, and serves the web app. It stores
|
|
89
|
+
local host daemon, and serves the web app. It stores Moonlet-managed state under
|
|
90
90
|
`~/.bb/` by default. If either managed child process exits unexpectedly, the
|
|
91
91
|
launcher restarts that child without stopping the other one. Press `Ctrl+C` in
|
|
92
92
|
the terminal to stop both processes and exit with status `0`.
|
|
93
93
|
|
|
94
|
-
If another live
|
|
94
|
+
If another live Moonlet owns the runtime record for the same data directory and a
|
|
95
95
|
healthy server answers on the configured local address, startup exits with
|
|
96
96
|
status `1` without starting either child process. The existing instance keeps
|
|
97
97
|
running. A runtime record without a healthy server does not prevent startup.
|
|
@@ -116,7 +116,7 @@ takes precedence. In-place progress updates require a stdout TTY.
|
|
|
116
116
|
|
|
117
117
|
The same output capture applies to `bb-server` and `bb-host-daemon`.
|
|
118
118
|
|
|
119
|
-
To stop a
|
|
119
|
+
To stop a Moonlet install that runs in another terminal or in the background:
|
|
120
120
|
|
|
121
121
|
```bash
|
|
122
122
|
npx -y -p @halcyonlabs/app bb-app stop
|
|
@@ -124,17 +124,17 @@ npx -y -p @halcyonlabs/app bb-app stop
|
|
|
124
124
|
|
|
125
125
|
`stop` reads `bb-app-runtime.json` from the data directory, confirms that the
|
|
126
126
|
recorded process really is that launcher, then stops it. Pass `--data-dir` when
|
|
127
|
-
the
|
|
127
|
+
the Moonlet install you want to stop does not use the default `~/.bb/`.
|
|
128
128
|
|
|
129
129
|
### The `bb` command
|
|
130
130
|
|
|
131
|
-
To control
|
|
132
|
-
choose **Install** next to **
|
|
133
|
-
is for your own terminals, scripts, and agents running outside
|
|
134
|
-
Claude Code or Codex.
|
|
131
|
+
To control Moonlet from outside Moonlet, open **Settings → General → Command line** and
|
|
132
|
+
choose **Install** next to **Moonlet CLI**. Threads in Moonlet already have `bb`; this
|
|
133
|
+
is for your own terminals, scripts, and agents running outside Moonlet, such as
|
|
134
|
+
Claude Code or Codex. Moonlet links a launcher from `~/.bb/bin/bb` into a folder on
|
|
135
135
|
your PATH (`~/.local/bin` on Linux; `/opt/homebrew/bin`, `/usr/local/bin`, or
|
|
136
136
|
`~/.local/bin` on macOS). On Windows it adds `~/.bb/bin` to your user PATH;
|
|
137
|
-
open a new terminal afterwards. **Remove** takes it off again.
|
|
137
|
+
open a new terminal afterwards. **Remove** takes it off again. Moonlet leaves any
|
|
138
138
|
other `bb` you already have in place.
|
|
139
139
|
|
|
140
140
|
From a terminal, before `bb` is on your PATH:
|
|
@@ -145,20 +145,20 @@ npx -y -p @halcyonlabs/app bb settings cli-command install
|
|
|
145
145
|
|
|
146
146
|
### Updating from the app
|
|
147
147
|
|
|
148
|
-
When
|
|
149
|
-
`bb updates app apply`).
|
|
150
|
-
`~/.bb/app-versions/`, restarts into it, and reconnects the page.
|
|
148
|
+
When Moonlet has an update, Settings → Updates shows an **Update** button (or run
|
|
149
|
+
`bb updates app apply`). Moonlet downloads the new version into
|
|
150
|
+
`~/.bb/app-versions/`, restarts into it, and reconnects the page. Moonlet does not
|
|
151
151
|
roll back: if the new version fails to start, run a newer release
|
|
152
152
|
(`npx -y -p @halcyonlabs/app@latest bb-app`) or fix the cause. Later `npx -y -p @halcyonlabs/app bb-app` runs use the newer
|
|
153
153
|
installed version; pass `--bundled` to run the copy npx downloaded instead.
|
|
154
|
-
Start
|
|
154
|
+
Start Moonlet with `--no-in-app-updates` to turn in-app updates off.
|
|
155
155
|
|
|
156
156
|
After the server moves to another machine, the old data directory keeps
|
|
157
157
|
`server-moved.json`. `bb-app` there starts no server: it runs this computer's
|
|
158
158
|
host daemon against the new server address in `config.json`, restarting it when
|
|
159
159
|
it exits, and answers the old server port. API requests get `410 server_moved`
|
|
160
160
|
with the new address; browser pages redirect to it for a direct address or link
|
|
161
|
-
to it for
|
|
161
|
+
to it for Moonlet Connect. While a move back to this computer is in progress
|
|
162
162
|
(`server-import.json`), it frees that port for the incoming server. When
|
|
163
163
|
`server-moved.json` goes away, after that move completes or `bb server unlock`,
|
|
164
164
|
it starts the server and co-located daemon again. `bb-server` exits with status
|
|
@@ -169,20 +169,20 @@ you want that thread to use.
|
|
|
169
169
|
|
|
170
170
|
## CLI
|
|
171
171
|
|
|
172
|
-
The package also exposes the `bb` CLI for an already-running
|
|
172
|
+
The package also exposes the `bb` CLI for an already-running Moonlet server:
|
|
173
173
|
|
|
174
174
|
```bash
|
|
175
175
|
npx -y -p @halcyonlabs/app bb --help
|
|
176
176
|
```
|
|
177
177
|
|
|
178
|
-
The CLI uses the same `BB_SERVER_URL` and
|
|
178
|
+
The CLI uses the same `BB_SERVER_URL` and Moonlet config resolution as the SDK. When
|
|
179
179
|
unset, it targets the default local packaged server at
|
|
180
180
|
`http://127.0.0.1:38886`.
|
|
181
181
|
|
|
182
182
|
## Scripting with the SDK
|
|
183
183
|
|
|
184
184
|
The package also exposes a Node SDK for scripts that drive an already-running
|
|
185
|
-
|
|
185
|
+
Moonlet server:
|
|
186
186
|
|
|
187
187
|
```ts
|
|
188
188
|
import { BBSdk } from "bb-app";
|
|
@@ -197,38 +197,38 @@ await bb.threads.wait({ threadId: String(thread.id), status: "idle" });
|
|
|
197
197
|
console.log(await bb.threads.output({ threadId: String(thread.id) }));
|
|
198
198
|
```
|
|
199
199
|
|
|
200
|
-
`new BBSdk()` uses the same `BB_SERVER_URL` and
|
|
200
|
+
`new BBSdk()` uses the same `BB_SERVER_URL` and Moonlet config resolution as the
|
|
201
201
|
CLI. Pass `new BBSdk({ baseUrl: "http://host:38886" })` for remote or test
|
|
202
|
-
targets (see the remote-access note below). Scripts launched by
|
|
202
|
+
targets (see the remote-access note below). Scripts launched by Moonlet already receive `BB_SERVER_URL` and
|
|
203
203
|
`BB_THREAD_ID` in their environment.
|
|
204
204
|
|
|
205
205
|
## Provider Credentials
|
|
206
206
|
|
|
207
|
-
|
|
207
|
+
Moonlet uses whichever providers you have configured. Common providers:
|
|
208
208
|
|
|
209
209
|
| Provider | Setup |
|
|
210
210
|
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
211
211
|
| `codex` | Install the [Codex CLI](https://developers.openai.com/codex/cli). Then run `codex login` or configure credentials per the Codex docs. |
|
|
212
212
|
| `claude-code` | Install [Claude Code](https://docs.anthropic.com/en/docs/claude-code) and authenticate per its docs. |
|
|
213
213
|
| `cursor` | Install [Cursor's agent CLI](https://cursor.com/cli) (`cursor-agent`) and authenticate per Cursor's docs. |
|
|
214
|
-
| `pi` | Install [Pi](https://github.com/earendil-works/pi/tree/main/packages/coding-agent) with `npm install -g @earendil-works/pi-coding-agent` (0.84.0 or newer) and authenticate per its docs;
|
|
214
|
+
| `pi` | Install [Pi](https://github.com/earendil-works/pi/tree/main/packages/coding-agent) with `npm install -g @earendil-works/pi-coding-agent` (0.84.0 or newer) and authenticate per its docs; Moonlet can run the install from Settings. |
|
|
215
215
|
| `opencode` | Install [opencode](https://opencode.ai/) and authenticate per its docs. |
|
|
216
216
|
| `grok` | Install [Grok Build](https://docs.x.ai/build/overview) and authenticate with `grok login` or `XAI_API_KEY`. |
|
|
217
217
|
| `hermes-agent` | Install [Hermes Agent](https://hermes-agent.nousresearch.com/docs/getting-started/installation), configure credentials with `hermes model`, then verify ACP with `hermes acp --check`. |
|
|
218
218
|
|
|
219
|
-
|
|
219
|
+
Moonlet indexes the documented native skill roots for Codex, Claude Code, Pi,
|
|
220
220
|
Cursor, OpenCode, omp, Grok Build, and Hermes Agent. It includes user roots,
|
|
221
221
|
project roots, and compatibility roots such as `.agents/skills`. These skills
|
|
222
222
|
appear in the selected provider's `/` command menu. The Skills page and
|
|
223
|
-
`bb skill list` show native skills for Claude Code, Codex, and Cursor.
|
|
223
|
+
`bb skill list` show native skills for Claude Code, Codex, and Cursor. Moonlet also
|
|
224
224
|
reads configured Pi, omp, Grok, and Hermes skill directories, plus enabled
|
|
225
225
|
provider plugin skills.
|
|
226
226
|
|
|
227
|
-
|
|
227
|
+
Moonlet reads Pi's global `~/.pi/agent` files and each workspace's `.pi` files.
|
|
228
228
|
This includes settings, credentials, models, packages, extensions, skills,
|
|
229
229
|
prompts, themes, and context files. Pi extensions can add models and tools.
|
|
230
|
-
|
|
231
|
-
the workspace. An unresolved `ask` decision stays untrusted because
|
|
230
|
+
Moonlet loads project resources only after Pi's saved or global trust policy approves
|
|
231
|
+
the workspace. An unresolved `ask` decision stays untrusted because Moonlet has no Pi
|
|
232
232
|
trust prompt.
|
|
233
233
|
You can still use the Pi CLI and `/login` to create this configuration.
|
|
234
234
|
|
|
@@ -240,8 +240,8 @@ Custom ACP agents are configured through the ACP providers plugin's
|
|
|
240
240
|
`user` paths resolve from the target host home directory. Its `project` paths
|
|
241
241
|
resolve from the selected workspace.
|
|
242
242
|
Top-level `sharedSkillRoots` uses the same `user` and `project` path format.
|
|
243
|
-
|
|
244
|
-
Pi, and ACP threads. This permits one physical skill collection for
|
|
243
|
+
Moonlet lists these sources as read-only skills. Moonlet injects them into Codex, Claude,
|
|
244
|
+
Pi, and ACP threads. This permits one physical skill collection for Moonlet and a
|
|
245
245
|
standalone provider CLI.
|
|
246
246
|
|
|
247
247
|
## Configuration
|
|
@@ -255,13 +255,13 @@ npx -y -p @halcyonlabs/app bb-app config list
|
|
|
255
255
|
npx -y -p @halcyonlabs/app bb-app config refresh
|
|
256
256
|
```
|
|
257
257
|
|
|
258
|
-
For remote access, use
|
|
258
|
+
For remote access, use Moonlet Connect or publish the default loopback listener with
|
|
259
259
|
Tailscale Serve. Direct tailnet or LAN access to port `38886` requires the
|
|
260
260
|
explicit, security-sensitive `--server-bind-host 0.0.0.0` compatibility option;
|
|
261
261
|
see the multiple-devices guide.
|
|
262
262
|
|
|
263
263
|
Use `bb-app client ssh-target` to configure local editor opens for remote
|
|
264
|
-
|
|
264
|
+
Moonlet servers under `~/.bb/client.json`. The target is the value that works after
|
|
265
265
|
`ssh`, such as `devbox` or `user@devbox`:
|
|
266
266
|
|
|
267
267
|
```bash
|
|
@@ -277,8 +277,8 @@ npx -y -p @halcyonlabs/app bb-app env list
|
|
|
277
277
|
npx -y -p @halcyonlabs/app bb-app env unset OPENAI_API_KEY
|
|
278
278
|
```
|
|
279
279
|
|
|
280
|
-
`env list` redacts all values. Config and env writes ask a running local
|
|
281
|
-
server to reload; if
|
|
280
|
+
`env list` redacts all values. Config and env writes ask a running local Moonlet
|
|
281
|
+
server to reload; if Moonlet is stopped, the values apply on the next start.
|
|
282
282
|
|
|
283
283
|
For all config keys, precedence, startup flags, and source-development `.env`
|
|
284
284
|
behavior, see the
|
|
@@ -289,5 +289,5 @@ behavior, see the
|
|
|
289
289
|
- [Main README](https://github.com/get-bb/bb#readme)
|
|
290
290
|
- [Platform support](https://github.com/get-bb/bb/blob/main/docs/platform-support.md)
|
|
291
291
|
- [Configuration](https://github.com/get-bb/bb/blob/main/docs/configuration.md)
|
|
292
|
-
- [Using
|
|
292
|
+
- [Using Moonlet on multiple devices](https://github.com/get-bb/bb/blob/main/docs/multiple-devices.md)
|
|
293
293
|
- [Worktree setup and teardown scripts](https://github.com/get-bb/bb/blob/main/docs/worktrees.md)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Ar as t,Kr as n,Or as r,mi as i,ni as a}from"./boot-vendor-BBLG7GwQ.js";import{Bo as o,Ea as s,Kp as c,Po as l,Qm as u,Ui as d,Vi as f,do as p,em as m,fo as h,go as g,ho as _,m as v,md as y,nh as b,po as x,qi as S,vi as C}from"./index-B_0TBqOi.js";import{n as w}from"./index.browser-CVgpGTCr.js";import{t as T}from"./OptionPicker-DhStUln1.js";import{V as E}from"./resource-list-DoUEf5wT.js";import{n as D,r as O}from"./machine-server-access-Dcj-Ghdj.js";var k=r(),A=e(i(),1),j=e(a(),1);function M(e){try{return new URL(e)}catch{return null}}function N(){let e=l(),t=v(),n=e.data?.generalSettings,r=e.data?.serverAccess,i=n?.machineServerUrl??``,[a,s]=(0,A.useState)(null),[c,u]=(0,A.useState)(null),d=!n,f=r?.defaultProviderId??`direct`,[p,m]=(0,A.useState)(null);(0,A.useEffect)(()=>{p===f&&m(null)},[f,p]);let h=p??f;return{access:r,disabled:d,draft:a,error:c,effective:r?.providers.find(e=>e.id===h),configurationMessage:D(r,h),saving:t.isPending,selected:h,value:i,editDraft:e=>{s(e),u(null)},selectProvider:e=>{!n||e===h||(m(e),t.mutate({defaultMachineAccess:e},{onError:()=>m(null)}))},commitUrl:async()=>{if(!n||a===null)return;let e=a.trim();if(e){let t=M(e);if(t===null||![`http:`,`https:`].includes(t.protocol)||t.username||t.password){u(`Enter a valid HTTP or HTTPS URL without credentials`);return}if(C(e)){u(`Other machines cannot reach localhost. Use a domain or shared-network address.`);return}}try{await t.mutateAsync({machineServerUrl:e||null})}catch(e){u(o({error:e,fallbackMessage:`Couldn't save the address.`}));return}s(null),u(null)}}}function P(e){let t=(0,k.c)(7),{children:n,title:r}=e,i=r===void 0?`Machine access`:r,a=N(),o;t[0]!==n||t[1]!==a?(o=n?.(a.selected===`direct`?null:a.effective?.pluginId??null),t[0]=n,t[1]=a,t[2]=o):o=t[2];let s;return t[3]!==a||t[4]!==o||t[5]!==i?(s=(0,j.jsx)(F,{machineAccess:a,title:i,children:o}),t[3]=a,t[4]=o,t[5]=i,t[6]=s):s=t[6],s}function F(e){let t=(0,k.c)(12),{machineAccess:n,children:r,title:i}=e,a=i===void 0?`Machine access`:i,o;t[0]===a?o=t[1]:(o=(0,j.jsx)(`h2`,{className:`text-sm font-semibold`,children:a}),t[0]=a,t[1]=o);let s;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,j.jsx)(`p`,{className:`mt-1 text-xs text-subtle-foreground`,children:`Choose how your devices reach this Moonlet server.`}),t[2]=s):s=t[2];let c;t[3]===o?c=t[4]:(c=(0,j.jsxs)(`div`,{children:[o,s]}),t[3]=o,t[4]=c);let l;t[5]!==r||t[6]!==n?(l=(0,j.jsx)(`div`,{className:`overflow-hidden rounded-lg border border-border bg-card`,children:(0,j.jsx)(`div`,{className:`px-4 py-3`,children:n.access===void 0?(0,j.jsxs)(`p`,{role:`status`,className:`flex h-8 items-center gap-2 text-xs text-subtle-foreground`,children:[(0,j.jsx)(u,{name:`Spinner`,className:`size-3.5 animate-spin`}),`Loading connection settings…`]}):(0,j.jsxs)(j.Fragment,{children:[n.selected!==`direct`&&n.effective?(0,j.jsx)(V,{machineAccess:n,methodPicker:(0,j.jsx)(R,{machineAccess:n,align:`start`})}):(0,j.jsxs)(`div`,{className:`space-y-3`,children:[(0,j.jsx)(`div`,{className:`flex`,children:(0,j.jsx)(R,{machineAccess:n,align:`start`})}),(0,j.jsx)(B,{machineAccess:n})]}),r]})})}),t[5]=r,t[6]=n,t[7]=l):l=t[7];let d;return t[8]!==c||t[9]!==l||t[10]!==a?(d=(0,j.jsxs)(`section`,{"aria-label":a,className:`space-y-3`,children:[c,l]}),t[8]=c,t[9]=l,t[10]=a,t[11]=d):d=t[11],d}function I(e){let t=(0,k.c)(3),{onNavigate:n}=e,r=N(),i;return t[0]!==r||t[1]!==n?(i=(0,j.jsx)(L,{machineAccess:r,onNavigate:n}),t[0]=r,t[1]=n,t[2]=i):i=t[2],i}function L(e){let t=(0,k.c)(9),{machineAccess:n,onNavigate:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,j.jsx)(`span`,{className:`text-sm font-normal text-foreground`,children:`Connection method`}),t[0]=i):i=t[0];let a;t[1]===n?a=t[2]:(a=(0,j.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[i,(0,j.jsx)(R,{machineAccess:n})]}),t[1]=n,t[2]=a);let o;t[3]!==n||t[4]!==r?(o=(0,j.jsx)(B,{machineAccess:n,onNavigate:r}),t[3]=n,t[4]=r,t[5]=o):o=t[5];let s;return t[6]!==a||t[7]!==o?(s=(0,j.jsxs)(`div`,{className:`space-y-3`,children:[a,o]}),t[6]=a,t[7]=o,t[8]=s):s=t[8],s}function R(e){let t=(0,k.c)(15),{machineAccess:n,align:r}=e,i=r===void 0?`end`:r,{access:a,disabled:o,selected:s}=n,c;t[0]!==a||t[1]!==n.effective?(c=a&&!n.effective?{label:`Unavailable method`}:void 0,t[0]=a,t[1]=n.effective,t[2]=c):c=t[2];let l=i===`start`?`-ml-1`:void 0,u;t[3]===a?.providers?u=t[4]:(u=a?.providers??[],t[3]=a?.providers,t[4]=u);let d;t[5]===u?d=t[6]:(d=u.map(z),t[5]=u,t[6]=d);let f;return t[7]!==i||t[8]!==o||t[9]!==n.selectProvider||t[10]!==s||t[11]!==c||t[12]!==l||t[13]!==d?(f=(0,j.jsx)(T,{modal:!1,label:`Connection method`,value:s,displayOverride:c,disabled:o,showChevronWhenDisabled:!0,align:i,className:l,options:d,onChange:n.selectProvider}),t[7]=i,t[8]=o,t[9]=n.selectProvider,t[10]=s,t[11]=c,t[12]=l,t[13]=d,t[14]=f):f=t[14],f}function z(e){return{value:e.id,label:e.displayName,description:e.description}}function B(e){let t=(0,k.c)(21),{machineAccess:n,onNavigate:r}=e,{access:i,disabled:a,draft:o,effective:s,error:c,saving:l,selected:u,value:d}=n,f;t[0]!==s||t[1]!==n||t[2]!==r||t[3]!==u?(f=u!==`direct`&&s!==void 0&&(0,j.jsx)(V,{machineAccess:n,onNavigate:r}),t[0]=s,t[1]=n,t[2]=r,t[3]=u,t[4]=f):f=t[4];let p;t[5]!==s||t[6]!==u?(p=u!==`direct`&&s===void 0&&(0,j.jsx)(`p`,{className:`text-xs text-subtle-foreground`,children:`This connection method is not installed. Choose another method above.`}),t[5]=s,t[6]=u,t[7]=p):p=t[7];let m;t[8]!==i?.effectiveUrl||t[9]!==a||t[10]!==o||t[11]!==c||t[12]!==n||t[13]!==l||t[14]!==u||t[15]!==d?(m=u===`direct`&&(0,j.jsxs)(E,{label:`Server address`,description:`Use your own domain or an address on a shared network. Your devices must be able to reach this address; localhost won’t work.`,controlPlacement:`below`,children:[(0,j.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,j.jsx)(S,{className:`min-w-0 flex-1 basis-48`,"aria-label":`Server address`,"aria-invalid":c!==null,value:o??d,placeholder:i?.effectiveUrl??`https://moonlet.example.com`,disabled:a,onChange:e=>n.editDraft(e.target.value),onKeyDown:e=>{e.key===`Enter`&&n.commitUrl()}}),(0,j.jsx)(b,{variant:`outline`,className:`h-9 max-md:pointer-coarse:h-10`,disabled:a||o===null||o.trim()===d,onClick:()=>void n.commitUrl(),children:l?`Saving…`:`Save`})]}),c!==null&&(0,j.jsx)(`p`,{role:`alert`,className:`mt-2 text-xs text-destructive-text`,children:c})]}),t[8]=i?.effectiveUrl,t[9]=a,t[10]=o,t[11]=c,t[12]=n,t[13]=l,t[14]=u,t[15]=d,t[16]=m):m=t[16];let h;return t[17]!==f||t[18]!==p||t[19]!==m?(h=(0,j.jsxs)(j.Fragment,{children:[f,p,m]}),t[17]=f,t[18]=p,t[19]=m,t[20]=h):h=t[20],h}function V(e){let n=(0,k.c)(22),{machineAccess:r,onNavigate:i,methodPicker:a}=e,{effective:o,configurationMessage:s}=r;if(!o)return null;let l=s===null,d=o.availability?.status===`setup-required`&&o.pluginId!==null,f=d?`flex flex-col items-start gap-2`:`flex min-h-7 items-center justify-between gap-3`,p;n[0]!==s||n[1]!==o.description||n[2]!==d?(p=d&&(0,j.jsxs)(`p`,{className:`max-w-xl text-xs text-subtle-foreground`,children:[o.description,` `,s]}),n[0]=s,n[1]=o.description,n[2]=d,n[3]=p):p=n[3];let m;n[4]!==o.displayName||n[5]!==o.pluginId||n[6]!==i||n[7]!==d?(m=o.pluginId!==null&&(0,j.jsx)(b,{variant:d?`default`:`link`,size:`sm`,className:d?`shrink-0`:`h-7 shrink-0 px-3 font-normal text-subtle-foreground/75 no-underline hover:text-subtle-foreground hover:no-underline`,asChild:!0,children:(0,j.jsx)(t,{onClick:i,to:c({pluginId:o.pluginId}),children:d?(0,j.jsxs)(j.Fragment,{children:[`Set up `,o.displayName,(0,j.jsx)(u,{name:`ArrowRight`})]}):`Manage`})}),n[4]=o.displayName,n[5]=o.pluginId,n[6]=i,n[7]=d,n[8]=m):m=n[8];let h;n[9]!==a||n[10]!==f||n[11]!==p||n[12]!==m?(h=(0,j.jsxs)(`div`,{className:f,children:[a,p,m]}),n[9]=a,n[10]=f,n[11]=p,n[12]=m,n[13]=h):h=n[13];let g;n[14]!==s||n[15]!==o.availability||n[16]!==l||n[17]!==d?(g=!d&&(0,j.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-3 gap-y-1 text-xs`,children:[(0,j.jsxs)(`p`,{className:`inline-flex shrink-0 items-center gap-1.5 font-medium`,children:[l?(0,j.jsx)(`span`,{className:`size-1.5 shrink-0 rounded-full bg-success`,"aria-hidden":`true`}):null,l?`Ready`:`Unavailable`]}),(0,j.jsx)(`p`,{className:`min-w-0 break-words text-subtle-foreground [overflow-wrap:anywhere]`,children:s??(o.availability?.status===`available`?o.availability.serverUrl:null)??`Ready to connect devices.`})]}),n[14]=s,n[15]=o.availability,n[16]=l,n[17]=d,n[18]=g):g=n[18];let _;return n[19]!==h||n[20]!==g?(_=(0,j.jsxs)(`div`,{className:`space-y-0`,children:[h,g]}),n[19]=h,n[20]=g,n[21]=_):_=n[21],_}var H=`manual`;function U(e){let t=(0,k.c)(12),{open:n,onOpenChange:r}=e,i=f(),a;t[0]!==i||t[1]!==r?(a=e=>{e||i.refetch(),r(e)},t[0]=i,t[1]=r,t[2]=a):a=t[2];let o=a,s;t[3]!==o||t[4]!==n?(s=n&&(0,j.jsx)(W,{onOpenChange:o}),t[3]=o,t[4]=n,t[5]=s):s=t[5];let c;t[6]===s?c=t[7]:(c=(0,j.jsx)(h,{className:`max-h-[calc(100dvh-2rem)] overflow-y-auto`,children:s}),t[6]=s,t[7]=c);let l;return t[8]!==o||t[9]!==n||t[10]!==c?(l=(0,j.jsx)(p,{open:n,onOpenChange:o,modal:!1,children:c}),t[8]=o,t[9]=n,t[10]=c,t[11]=l):l=t[11],l}function W(e){let t=(0,k.c)(13),{onOpenChange:n}=e,r=l(),i=f();if(!O(r.data?.serverAccess)){let e;t[0]===r?e=t[1]:(e=r.isPending?{status:`checking`}:r.isError?{status:`failed`,onRetry:()=>void r.refetch()}:{status:`blocked`},t[0]=r,t[1]=e);let i;t[2]===n?i=t[3]:(i=(0,j.jsx)(I,{onNavigate:()=>n(!1)}),t[2]=n,t[3]=i);let a;return t[4]!==e||t[5]!==i?(a=(0,j.jsx)(K,{state:e,children:i}),t[4]=e,t[5]=i,t[6]=a):a=t[6],a}let a=r.data?.primaryHostId??null,o;t[7]!==i.data||t[8]!==a?(o=i.data?.find(e=>e.id===a)?.name??null,t[7]=i.data,t[8]=a,t[9]=o):o=t[9];let s=o,c;return t[10]!==n||t[11]!==s?(c=(0,j.jsx)(q,{serverMachineName:s,onOpenChange:n}),t[10]=n,t[11]=s,t[12]=c):c=t[12],c}function G(e){return e===null?`The new machine will connect to your Moonlet server. Keep the server machine on so the new machine can keep working.`:`The new machine will connect to the Moonlet server on ${e}. Keep that computer on so the new machine can keep working.`}function K(e){let t=(0,k.c)(7),{state:n,children:r}=e;if(n.status===`checking`){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(g,{className:`sr-only`,children:`Add a machine`}),(0,j.jsx)(`p`,{role:`status`,className:`text-sm text-subtle-foreground`,children:`Checking machine access…`})]}),t[0]=e):e=t[0],e}if(n.status===`failed`){let e;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,j.jsxs)(_,{children:[(0,j.jsx)(g,{children:`Add a machine`}),(0,j.jsx)(x,{className:`text-destructive-text`,children:`Couldn’t check whether machines can reach this server.`})]}),t[1]=e):e=t[1];let r;return t[2]===n.onRetry?r=t[3]:(r=(0,j.jsxs)(j.Fragment,{children:[e,(0,j.jsx)(`div`,{className:`flex justify-end`,children:(0,j.jsx)(b,{variant:`outline`,size:`sm`,onClick:n.onRetry,children:`Try again`})})]}),t[2]=n.onRetry,t[3]=r),r}let i;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,j.jsxs)(_,{children:[(0,j.jsx)(g,{children:`Set up machine access`}),(0,j.jsx)(x,{children:`A new machine has to reach this server over the network. Choose the address it should use.`})]}),t[4]=i):i=t[4];let a;return t[5]===r?a=t[6]:(a=(0,j.jsxs)(j.Fragment,{children:[i,r]}),t[5]=r,t[6]=a),a}function q({serverMachineName:e,onOpenChange:t}){let r=(0,A.useRef)(null),i=(0,A.useRef)(null),a=(0,A.useRef)(new Set),s=(0,A.useRef)(0),[c,l]=(0,A.useState)(null),[u,d]=(0,A.useState)(null);(0,A.useEffect)(()=>()=>{s.current+=1,r.current?.abort(),i.current=null;for(let e of a.current)y.hosts.delete({hostId:e}).catch(()=>void 0);a.current.clear()},[]);let f=n({meta:{showErrorToast:!1},mutationFn:async e=>{let t=s.current;if(e.replaceLaunch){r.current?.abort(),r.current=null;let e=[...a.current];a.current.clear(),await Promise.all(e.map(e=>y.hosts.delete({hostId:e}))),i.current=null}l(null);let n=new AbortController;r.current=n,i.current??=w();try{let e=await y.hosts.experimental_create({key:i.current,machineProviderId:H,inputs:null,wait:!1,signal:n.signal});if(a.current.add(e.id),t!==s.current)throw a.current.delete(e.id),await y.hosts.delete({hostId:e.id}),Error(`Machine setup closed`);let r=null;for(;e.lifecycle.phase===`creating`;){n.signal.throwIfAborted();let t=await y.hosts.experimental_getEnrollmentCommand({hostId:e.id,signal:n.signal});if(t!==null)r=t,l({value:t.command,windowsValue:t.windowsCommand,expiresAt:t.expiresAt,unavailable:!1});else if(r!==null){let e=r;l(t=>t?.unavailable?t:{value:e.command,windowsValue:e.windowsCommand,expiresAt:e.expiresAt,unavailable:!0})}await new Promise(e=>setTimeout(e,1e3)),n.signal.throwIfAborted(),e=await y.hosts.get({hostId:e.id,signal:n.signal})}if(i.current=null,a.current.delete(e.id),e.lifecycle.phase!==`active`)throw Error(e.lifecycle.message??`Machine setup cancelled`);return e}finally{r.current===n&&(r.current=null)}},onSuccess:e=>{i.current=null,d(e)}}),p=f.mutate;return(0,A.useEffect)(()=>{p({replaceLaunch:!1})},[p]),(0,j.jsx)(J,{command:c,connectedHost:u,serverMachineName:e,errorMessage:f.isError?o({error:f.error,fallbackMessage:`Couldn't prepare an enrollment command.`}):null,onRetry:()=>f.mutate({replaceLaunch:!1}),onRegenerate:()=>f.mutate({replaceLaunch:!0}),onOpenMachine:()=>t(!1)})}function J(e){let n=(0,k.c)(24),{command:r,connectedHost:i,serverMachineName:a,errorMessage:o,onRetry:s,onRegenerate:c,onOpenMachine:l}=e,f;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,j.jsx)(g,{children:`Add a machine`}),n[0]=f):f=n[0];let p=o===null?void 0:`text-destructive-text`,h=o??`Run this command on the machine you want to add. It installs Moonlet and keeps the machine connected to this server.`,v;n[1]!==p||n[2]!==h?(v=(0,j.jsxs)(_,{children:[f,(0,j.jsx)(x,{className:p,children:h})]}),n[1]=p,n[2]=h,n[3]=v):v=n[3];let y;n[4]!==o||n[5]!==s?(y=o===null?null:(0,j.jsx)(`div`,{className:`flex justify-end`,children:(0,j.jsx)(b,{variant:`outline`,size:`sm`,onClick:s,children:`Try again`})}),n[4]=o,n[5]=s,n[6]=y):y=n[6];let S;n[7]!==r||n[8]!==c?(S=r===null?null:(0,j.jsx)(Z,{command:r.value,windowsCommand:r.windowsValue,expiresAt:r.expiresAt,unavailable:r.unavailable,onRegenerate:c},r.value),n[7]=r,n[8]=c,n[9]=S):S=n[9];let C;n[10]!==r||n[11]!==i||n[12]!==o||n[13]!==l?(C=o===null?(0,j.jsx)(`div`,{className:`flex items-center gap-2.5 rounded-md bg-muted/40 px-3 py-2.5`,children:i===null?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(u,{name:`Spinner`,className:`size-4 shrink-0 animate-spin text-muted-foreground`}),(0,j.jsx)(`span`,{role:`status`,className:`text-sm text-muted-foreground`,children:r===null?`Preparing an enrollment command…`:`Waiting for the machine to connect…`})]}):(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(d,{connected:!0}),(0,j.jsxs)(`span`,{role:`status`,className:`min-w-0 flex-1 truncate text-sm text-foreground`,children:[i.name,` connected`]}),(0,j.jsx)(b,{asChild:!0,size:`sm`,variant:`ghost`,className:`h-7 shrink-0 px-2 text-xs`,children:(0,j.jsxs)(t,{to:m(i.id),onClick:l,children:[`Open machine`,(0,j.jsx)(u,{name:`ArrowRight`})]})})]})}):null,n[10]=r,n[11]=i,n[12]=o,n[13]=l,n[14]=C):C=n[14];let w;n[15]!==o||n[16]!==a?(w=o===null?(0,j.jsx)(`p`,{className:`text-xs text-subtle-foreground`,children:G(a)}):null,n[15]=o,n[16]=a,n[17]=w):w=n[17];let T;return n[18]!==v||n[19]!==y||n[20]!==S||n[21]!==C||n[22]!==w?(T=(0,j.jsxs)(j.Fragment,{children:[v,y,S,C,w]}),n[18]=v,n[19]=y,n[20]=S,n[21]=C,n[22]=w,n[23]=T):T=n[23],T}function Y(e){let t=Math.max(0,Math.floor(e/1e3));return`${Math.floor(t/60)}:${(t%60).toString().padStart(2,`0`)}`}var X=[{id:`posix`,label:`macOS or Linux`},{id:`windows`,label:`Windows`}];function Z(e){let t=(0,k.c)(34),{command:n,windowsCommand:r,expiresAt:i,unavailable:a,onRegenerate:o}=e,c=a===void 0?!1:a,[l,u]=(0,A.useState)(`posix`),d=l===`windows`?r:n,f;t[0]===d?f=t[1]:(f={text:d},t[0]=d,t[1]=f);let{copied:p,copy:m}=s(f),h;t[2]===i?h=t[3]:(h=()=>i-Date.now(),t[2]=i,t[3]=h);let[g,_]=(0,A.useState)(h),v,y;t[4]===i?(v=t[5],y=t[6]):(v=()=>{let e=setInterval(()=>_(i-Date.now()),1e3);return()=>clearInterval(e)},y=[i],t[4]=i,t[5]=v,t[6]=y),(0,A.useEffect)(v,y);let x=g<=0,S;t[7]===l?S=t[8]:(S=X.map(e=>(0,j.jsx)(b,{type:`button`,size:`sm`,variant:l===e.id?`secondary`:`ghost`,"aria-pressed":l===e.id,className:`h-6 px-2 text-xs`,onClick:()=>u(e.id),children:e.label},e.id)),t[7]=l,t[8]=S);let C;t[9]===l?C=t[10]:(C=l===`windows`?(0,j.jsx)(`span`,{className:`ml-auto text-xs text-subtle-foreground`,children:`Run in PowerShell`}):null,t[9]=l,t[10]=C);let w;t[11]!==S||t[12]!==C?(w=(0,j.jsxs)(`div`,{role:`group`,"aria-label":`Machine operating system`,className:`flex items-center gap-1 border-b border-border px-2 py-1.5`,children:[S,C]}),t[11]=S,t[12]=C,t[13]=w):w=t[13];let T;t[14]===d?T=t[15]:(T=(0,j.jsx)(`pre`,{className:`overflow-x-auto whitespace-pre-wrap break-all p-3 font-mono text-xs text-foreground`,children:d}),t[14]=d,t[15]=T);let E;t[16]!==x||t[17]!==o||t[18]!==g||t[19]!==c?(E=c?(0,j.jsx)(`span`,{role:`status`,className:`text-xs text-subtle-foreground`,children:`Command used`}):x?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`span`,{role:`status`,className:`text-xs text-subtle-foreground`,children:`Command expired`}),(0,j.jsx)(b,{type:`button`,size:`sm`,variant:`ghost`,className:`h-7 px-2 text-xs`,onClick:o,children:`Generate a new command`})]}):(0,j.jsxs)(`span`,{role:`status`,className:`text-xs tabular-nums text-subtle-foreground`,children:[`Command expires in `,Y(g)]}),t[16]=x,t[17]=o,t[18]=g,t[19]=c,t[20]=E):E=t[20];let D=x||c,O;t[21]===m?O=t[22]:(O=()=>void m(),t[21]=m,t[22]=O);let M=p?`Copied`:`Copy`,N;t[23]!==D||t[24]!==O||t[25]!==M?(N=(0,j.jsx)(b,{type:`button`,size:`sm`,variant:`outline`,className:`ml-auto h-7 px-2.5 text-xs`,disabled:D,onClick:O,children:M}),t[23]=D,t[24]=O,t[25]=M,t[26]=N):N=t[26];let P;t[27]!==E||t[28]!==N?(P=(0,j.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 border-t border-border px-3 py-2`,children:[E,N]}),t[27]=E,t[28]=N,t[29]=P):P=t[29];let F;return t[30]!==P||t[31]!==w||t[32]!==T?(F=(0,j.jsxs)(`div`,{className:`overflow-hidden rounded-md border border-border bg-muted/30`,children:[w,T,P]}),t[30]=P,t[31]=w,t[32]=T,t[33]=F):F=t[33],F}export{Z as n,P as r,U as t};
|
|
Binary file
|
|
Binary file
|
package/app/dist/assets/{AppCommandShortcutHint-XqWnnhwm.js → AppCommandShortcutHint-BHgq3YeS.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Or as t,ni as n}from"./boot-vendor-BBLG7GwQ.js";import{no as r}from"./index-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Or as t,ni as n}from"./boot-vendor-BBLG7GwQ.js";import{no as r}from"./index-B_0TBqOi.js";import{t as i}from"./shortcut-pill-DATfy56m.js";var a=t(),o=e(n(),1);function s(e){let t=(0,a.c)(3),{shortcut:n,className:s}=e;if(!r()||!n)return null;let c;return t[0]!==s||t[1]!==n?(c=(0,o.jsx)(i,{shortcut:n,className:s}),t[0]=s,t[1]=n,t[2]=c):c=t[2],c}export{s as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Or as t,mi as n}from"./boot-vendor-BBLG7GwQ.js";import{Rn as r,Ym as i}from"./index-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Or as t,mi as n}from"./boot-vendor-BBLG7GwQ.js";import{Rn as r,Ym as i}from"./index-B_0TBqOi.js";import{t as a}from"./useLocalOpenTargets-G_SbnjQv.js";import{t as o}from"./useResolvedLiveFileTarget-BaB_Ekxe.js";var s=t(),c=e(n(),1);function l(e){let t=(0,s.c)(20),{intent:n,onSettled:l}=e,u=(0,c.useRef)(!1),d;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(d={enabled:!0},t[0]=d):d=t[0];let f=o(n.target,d),p=f.status===`available`,m;t[1]!==f.openContext||t[2]!==f.status?(m=f.status===`available`?{openContext:f.openContext}:{},t[1]=f.openContext,t[2]=f.status,t[3]=m):m=t[3];let h;t[4]!==p||t[5]!==m?(h={enabled:p,...m},t[4]=p,t[5]=m,t[6]=h):h=t[6];let{isLoading:g,openPathInPreferredFileTarget:_}=a(h),v;t[7]!==g||t[8]!==n.location||t[9]!==l||t[10]!==_||t[11]!==f.absolutePath||t[12]!==f.status?(v=()=>{if(u.current||f.status===`loading`||g)return;if(u.current=!0,l(),f.status===`unavailable`){i.error(`Failed to open file externally`,{description:`The file target is not available on its declared host.`});return}let e=r(n.location);_({columnNumber:e.columnNumber,lineNumber:e.lineNumber,path:f.absolutePath})},t[7]=g,t[8]=n.location,t[9]=l,t[10]=_,t[11]=f.absolutePath,t[12]=f.status,t[13]=v):v=t[13];let y;return t[14]!==g||t[15]!==n.location||t[16]!==l||t[17]!==_||t[18]!==f?(y=[n.location,g,_,l,f],t[14]=g,t[15]=n.location,t[16]=l,t[17]=_,t[18]=f,t[19]=y):y=t[19],(0,c.useEffect)(v,y),null}export{l as AppFileExternalNavigationDispatcher};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Or as t,mi as n,ni as r}from"./boot-vendor-BBLG7GwQ.js";import{Xf as i,Xm as a,ca as o,z as s}from"./index-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Or as t,mi as n,ni as r}from"./boot-vendor-BBLG7GwQ.js";import{Xf as i,Xm as a,ca as o,z as s}from"./index-B_0TBqOi.js";import{r as c,t as l}from"./dist-4WsJ8dK6.js";var u=t(),d=e(n(),1),f=e(r(),1),p={top:`calc(env(safe-area-inset-top) + var(--bb-app-chrome-row-height) + 16px)`},m=[`top`,`left`,`right`];function h(){let e=(0,u.c)(8),t=s(),n=i(),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=[],e[0]=r):r=e[0],(0,d.useEffect)(g,r);let a;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(a={zIndex:o.toast},e[1]=a):a=e[1];let c=n?`top-center`:`bottom-right`,h=n?p:void 0,_=n?p:void 0,v=n?m:void 0,y;return e[2]!==c||e[3]!==h||e[4]!==_||e[5]!==v||e[6]!==t?(y=(0,f.jsx)(l,{theme:t,style:a,position:c,offset:h,mobileOffset:_,swipeDirections:v}),e[2]=c,e[3]=h,e[4]=_,e[5]=v,e[6]=t,e[7]=y):y=e[7],y}function g(){a(c)}export{h as AppToasterView};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Or as t,mi as n,ni as r}from"./boot-vendor-BBLG7GwQ.js";import{I as i,oh as a,z as ee}from"./index-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Or as t,mi as n,ni as r}from"./boot-vendor-BBLG7GwQ.js";import{I as i,oh as a,z as ee}from"./index-B_0TBqOi.js";import{t as o}from"./code-loading-skeletons-D66C2XWf.js";import{n as s,t as c}from"./pierre-strict-mode-recovery-BhJkQvXP.js";import{t as l}from"./FileDiff-BLle8hNc.js";import{a as u,n as te,r as d,t as f}from"./git-diff-patch-text-Cs-divFw.js";import{t as p}from"./PierreLineSelectionActions-o8f-eWuJ.js";import{i as m}from"./pierre-worker-pool-gate-DzlPWuU3.js";var h=t(),g=e(n(),1),_=e(r(),1),v={"--diffs-font-size":`12px`,"--diffs-line-height":`18px`},y=30;function b(e){let t=(0,h.c)(47),{file:n,patchText:r,fullFileContents:b,view:x,overflow:S,showLineNumbers:C,className:w,onSelectionAddToChat:T}=e,E=b?.old.path,D=b?.old.content,O=b?.new.path,k=b?.new.content,A;bb0:{if(E===void 0||D===void 0||O===void 0||k===void 0){A=n;break bb0}let e;t[0]!==n||t[1]!==k||t[2]!==O||t[3]!==D||t[4]!==E||t[5]!==r?(e=u({fileDiff:n,oldFile:{name:E,contents:D},newFile:{name:O,contents:k},patchText:r??d(n)}),t[0]=n,t[1]=k,t[2]=O,t[3]=D,t[4]=E,t[5]=r,t[6]=e):e=t[6],A=e}let j=A,M=j!==n&&j.isPartial===!1?y:void 0,N=(0,g.useRef)(null),P=i(),F=ee(),I;t[7]!==j||t[8]!==x?(I=e=>te({displayStyle:x,fileDiff:j,range:e}),t[7]=j,t[8]=x,t[9]=I):I=t[9];let L=I,R;t[10]===j?R=t[11]:(R=e=>{let{containerElement:t}=e;return f({containerElement:t,fileDiff:j})},t[10]=j,t[11]=R);let z=R,B=T!==void 0,V;t[12]!==z||t[13]!==L||t[14]!==T||t[15]!==B?(V={buildFallbackSelectionText:z,buildSelectionText:L,containerRef:N,enabled:B,onSelectionAddToChat:T},t[12]=z,t[13]=L,t[14]=T,t[15]=B,t[16]=V):V=t[16];let H=p(V),U=!C,W;t[17]===M?W=t[18]:(W=M===void 0?{}:{expansionLineCount:M},t[17]=M,t[18]=W);let G=T!==void 0,K=T!==void 0,q=T===void 0?`disabled`:`number`,J=T===void 0?void 0:H.onGutterUtilityClick,Y;t[19]!==P||t[20]!==H.onLineSelectionChange||t[21]!==H.onLineSelectionEnd||t[22]!==H.onLineSelectionStart||t[23]!==S||t[24]!==q||t[25]!==J||t[26]!==U||t[27]!==W||t[28]!==G||t[29]!==K||t[30]!==F||t[31]!==x?(Y={diffStyle:x,overflow:S,disableLineNumbers:U,disableFileHeader:!0,...W,themeType:F,theme:P,enableGutterUtility:G,enableLineSelection:K,lineHoverHighlight:q,onGutterUtilityClick:J,onLineSelectionChange:H.onLineSelectionChange,onLineSelectionEnd:H.onLineSelectionEnd,onLineSelectionStart:H.onLineSelectionStart},t[19]=P,t[20]=H.onLineSelectionChange,t[21]=H.onLineSelectionEnd,t[22]=H.onLineSelectionStart,t[23]=S,t[24]=q,t[25]=J,t[26]=U,t[27]=W,t[28]=G,t[29]=K,t[30]=F,t[31]=x,t[32]=Y):Y=t[32];let X=c(Y);if(!m()){let e;return t[33]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,_.jsx)(o,{}),t[33]=e):e=t[33],e}let Z;t[34]===w?Z=t[35]:(Z=a(`overflow-x-auto`,w),t[34]=w,t[35]=Z);let Q;t[36]!==H.selectedRange||t[37]!==X||t[38]!==j?(Q=(0,_.jsx)(`div`,{className:`w-full max-w-full`,style:v,children:(0,_.jsx)(s,{children:(0,_.jsx)(l,{fileDiff:j,options:X,selectedLines:H.selectedRange})})}),t[36]=H.selectedRange,t[37]=X,t[38]=j,t[39]=Q):Q=t[39];let $;return t[40]!==H.menu||t[41]!==H.onPointerDownCapture||t[42]!==H.onPointerMoveCapture||t[43]!==H.onPointerUpCapture||t[44]!==Z||t[45]!==Q?($=(0,_.jsxs)(`div`,{ref:N,className:Z,onPointerDownCapture:H.onPointerDownCapture,onPointerMoveCapture:H.onPointerMoveCapture,onPointerUpCapture:H.onPointerUpCapture,children:[Q,H.menu]}),t[40]=H.menu,t[41]=H.onPointerDownCapture,t[42]=H.onPointerMoveCapture,t[43]=H.onPointerUpCapture,t[44]=Z,t[45]=Q,t[46]=$):$=t[46],$}export{b as default};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/BbDiff-
|
|
2
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Ur as t,ni as n}from"./boot-vendor-BBLG7GwQ.js";import{np as r}from"./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/BbDiff-GK254uaZ.js","assets/rolldown-runtime-BM3Ffeng.js","assets/index-B_0TBqOi.js","assets/boot-vendor-BBLG7GwQ.js","assets/index-BY3ej0PM.css","assets/code-loading-skeletons-D66C2XWf.js","assets/PierreLineSelectionActions-o8f-eWuJ.js","assets/git-diff-patch-text-Cs-divFw.js","assets/dist-CXXcNKpg.js","assets/ccount-Ddbz1Ovh.js","assets/lib-B4H0r8OP.js","assets/space-separated-tokens-DGOpQRo8.js","assets/lib-D0BdwZRm.js","assets/zwitch-Pm92m0zx.js","assets/TimelineSelectionMenu-DUGdkfJf.js","assets/pierre-strict-mode-recovery-BhJkQvXP.js","assets/pierre-worker-pool-gate-DzlPWuU3.js","assets/FileDiff-BLle8hNc.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Ur as t,ni as n}from"./boot-vendor-BBLG7GwQ.js";import{np as r}from"./index-B_0TBqOi.js";import{t as i}from"./code-loading-skeletons-D66C2XWf.js";var a=e(n(),1),o=r({id:`bb-diff`,load:()=>t(()=>import(`./BbDiff-GK254uaZ.js`).then(e=>e.default),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17])),loading:()=>(0,a.jsx)(i,{}),tier:`intent`});export{o as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Or as t,mi as n,ni as r}from"./boot-vendor-BBLG7GwQ.js";import{I as i,nh as a,oh as o,z as s}from"./index-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Or as t,mi as n,ni as r}from"./boot-vendor-BBLG7GwQ.js";import{I as i,nh as a,oh as o,z as s}from"./index-B_0TBqOi.js";import{n as c}from"./code-loading-skeletons-D66C2XWf.js";import{i as l,n as ee,t as te}from"./pierre-strict-mode-recovery-BhJkQvXP.js";import{a as u}from"./dist-CXXcNKpg.js";import{t as ne}from"./File-D-Dyu8Un.js";import{i as d}from"./git-diff-patch-text-Cs-divFw.js";import{t as re}from"./PierreLineSelectionActions-o8f-eWuJ.js";import{i as ie,n as ae}from"./pierre-worker-pool-gate-DzlPWuU3.js";import{n as oe}from"./source-code-budget-DkjqujJR.js";var se=t(),f=e(n(),1),p=e(r(),1),m=18,h=16,ce={"--diffs-font-size":`12px`,"--diffs-line-height":`${m}px`,"--diffs-gap-block":`${h}px`},le={hunkLineCount:50,lineHeight:m,diffHeaderHeight:0,spacing:h};function g(e){return[e,...d(e)]}function ue(e){for(let t of g(e)){let e=t.querySelectorAll(`[data-bb-source-code-target-line]`);for(let t of e)t.removeAttribute(`data-bb-source-code-target-line`),t.removeAttribute(`data-selected-line`)}}function de(e,t){let n=g(e);for(let e of n){let n=e.querySelectorAll(`[data-line="${t}"]`);for(let e of n)if(e instanceof HTMLElement&&e.dataset.lineIndex!==void 0)return e}for(let e of n){let n=e.querySelectorAll(`[data-line="${t}"]`);for(let e of n)if(e instanceof HTMLElement)return e}return null}function _(e){return e.querySelector(`[data-bb-source-code-viewport]`)}function fe(e,t){let n=_(e);if(n===null)return;let r=n.getBoundingClientRect(),i=r.height/2,a=v(e);if(a===null){let e=h+(t-1)*m;n.scrollTop=Math.max(0,e-i);return}let{firstLineNumber:o,firstTop:s,lastLineNumber:c,lastBottom:l}=a;if(t>c){let e=l-r.top+(t-c-1)*m;n.scrollTop+=Math.max(0,e-i)}else if(t<o){let e=r.top-s+(o-t)*m;n.scrollTop=Math.max(0,n.scrollTop-e-i)}}function v(e){let t=null;for(let n of g(e))for(let e of n.querySelectorAll(`[data-line][data-line-index]`)){let n=Number(e.dataset.line);if(!Number.isFinite(n))continue;let r=e.getBoundingClientRect();if(t===null){t={firstLineNumber:n,firstTop:r.top,lastLineNumber:n,lastBottom:r.bottom};continue}n<t.firstLineNumber&&(t.firstLineNumber=n,t.firstTop=r.top),n>t.lastLineNumber&&(t.lastLineNumber=n,t.lastBottom=r.bottom)}return t}function pe(e,t){let n=_(e);if(n===null)return;let r=t.getBoundingClientRect(),i=n.getBoundingClientRect(),a=r.top+r.height/2,o=i.top+i.height/2;n.scrollTop+=a-o}function y(e,t){return e===t?String(e):`${e}-${t}`}function me({contents:e,path:t,range:n}){let r=Math.max(1,Math.min(n.start,n.end)),i=Math.max(r,Math.max(n.start,n.end)),a=e.split(/\r\n|\n|\r/).slice(r-1,i);if(a.length===0)return null;let o=a.join(`
|
|
2
2
|
`).trimEnd();return o.trim().length===0?null:`${t}:${y(r,i)}\n${o}`}function b(e){let t=(0,se.c)(74),{content:n,path:r,cacheKey:a,overflow:l,highlightedLines:u,className:d,scrollToHighlightedLines:m,onSelectionAddToChat:h}=e,g=m===void 0?!1:m,v=a??r,y;t[0]!==n||t[1]!==v||t[2]!==r?(y={name:r,contents:n,cacheKey:v},t[0]=n,t[1]=v,t[2]=r,t[3]=y):y=t[3];let b=y,x=s(),ye=i(),S=(0,f.useRef)(null),be=ie(),C=ae(),xe=(0,f.useRef)(null),[Se,Ce]=(0,f.useState)(null),[,w]=(0,f.useState)(0),T=v,E;t[4]===n?E=t[5]:(E=oe(n),t[4]=n,t[5]=E);let D=E,[we,Te]=(0,f.useState)(null),O;t[6]!==n||t[7]!==r?(O=e=>me({contents:n,path:r,range:e}),t[6]=n,t[7]=r,t[8]=O):O=t[8];let k=O,A=h!==void 0,j;t[9]!==k||t[10]!==h||t[11]!==A?(j={buildSelectionText:k,containerRef:S,enabled:A,onSelectionAddToChat:h},t[9]=k,t[10]=h,t[11]=A,t[12]=j):j=t[12];let M=re(j),N=h!==void 0,Ee=u!==null||h!==void 0,P=h===void 0?`disabled`:`number`,De=h===void 0?void 0:M.onGutterUtilityClick,F;t[13]!==ye||t[14]!==M.onLineSelectionChange||t[15]!==M.onLineSelectionEnd||t[16]!==M.onLineSelectionStart||t[17]!==l||t[18]!==x||t[19]!==De||t[20]!==N||t[21]!==Ee||t[22]!==P?(F={themeType:x,theme:ye,overflow:l,disableFileHeader:!0,enableGutterUtility:N,enableLineSelection:Ee,lineHoverHighlight:P,onGutterUtilityClick:De,onLineSelectionChange:M.onLineSelectionChange,onLineSelectionEnd:M.onLineSelectionEnd,onLineSelectionStart:M.onLineSelectionStart},t[13]=ye,t[14]=M.onLineSelectionChange,t[15]=M.onLineSelectionEnd,t[16]=M.onLineSelectionStart,t[17]=l,t[18]=x,t[19]=De,t[20]=N,t[21]=Ee,t[22]=P,t[23]=F):F=t[23];let Oe=te(F),ke;bb0:{if(M.selectedRange!==null){ke=M.selectedRange;break bb0}let e;t[24]===u?e=t[25]:(e=u===null?null:{start:u.start,end:u.end},t[24]=u,t[25]=e),ke=e}let I=ke,L=g?I?.start??null:null,R=D===null||we===T||L!==null&&L>D.renderedLineCount,Ae;bb1:{if(R||D===null){Ae=b;break bb1}let e=`${v}:head`,n;t[26]!==b||t[27]!==e||t[28]!==D.contents?(n={...b,cacheKey:e,contents:D.contents},t[26]=b,t[27]=e,t[28]=D.contents,t[29]=n):n=t[29],Ae=n}let z=Ae,B=R||D===null?v:`${v}:head`,je=(0,f.useRef)(null),V;t[30]===T?V=t[31]:(V=()=>{je.current=(S.current===null?null:_(S.current))?.scrollTop??null,Te(T)},t[30]=T,t[31]=V);let Me=V,H;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(H=()=>{let e=je.current;if(e===null)return;je.current=null;let t=S.current===null?null:_(S.current);if(t===null)return;t.scrollTop=e;let n=window.requestAnimationFrame(()=>{t.scrollTop=e});return()=>window.cancelAnimationFrame(n)},t[32]=H):H=t[32];let U;t[33]===B?U=t[34]:(U=[B],t[33]=B,t[34]=U),(0,f.useLayoutEffect)(H,U);let W;t[35]!==w||t[36]!==C?(W=()=>{if(!C){Ce(null);return}return xe.current=null,C.subscribeToStatChanges(e=>{Ce(e);let t=[e.managerState,e.workersFailed,e.busyWorkers,e.queuedTasks,e.activeTasks,e.fileCacheSize].join(`:`);xe.current!==t&&(xe.current=t,w(he))})},t[35]=w,t[36]=C,t[37]=W):W=t[37];let G;t[38]!==b.contents||t[39]!==b.name||t[40]!==C?(G=[b.contents,b.name,C],t[38]=b.contents,t[39]=b.name,t[40]=C,t[41]=G):G=t[41],(0,f.useEffect)(W,G);let K=C!==void 0&&Se?.managerState!==`initialized`&&Se?.workersFailed!==!0,Ne=C?.getFileResultCache(z)===void 0?`plain`:`highlighted`,q;t[42]===L?q=t[43]:(q=()=>{let e=S.current,t=null,n=0,r=function(){t=window.requestAnimationFrame(i)};function i(){let e=S.current;if(!e||(ue(e),L===null))return;let t=de(e,L);if(t){t.setAttribute(`data-bb-source-code-target-line`,``),t.setAttribute(`data-selected-line`,`single`),pe(e,t);return}fe(e,L),n+=1,n<ge&&r()}return i(),()=>{e&&ue(e),t!==null&&window.cancelAnimationFrame(t)}},t[42]=L,t[43]=q);let J;if(t[44]!==z.contents||t[45]!==z.name||t[46]!==K||t[47]!==L||t[48]!==Ne?(J=[z.contents,z.name,K,L,Ne],t[44]=z.contents,t[45]=z.name,t[46]=K,t[47]=L,t[48]=Ne,t[49]=J):J=t[49],(0,f.useEffect)(q,J),K||!be){let e;return t[50]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,p.jsx)(c,{}),t[50]=e):e=t[50],e}let Y;t[51]===d?Y=t[52]:(Y=o(`flex min-h-0 flex-1 flex-col`,d),t[51]=d,t[52]=Y);let Pe=L??void 0,Fe=Se?.workersFailed===!0,X;t[53]!==Oe||t[54]!==z||t[55]!==B||t[56]!==I||t[57]!==Fe?(X=(0,p.jsx)(ne,{disableWorkerPool:Fe,file:z,metrics:le,options:Oe,selectedLines:I},B),t[53]=Oe,t[54]=z,t[55]=B,t[56]=I,t[57]=Fe,t[58]=X):X=t[58];let Z;t[59]!==Me||t[60]!==R||t[61]!==D?(Z=D!==null&&!R?(0,p.jsx)(ve,{truncation:D,onLoadFullFile:Me}):null,t[59]=Me,t[60]=R,t[61]=D,t[62]=Z):Z=t[62];let Q;t[63]!==X||t[64]!==Z?(Q=(0,p.jsx)(ee,{children:(0,p.jsxs)(_e,{children:[X,Z]})}),t[63]=X,t[64]=Z,t[65]=Q):Q=t[65];let $;return t[66]!==M.menu||t[67]!==M.onPointerDownCapture||t[68]!==M.onPointerMoveCapture||t[69]!==M.onPointerUpCapture||t[70]!==Y||t[71]!==Pe||t[72]!==Q?($=(0,p.jsxs)(`div`,{ref:S,className:Y,style:ce,"data-bb-source-code-line-number":Pe,onPointerDownCapture:M.onPointerDownCapture,onPointerMoveCapture:M.onPointerMoveCapture,onPointerUpCapture:M.onPointerUpCapture,children:[Q,M.menu]}),t[66]=M.menu,t[67]=M.onPointerDownCapture,t[68]=M.onPointerMoveCapture,t[69]=M.onPointerUpCapture,t[70]=Y,t[71]=Pe,t[72]=Q,t[73]=$):$=t[73],$}function he(e){return e+1}var ge=40;function _e(e){let t=(0,se.c)(10),{children:n}=e,[r]=(0,f.useState)(x),i;t[0]===r?i=t[1]:(i=e=>{e===null?r?.cleanUp():r?.setup(e)},t[0]=r,t[1]=i);let a=i,o;t[2]===n?o=t[3]:(o=(0,p.jsx)(`div`,{children:n}),t[2]=n,t[3]=o);let s;t[4]!==o||t[5]!==a?(s=(0,p.jsx)(`div`,{ref:a,className:`min-h-0 flex-1 overflow-y-auto`,"data-bb-source-code-viewport":!0,children:o}),t[4]=o,t[5]=a,t[6]=s):s=t[6];let c;return t[7]!==s||t[8]!==r?(c=(0,p.jsx)(l.Provider,{value:r,children:s}),t[7]=s,t[8]=r,t[9]=c):c=t[9],c}function x(){return typeof window>`u`?void 0:new u}function ve(e){let t=(0,se.c)(12),{truncation:n,onLoadFullFile:r}=e,i;t[0]===n.renderedLineCount?i=t[1]:(i=n.renderedLineCount.toLocaleString(),t[0]=n.renderedLineCount,t[1]=i);let o;t[2]===n.totalLineCount?o=t[3]:(o=n.totalLineCount.toLocaleString(),t[2]=n.totalLineCount,t[3]=o);let s;t[4]!==i||t[5]!==o?(s=(0,p.jsxs)(`span`,{children:[`Showing the first `,i,` of`,` `,o,` lines.`]}),t[4]=i,t[5]=o,t[6]=s):s=t[6];let c;t[7]===r?c=t[8]:(c=(0,p.jsx)(a,{type:`button`,variant:`link`,size:`sm`,className:`h-auto p-0 text-xs underline underline-offset-4 hover:underline`,onClick:r,children:`Load full file`}),t[7]=r,t[8]=c);let l;return t[9]!==s||t[10]!==c?(l=(0,p.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1 px-4 py-3 text-xs text-muted-foreground`,children:[s,c]}),t[9]=s,t[10]=c,t[11]=l):l=t[11],l}export{b as default};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Cr as t,Et as n,Or as r,St as i,bt as a,dr as o,mi as s,ni as c,t as l,vr as u,yr as d}from"./boot-vendor-BBLG7GwQ.js";import{$ as f,$a as p,Cp as m,Lf as h,Nf as g,Pf as _,Pu as v,Qm as y,Sa as b,Sn as x,Ta as S,Tr as C,W_ as w,Xf as T,Za as E,df as D,dr as O,fr as k,ft as A,lm as j,lr as ee,md as te,nh as M,oh as N,oo as P,pm as F,qf as I,uc as L,uf as R,vi as z,xo as B}from"./index-DacqPN7W.js";import{n as V,r as H,t as U}from"./browser-url-BZwRHtdQ.js";import{r as ne}from"./panelChromeClasses-DF5L8TjO.js";import{a as W,i as G,n as K,r as re}from"./launcherRow-DKoO_khe.js";var q=e(s(),1),J=r(),ie=`bb.thread.browserHistory`,ae=`1`,oe=24,Y=o(d({url:t().min(1),title:t().min(1).nullable(),visitedAt:u().int().nonnegative()}).strict()),se=[],ce=v({parse:(e,t)=>{if(e===null)return t;try{let n=Y.safeParse(JSON.parse(e));return n.success?n.data:t}catch{return t}},serialize:e=>JSON.stringify(e)});function le(e){return`${ie}-${encodeURIComponent(e.trim())}-${ae}`}var ue=n(se),de=l(e=>a(le(e),se,ce,{getOnInit:!0}));function fe(e){return e!=null&&e.trim().length>0}function pe(e){let t=(0,J.c)(10),n;t[0]===e?n=t[1]:(n=fe(e)?de(e):ue,t[0]=e,t[1]=n);let[r,a]=i(n),o;t[2]===a?o=t[3]:(o=e=>{let{url:t,title:n}=e;t.length!==0&&a(e=>[{url:t,title:n,visitedAt:Date.now()},...e.filter(e=>e.url!==t)].slice(0,oe))},t[2]=a,t[3]=o);let s=o,c;t[4]===a?c=t[5]:(c=()=>{a(se)},t[4]=a,t[5]=c);let l=c,u;return t[6]!==l||t[7]!==r||t[8]!==s?(u={entries:r,recordVisit:s,clear:l},t[6]=l,t[7]=r,t[8]=s,t[9]=u):u=t[9],u}var X=e(c(),1);function me(e){return e===null?null:`${e.activeMatchOrdinal}/${e.matches}`}function Z(e){let t=(0,J.c)(9),{icon:n,label:r,disabled:i,onClick:a,shortcut:o}=e,s=o?`${r} (${o.label})`:r,c=o?.ariaKeyshortcuts,l;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(l=N(`flex shrink-0 items-center justify-center transition-colors hover:bg-state-hover hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-40`,h,f),t[0]=l):l=t[0];let u;t[1]===n?u=t[2]:(u=(0,X.jsx)(y,{name:n,"aria-hidden":!0}),t[1]=n,t[2]=u);let d;return t[3]!==s||t[4]!==i||t[5]!==a||t[6]!==c||t[7]!==u?(d=(0,X.jsx)(`button`,{type:`button`,onClick:a,disabled:i,"aria-label":s,"aria-keyshortcuts":c,className:l,children:u}),t[3]=s,t[4]=i,t[5]=a,t[6]=c,t[7]=u,t[8]=d):d=t[8],d}function he(e){let t=(0,J.c)(36),{inputRef:n,query:r,matches:i,onQueryChange:a,onFindNext:o,onFindPrevious:s,onClose:c,shortcut:l}=e,u;t[0]===i?u=t[1]:(u=me(i),t[0]=i,t[1]=u);let d=u,f=i!==null&&i.matches>0,p=i!==null&&i.matches===0,m;t[2]!==c||t[3]!==o||t[4]!==s?(m=e=>{if(!e.nativeEvent.isComposing){if(e.key===`Enter`){e.preventDefault(),e.shiftKey?s():o();return}e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),c())}},t[2]=c,t[3]=o,t[4]=s,t[5]=m):m=t[5];let h=m,g;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(g=N(`flex h-9 shrink-0 items-center gap-1 border-b border-border/70 py-1 pl-2 pr-2`,ne),t[6]=g):g=t[6];let _;t[7]===a?_=t[8]:(_=e=>a(e.target.value),t[7]=a,t[8]=_);let v=l?`Find in page (${l.label})`:`Find in page`,y=l?.ariaKeyshortcuts,b;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(b=N(`min-w-0 flex-1 bg-transparent text-foreground outline-none placeholder:text-muted-foreground`,I),t[9]=b):b=t[9];let x;t[10]!==h||t[11]!==n||t[12]!==r||t[13]!==_||t[14]!==v||t[15]!==y?(x=(0,X.jsx)(`input`,{ref:n,type:`text`,value:r,onChange:_,onKeyDown:h,placeholder:`Find in page`,"aria-label":v,"aria-keyshortcuts":y,autoComplete:`off`,spellCheck:!1,maxLength:j,className:b}),t[10]=h,t[11]=n,t[12]=r,t[13]=_,t[14]=v,t[15]=y,t[16]=x):x=t[16];let S;t[17]!==d||t[18]!==p?(S=d===null?null:(0,X.jsx)(`span`,{"data-testid":`browser-find-match-count`,"aria-live":`polite`,className:N(`shrink-0 tabular-nums`,p?`text-destructive`:`text-muted-foreground`,I),children:d}),t[17]=d,t[18]=p,t[19]=S):S=t[19];let C;t[20]!==x||t[21]!==S?(C=(0,X.jsxs)(`div`,{className:`flex h-7 min-w-0 flex-1 items-center gap-2 rounded-md border border-border/70 bg-background/70 px-2`,children:[x,S]}),t[20]=x,t[21]=S,t[22]=C):C=t[22];let w=!f,T;t[23]!==s||t[24]!==w?(T=(0,X.jsx)(Z,{icon:`ChevronUp`,label:`Previous match`,disabled:w,onClick:s}),t[23]=s,t[24]=w,t[25]=T):T=t[25];let E=!f,D;t[26]!==o||t[27]!==E?(D=(0,X.jsx)(Z,{icon:`ChevronDown`,label:`Next match`,disabled:E,onClick:o}),t[26]=o,t[27]=E,t[28]=D):D=t[28];let O;t[29]===c?O=t[30]:(O=(0,X.jsx)(Z,{icon:`X`,label:`Close find bar`,onClick:c}),t[29]=c,t[30]=O);let k;return t[31]!==C||t[32]!==T||t[33]!==D||t[34]!==O?(k=(0,X.jsxs)(`div`,{"data-testid":`browser-find-bar`,role:`search`,"aria-label":`Find in page`,className:g,children:[C,T,D,O]}),t[31]=C,t[32]=T,t[33]=D,t[34]=O,t[35]=k):k=t[35],k}function ge(e){let t=(0,J.c)(17),n,r,i;t[0]===e?(n=t[1],r=t[2],i=t[3]):({onFocus:r,onBlur:n,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i);let a=(0,q.useRef)(null),o=(0,q.useRef)(!1),s,c;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(s=()=>{let e=()=>{o.current=!0,a.current=null},t=()=>{o.current=!1};return window.addEventListener(`blur`,e),window.addEventListener(`keydown`,t,!0),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`keydown`,t,!0)}},c=[],t[4]=s,t[5]=c):(s=t[4],c=t[5]),(0,q.useEffect)(s,c);let l,u,d;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(l=e=>{a.current=e.button===0&&(o.current||document.activeElement!==e.currentTarget)?{x:e.clientX,y:e.clientY}:null,o.current=!1},u=e=>{let t=a.current;t!==null&&Math.hypot(e.clientX-t.x,e.clientY-t.y)>4&&(a.current=null)},d=e=>{a.current!==null&&(a.current=null,e.preventDefault(),e.currentTarget.select())},t[6]=l,t[7]=u,t[8]=d):(l=t[6],u=t[7],d=t[8]);let f;t[9]===r?f=t[10]:(f=e=>{a.current===null&&!o.current&&e.currentTarget.select(),r?.(e)},t[9]=r,t[10]=f);let p;t[11]===n?p=t[12]:(p=e=>{a.current=null,n?.(e)},t[11]=n,t[12]=p);let m;return t[13]!==i||t[14]!==f||t[15]!==p?(m=(0,X.jsx)(`input`,{type:`text`,placeholder:`Enter a URL`,autoComplete:`off`,spellCheck:!1,...i,onMouseDown:l,onMouseMove:u,onMouseUp:d,onFocus:f,onBlur:p}),t[13]=i,t[14]=f,t[15]=p,t[16]=m):m=t[16],m}function _e(e){let t=(0,J.c)(27),{entry:n,now:r,onNavigate:i}=e,a;t[0]===n.url?a=t[1]:(a=U(n.url),t[0]=n.url,t[1]=a);let o=a,s;t[2]===n.title?s=t[3]:(s=n.title?.trim(),t[2]=n.title,t[3]=s);let c=s,l=c&&c.length>0?c:o,u;t[4]!==n.visitedAt||t[5]!==r?(u=b({timestamp:n.visitedAt,now:r}),t[4]=n.visitedAt,t[5]=r,t[6]=u):u=t[6];let d=u,f;t[7]!==n.url||t[8]!==i?(f=()=>i(n.url),t[7]=n.url,t[8]=i,t[9]=f):f=t[9];let p=n.url,m;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(m=N(K,`hover:bg-state-hover`),t[10]=m):m=t[10];let h;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,X.jsx)(`span`,{className:re,children:(0,X.jsx)(y,{name:`Browser`,className:g,"aria-hidden":!0})}),t[11]=h):h=t[11];let _;t[12]===l?_=t[13]:(_=(0,X.jsx)(`span`,{className:`truncate text-foreground`,children:l}),t[12]=l,t[13]=_);let v;t[14]!==o||t[15]!==l?(v=l===o?null:(0,X.jsx)(`span`,{className:`truncate font-mono text-muted-foreground [flex-shrink:9999]`,children:o}),t[14]=o,t[15]=l,t[16]=v):v=t[16];let x;t[17]!==_||t[18]!==v?(x=(0,X.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-1.5`,children:[_,v]}),t[17]=_,t[18]=v,t[19]=x):x=t[19];let S;t[20]===d?S=t[21]:(S=(0,X.jsx)(G,{idle:d,isActive:!1}),t[20]=d,t[21]=S);let C;return t[22]!==n.url||t[23]!==x||t[24]!==S||t[25]!==f?(C=(0,X.jsxs)(`button`,{type:`button`,onClick:f,title:p,className:m,children:[h,x,S]}),t[22]=n.url,t[23]=x,t[24]=S,t[25]=f,t[26]=C):C=t[26],C}function ve(e){let t=(0,J.c)(17),{onNavigateInput:n,recent:r,onClearRecent:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=Date.now(),t[0]=a):a=t[0];let o=a;if(r.length===0)return null;let s=r.length,c;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(c=N(`rounded text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`,I),t[1]=c):c=t[1];let l;t[2]===i?l=t[3]:(l=(0,X.jsx)(`button`,{type:`button`,onClick:i,"aria-label":`Clear recently visited`,className:c,children:`Clear`}),t[2]=i,t[3]=l);let u;t[4]!==r.length||t[5]!==l?(u=(0,X.jsx)(W,{label:`Recently visited`,count:s,action:l}),t[4]=r.length,t[5]=l,t[6]=u):u=t[6];let d;if(t[7]!==n||t[8]!==r){let e;t[10]===n?e=t[11]:(e=e=>(0,X.jsx)(`li`,{children:(0,X.jsx)(_e,{entry:e,now:o,onNavigate:n})},e.url),t[10]=n,t[11]=e),d=r.map(e),t[7]=n,t[8]=r,t[9]=d}else d=t[9];let f;t[12]===d?f=t[13]:(f=(0,X.jsx)(`ul`,{"aria-label":`Recently visited`,className:`flex flex-col gap-px`,children:d}),t[12]=d,t[13]=f);let p;return t[14]!==u||t[15]!==f?(p=(0,X.jsx)(`div`,{className:`flex h-full flex-col overflow-y-auto px-4 pb-6 pt-8`,children:(0,X.jsx)(`div`,{className:`mx-auto flex w-full max-w-xl flex-col gap-6`,children:(0,X.jsxs)(`section`,{children:[u,f]})})}),t[14]=u,t[15]=f,t[16]=p):p=t[16],p}function ye({desktopBrowser:e,pluginId:t,tabId:n}){let r=e?.evaluate,i=e?.onPageMessage;return r===void 0||i===void 0?null:{async evaluate(e,i){let a=await r({tabId:n,expression:e,world:i?.world??`isolated`,channel:t});if(!a.ok)throw Error(a.error);return a.value},onMessage(e){return i(r=>{r.tabId===n&&r.channel===t&&e(r.data)})}}}function be(e){let t=(0,J.c)(18),{slot:n,threadId:r,tabId:i,url:a,isCompactViewport:o}=e,s;t[0]!==n.pluginId||t[1]!==i?(s=ye({desktopBrowser:D(),pluginId:n.pluginId,tabId:i}),t[0]=n.pluginId,t[1]=i,t[2]=s):s=t[2];let c=s,l=n.component,u=`${r}/${i}`,d;t[3]!==l||t[4]!==o||t[5]!==c||t[6]!==i||t[7]!==r||t[8]!==a?(d=(0,X.jsx)(l,{threadId:r,tabId:i,url:a,isCompactViewport:o,experimental_page:c}),t[3]=l,t[4]=o,t[5]=c,t[6]=i,t[7]=r,t[8]=a,t[9]=d):d=t[9];let f;t[10]!==n.title||t[11]!==d?(f=(0,X.jsx)(`span`,{role:`group`,"aria-label":n.title,className:`flex shrink-0 items-center`,children:d}),t[10]=n.title,t[11]=d,t[12]=f):f=t[12];let p;return t[13]!==n.id||t[14]!==n.pluginId||t[15]!==u||t[16]!==f?(p=(0,X.jsx)(C,{pluginId:n.pluginId,slotKind:`browserToolbarAction`,slotId:n.id,instanceId:u,crashFallback:null,children:f}),t[13]=n.id,t[14]=n.pluginId,t[15]=u,t[16]=f,t[17]=p):p=t[17],p}function xe(e){let t=(0,J.c)(11),{threadId:n,tabId:r,url:i,isCompactViewport:a}=e,{browserToolbarActions:o}=m();if(o.length===0)return null;let s;if(t[0]!==o||t[1]!==a||t[2]!==r||t[3]!==n||t[4]!==i){let e;t[6]!==a||t[7]!==r||t[8]!==n||t[9]!==i?(e=e=>(0,X.jsx)(be,{slot:e,threadId:n,tabId:r,url:i,isCompactViewport:a},`${e.pluginId}/${e.id}/${e.generation}/${n}/${r}`),t[6]=a,t[7]=r,t[8]=n,t[9]=i,t[10]=e):e=t[10],s=o.map(e),t[0]=o,t[1]=a,t[2]=r,t[3]=n,t[4]=i,t[5]=s}else s=t[5];return s}var Se={x:0,y:0,width:0,height:0};function Ce(e){return{x:Math.round(e.left),y:Math.round(e.top),width:Math.round(e.width),height:Math.round(e.height)}}function we(){return{width:window.innerWidth,height:window.innerHeight}}function Te(e){return F({bounds:Ce(e.element.getBoundingClientRect()),viewport:we()})}function Ee(e){return e===`flex-grow`||e===`flex-basis`}function De(e){return e.a.x===e.b.x&&e.a.y===e.b.y&&e.a.width===e.b.width&&e.a.height===e.b.height}function Oe(e){return z(e.url)?`Server not reachable`:e.errorText.includes(`ERR_BLOCKED_BY_CLIENT`)?`Page blocked`:`Page unavailable`}function ke(e){let t=(0,J.c)(48),{addressDraft:n,isEditing:r,state:i,currentUrl:a,addressInputRef:o,onAddressChange:s,onAddressFocus:c,onAddressBlur:l,onAddressKeyDown:u,onSubmit:d,onBack:f,onForward:p,onReloadOrStop:m,onOpenExternal:h,locationShortcut:g,reloadShortcut:v,pluginActions:b}=e,x=i?.isLoading??!1,S;t[0]===a?S=t[1]:(S=V(a),t[0]=a,t[1]=S);let C=S,w=r?n:a,T,E;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(T=N(`relative h-11 shrink-0 overflow-hidden focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-ring max-md:pointer-coarse:h-[52px]`,ne),E=N(`absolute inset-x-0 top-0 flex h-11 translate-y-0 items-center gap-1 py-1.5 pl-2 pr-4 opacity-100 max-md:pointer-coarse:h-[52px]`),t[2]=T,t[3]=E):(T=t[2],E=t[3]);let D=!(i?.canGoBack??!1),O;t[4]!==f||t[5]!==D?(O=(0,X.jsx)(Z,{icon:`ChevronLeft`,label:`Go back`,disabled:D,onClick:f}),t[4]=f,t[5]=D,t[6]=O):O=t[6];let k=!(i?.canGoForward??!1),A;t[7]!==p||t[8]!==k?(A=(0,X.jsx)(Z,{icon:`ChevronRight`,label:`Go forward`,disabled:k,onClick:p}),t[7]=p,t[8]=k,t[9]=A):A=t[9];let j=x?`X`:`RotateCcw`,ee=x?`Stop loading`:`Reload`,te=x?null:v,M;t[10]!==m||t[11]!==te||t[12]!==j||t[13]!==ee?(M=(0,X.jsx)(Z,{icon:j,label:ee,shortcut:te,onClick:m}),t[10]=m,t[11]=te,t[12]=j,t[13]=ee,t[14]=M):M=t[14];let P;t[15]===C?P=t[16]:(P=C===`secure`?(0,X.jsx)(y,{name:`Lock`,className:N(_,`text-success`),"aria-label":`Secure connection`}):C===`insecure`?(0,X.jsx)(y,{name:`AlertTriangle`,className:N(_,`text-warning`),"aria-label":`Connection not secure`}):(0,X.jsx)(y,{name:`Search`,className:N(_,`text-muted-foreground`),"aria-hidden":!0}),t[15]=C,t[16]=P);let F;t[17]===s?F=t[18]:(F=e=>s(e.target.value),t[17]=s,t[18]=F);let L=g?`Address and search bar (${g.label})`:`Address and search bar`,R=g?.ariaKeyshortcuts,z;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(z=N(`min-w-0 flex-1 bg-transparent font-mono text-foreground outline-none placeholder:font-sans placeholder:text-muted-foreground`,I),t[19]=z):z=t[19];let B;t[20]!==o||t[21]!==w||t[22]!==l||t[23]!==c||t[24]!==u||t[25]!==F||t[26]!==L||t[27]!==R?(B=(0,X.jsx)(ge,{ref:o,value:w,onChange:F,onFocus:c,onBlur:l,onKeyDown:u,"aria-label":L,"aria-keyshortcuts":R,className:z}),t[20]=o,t[21]=w,t[22]=l,t[23]=c,t[24]=u,t[25]=F,t[26]=L,t[27]=R,t[28]=B):B=t[28];let H;t[29]!==P||t[30]!==B?(H=(0,X.jsxs)(`div`,{className:`flex h-8 items-center gap-2 rounded-full border border-border/70 bg-background/70 px-3 max-md:pointer-coarse:h-10`,children:[P,B]}),t[29]=P,t[30]=B,t[31]=H):H=t[31];let U;t[32]!==d||t[33]!==H?(U=(0,X.jsx)(`form`,{onSubmit:d,className:`min-w-0 flex-1`,children:H}),t[32]=d,t[33]=H,t[34]=U):U=t[34];let W=a.length===0,G;t[35]!==h||t[36]!==W?(G=(0,X.jsx)(Z,{icon:`ExternalLink`,label:`Open in external browser`,disabled:W,onClick:h}),t[35]=h,t[36]=W,t[37]=G):G=t[37];let K;t[38]===x?K=t[39]:(K=x?(0,X.jsx)(`span`,{className:`absolute inset-x-0 bottom-0 h-0.5 overflow-hidden`,children:(0,X.jsx)(`span`,{className:`block h-full w-1/3 animate-pulse bg-ring/70 motion-reduce:animate-none`})}):null,t[38]=x,t[39]=K);let re;return t[40]!==b||t[41]!==M||t[42]!==U||t[43]!==G||t[44]!==K||t[45]!==O||t[46]!==A?(re=(0,X.jsx)(`div`,{role:`region`,"aria-label":`Browser navigation`,tabIndex:-1,className:T,children:(0,X.jsxs)(`div`,{className:E,children:[O,A,M,U,b,G,K]})}),t[40]=b,t[41]=M,t[42]=U,t[43]=G,t[44]=K,t[45]=O,t[46]=A,t[47]=re):re=t[47],re}function Ae(){let e=(0,J.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,X.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-3 px-6 text-center`,children:[(0,X.jsx)(`span`,{className:`flex size-11 items-center justify-center rounded-lg border border-border bg-card text-muted-foreground`,children:(0,X.jsx)(y,{name:`Globe`,className:`size-6`,"aria-hidden":!0})}),(0,X.jsx)(`div`,{className:`text-sm font-medium text-foreground`,children:`Browser tabs need the desktop app`}),(0,X.jsx)(`p`,{className:N(`max-w-xs text-muted-foreground`,I),children:`The in-app web browser runs in the Moonlet desktop app. Open this thread there to browse the web.`})]}),e[0]=t):t=e[0],t}function je(e){let t=(0,J.c)(32),{errorText:n,onOpenExternal:r,onRetry:i,url:a}=e,o;t[0]===a?o=t[1]:(o=U(a),t[0]=a,t[1]=o);let s=o,c;t[2]!==n||t[3]!==a?(c=Oe({errorText:n,url:a}),t[2]=n,t[3]=a,t[4]=c):c=t[4];let l=c,u;t[5]!==s||t[6]!==a?(u=z(a)?`The browser could not reach ${s||`this local server`}. Start the server, then reload.`:`The browser could not load this page. Try reloading or opening it externally.`,t[5]=s,t[6]=a,t[7]=u):u=t[7];let d=u,f;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,X.jsx)(`span`,{className:`flex size-11 items-center justify-center rounded-lg border border-border bg-surface-recessed text-muted-foreground`,children:(0,X.jsx)(y,{name:`Globe`,className:`size-6`,"aria-hidden":!0})}),t[8]=f):f=t[8];let p;t[9]===l?p=t[10]:(p=(0,X.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:l}),t[9]=l,t[10]=p);let m;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(m=N(`mt-1 text-muted-foreground`,I),t[11]=m):m=t[11];let h;t[12]===d?h=t[13]:(h=(0,X.jsx)(`p`,{className:m,children:d}),t[12]=d,t[13]=h);let g;t[14]!==p||t[15]!==h?(g=(0,X.jsxs)(`div`,{children:[p,h]}),t[14]=p,t[15]=h,t[16]=g):g=t[16];let _;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,X.jsx)(y,{name:`RotateCcw`,className:`size-3.5`,"aria-hidden":!0}),t[17]=_):_=t[17];let v;t[18]===i?v=t[19]:(v=(0,X.jsxs)(`button`,{type:`button`,onClick:i,className:`inline-flex h-8 items-center gap-1.5 rounded-md border border-border bg-background px-2.5 text-xs font-medium text-foreground transition-colors hover:bg-state-hover`,children:[_,`Reload`]}),t[18]=i,t[19]=v);let b;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,X.jsx)(y,{name:`ExternalLink`,className:`size-3.5`,"aria-hidden":!0}),t[20]=b):b=t[20];let x;t[21]===r?x=t[22]:(x=(0,X.jsxs)(`button`,{type:`button`,onClick:r,className:`inline-flex h-8 items-center gap-1.5 rounded-md px-2.5 text-xs font-medium text-muted-foreground transition-colors hover:bg-state-hover hover:text-foreground`,children:[b,`Open externally`]}),t[21]=r,t[22]=x);let S;t[23]!==v||t[24]!==x?(S=(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center justify-center gap-2 pt-1`,children:[v,x]}),t[23]=v,t[24]=x,t[25]=S):S=t[25];let C;t[26]===n?C=t[27]:(C=(0,X.jsx)(`p`,{className:`max-w-full truncate pt-1 font-mono text-[11px] text-subtle-foreground`,children:n}),t[26]=n,t[27]=C);let w;return t[28]!==S||t[29]!==C||t[30]!==g?(w=(0,X.jsx)(`div`,{className:`flex h-full flex-col items-center justify-center px-6 text-center`,children:(0,X.jsxs)(`div`,{className:`flex w-full max-w-sm flex-col items-center gap-3`,children:[f,g,S,C]})}),t[28]=S,t[29]=C,t[30]=g,t[31]=w):w=t[31],w}function Me({tabId:e,desktopTarget:t,existingOnly:n,initialUrl:r,addressFocusRequest:i,onAddressFocusRequestConsumed:a,canShowNativeBrowserView:o,canHandleBrowserCommands:s=o,onNativeFocus:c,visibilityCoordinator:l,environmentId:u,threadId:d,onUpdate:f,onOpenInNewTab:m}){let h=p(`browser.focusLocation`),g=p(`browser.reload`),_=p(`browser.find`),v=(0,q.useMemo)(()=>D(),[]),y=(0,q.useRef)(null),b=(0,q.useRef)(null),S=(0,q.useRef)(null),C=L(),A=T(),{entries:ee,recordVisit:te,clear:M}=pe(d),[N,F]=(0,q.useState)(null),[I,z]=(0,q.useState)(null);(0,q.useEffect)(()=>{let t=!0,n=!1;z(null);let r=n=>{t&&n.tabId===e&&n.threadId===d&&z(n.control)},i=v?.onControl?.(t=>{t.tabId!==e||t.threadId!==d||(n=!0,r(t))});return v?.getControl?.(e).then(e=>{e!==null&&!n&&r(e)}).catch(()=>void 0),()=>{t=!1,i?.()}},[v,e,d]);let[V,U]=(0,q.useState)(r),[ne,W]=(0,q.useState)(r),[G,K]=(0,q.useState)(!1),[re,J]=(0,q.useState)(!1),[ie,ae]=(0,q.useState)(!1),oe=(0,q.useRef)(!1);oe.current=ie;let[Y,se]=(0,q.useState)(``),[ce,le]=(0,q.useState)(null),[ue,de]=(0,q.useState)(null),fe=(0,q.useRef)(f),me=(0,q.useRef)(te);fe.current=f,me.current=te;let Z=(0,q.useRef)(r),ge=(0,q.useRef)(n),_e=(0,q.useRef)(t),[ye,be]=(0,q.useState)(null),Ce=ye!==null&&ye.environmentId===u&&ye.tabId===e&&ye.threadId===d,we=V.length>0,Oe=v?.focus!==void 0&&v.onFocus!==void 0&&v.setVisibleWithoutFocus!==void 0,Me=N?.errorText??null,Ne=Me!==null&&we,Pe=B(),Fe=(0,q.useRef)(null),Ie=(0,q.useCallback)(()=>{let e=y.current;return e===null?null:Te({element:e})},[]),Le=(0,q.useCallback)(t=>{v!==null&&(Fe.current=t,v.setBounds({tabId:e,bounds:t}))},[v,e]),Re=(0,q.useCallback)(({force:e})=>{let t=Ie();if(t===null)return;let n=Fe.current;!e&&n!==null&&De({a:n,b:t})||Le(t)},[Ie,Le]),ze=(0,q.useCallback)(()=>{Re({force:!0})},[Re]),Q=(0,q.useCallback)(()=>{Re({force:!1})},[Re]),Be=(0,q.useCallback)(()=>{let e=Ie();return Fe.current=e,e??Se},[Ie]);(0,q.useEffect)(()=>{if(v===null)return;let t=Be(),n=Z.current;O({environmentId:u,tabId:e,threadId:d});let r=_e.current,i=ge.current===!0&&(r===void 0||!k(e,r));v.attach({tabId:e,threadId:d,...i?{existingOnly:!0}:{},url:n,bounds:t,visible:!1}),be({environmentId:u,tabId:e,threadId:d});let a=null,o=v.onState(t=>{t.tabId===e&&(a!==null&&(a.url!==t.url||t.isLoading&&!a.isLoading)&&le(null),a=t,F(t),U(t.url),fe.current({tabId:e,url:t.url,title:t.title}),!t.isLoading&&t.url.length>0&&me.current({url:t.url,title:t.title}))}),s=v.onSnapshot?.(t=>{t.tabId===e&&de(t.dataUrl)}),c=v.onFindResult?.(t=>{t.tabId===e&&le({activeMatchOrdinal:t.activeMatchOrdinal,matches:t.matches})});return()=>{o(),s?.(),c?.(),oe.current&&v.stopFindInPage?.({tabId:e,action:`clearSelection`}),l?.release(e)}},[v,u,Be,l,e,d]),(0,q.useEffect)(()=>{let e=y.current;if(e===null||v===null)return;let t=new ResizeObserver(()=>{Q()});return t.observe(e),()=>{t.disconnect()}},[v,Q]),(0,q.useEffect)(()=>{if(v===null)return;let e=e=>{Ee(e.propertyName)&&Q()};return window.addEventListener(x,Q),window.addEventListener(`resize`,Q),document.addEventListener(`transitionend`,e,!0),document.addEventListener(`transitioncancel`,e,!0),()=>{window.removeEventListener(x,Q),window.removeEventListener(`resize`,Q),document.removeEventListener(`transitionend`,e,!0),document.removeEventListener(`transitioncancel`,e,!0)}},[v,Q]);let Ve=o&&(s||Oe)&&we&&!Ne&&Ce&&!Pe;(0,q.useLayoutEffect)(()=>{if(l!==null){if(Ve)return l.show(e,ze,{focus:!1}),()=>{l.hide(e)};l.hide(e)}},[l,e,Ve,ze]),(0,q.useLayoutEffect)(()=>{if(re){if(!o||!s||Ne||Pe){J(!1);return}Ve&&(J(!1),v?.focus?.(e))}},[re,o,s,Ne,Pe,Ve,v,e]),(0,q.useEffect)(()=>{if(!(v?.onFocus===void 0||c===void 0))return v.onFocus(t=>{t===e&&c()})},[v,c,e]),(0,q.useEffect)(()=>{if(i===null||i.tabId!==e)return;if(C){a?.(i);return}W(V),K(!0),b.current?.focus({preventScroll:!0});let t=requestAnimationFrame(()=>{b.current?.focus({preventScroll:!0}),a?.(i)});return()=>cancelAnimationFrame(t)},[i,V,C,a,e]);let He=(0,q.useCallback)(t=>{let n=H(t);n!==null&&(U(n),K(!1),b.current?.blur(),v?.navigate({tabId:e,url:n}),J(!0))},[v,e]),Ue=(0,q.useCallback)(e=>{e.preventDefault(),He(ne)},[ne,He]),We=(0,q.useCallback)(e=>{if(e.nativeEvent.isComposing)return;if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),W(V);let t=e.currentTarget;window.requestAnimationFrame(()=>{document.activeElement===t&&t.select()});return}if(m===null||e.key!==`Enter`||e.shiftKey||e.ctrlKey||!(w(P())?e.metaKey&&!e.altKey:e.altKey&&!e.metaKey))return;e.preventDefault();let t=H(ne);t!==null&&(W(V),K(!1),b.current?.blur(),m(t))},[ne,V,m]),Ge=(0,q.useCallback)(()=>{W(V),K(!0)},[V]),Ke=(0,q.useCallback)(()=>{if(N?.isLoading??!1){v?.stop(e);return}v?.reload(e)},[v,N?.isLoading,e]);E(`browser.focusLocation`,(0,q.useCallback)(()=>!s||v===null?!1:(W(V),K(!0),b.current?.focus({preventScroll:!0}),window.requestAnimationFrame(()=>{b.current?.focus({preventScroll:!0}),b.current?.select()}),!0),[s,V,v]),100);let qe=o&&v!==null&&v.findInPage!==void 0&&we,$=(0,q.useCallback)(t=>{v?.findInPage?.({tabId:e,...t})},[v,e]),Je=(0,q.useCallback)(()=>{v?.stopFindInPage?.({tabId:e,action:`clearSelection`}),le(null)},[v,e]),Ye=(0,q.useCallback)(()=>{S.current?.focus({preventScroll:!0}),window.requestAnimationFrame(()=>{S.current?.focus({preventScroll:!0}),S.current?.select()})},[]),Xe=(0,q.useCallback)(e=>{let t=e.slice(0,j);if(se(t),t.length===0){Je();return}$({text:t,forward:!0,newSession:!0})},[Je,$]),Ze=(0,q.useCallback)(()=>{Y.length!==0&&$({text:Y,forward:!0,newSession:!1})},[Y,$]),Qe=(0,q.useCallback)(()=>{Y.length!==0&&$({text:Y,forward:!1,newSession:!1})},[Y,$]),$e=(0,q.useCallback)(()=>{ae(!1),Je()},[Je]);E(`browser.find`,(0,q.useCallback)(()=>qe?(ae(!0),Y.length>0&&$({text:Y,forward:!0,newSession:!0}),Ye(),!0):!1,[qe,Y,Ye,$]),100),(0,q.useEffect)(()=>{ie&&!qe&&(ae(!1),Je())},[qe,Je,ie]),E(`browser.reload`,()=>!s||v===null||!we?!1:(v.reload(e),!0),100);let et=(0,q.useCallback)(()=>{R()?.openExternalUrl(V)},[V]);return v===null?(0,X.jsx)(Ae,{}):(0,X.jsxs)(`div`,{"data-app-browser":!0,className:`flex h-full min-h-0 flex-col`,children:[(0,X.jsx)(ke,{addressDraft:ne,isEditing:G,state:N,currentUrl:V,addressInputRef:b,onAddressChange:W,onAddressFocus:Ge,onAddressBlur:()=>K(!1),onAddressKeyDown:We,onSubmit:Ue,onBack:()=>{v.goBack(e)},onForward:()=>{v.goForward(e)},onReloadOrStop:Ke,onOpenExternal:et,locationShortcut:h,reloadShortcut:g,pluginActions:(0,X.jsx)(xe,{threadId:d,tabId:e,url:V,isCompactViewport:A})}),I===null?null:(0,X.jsxs)(`div`,{role:`status`,className:`flex shrink-0 items-center gap-3 border-b border-border bg-surface-recessed px-3 py-2 text-xs`,children:[(0,X.jsxs)(`span`,{className:`min-w-0 flex-1 truncate`,children:[I.controllerLabel,` is controlling this tab`]}),(0,X.jsx)(`button`,{type:`button`,className:`rounded px-2 py-1 hover:bg-state-hover`,onClick:()=>v.releaseControl?.(e),children:`Stop`}),(0,X.jsx)(`button`,{type:`button`,className:`rounded px-2 py-1 hover:bg-state-hover`,onClick:()=>{v.releaseControl?.(e),v.focus?.(e)},children:`Take over`})]}),ie?(0,X.jsx)(he,{inputRef:S,query:Y,matches:ce,onQueryChange:Xe,onFindNext:Ze,onFindPrevious:Qe,onClose:$e,shortcut:_}):null,(0,X.jsxs)(`div`,{ref:y,className:`relative min-h-0 flex-1`,children:[Ne?(0,X.jsx)(je,{errorText:Me,onOpenExternal:et,onRetry:Ke,url:V}):we&&!Pe?null:(0,X.jsx)(ve,{onNavigateInput:He,recent:ee,onClearRecent:M}),we&&ue!==null?(0,X.jsx)(`img`,{src:ue,alt:``,draggable:!1,className:`absolute inset-0 size-full`}):null]})]})}function Ne(e,t){return t===null?null:e.find(e=>e.id===t)??null}var Pe=4,Fe=32,Ie=2e3;function Le(e){return Math.min(250*2**(e-1),Ie)}function Re(e,t){if(e===void 0)return`open`;if(t.status===`pending`)return`pending`;let n=t.target;return n===null||n.hostId!==e.hostId?`unavailable`:n.instanceId===e.instanceId?`attach`:`check-saved-window`}function ze(e){let t=(0,J.c)(40),{browserTabs:n,activeBrowserTabId:r,addressFocusRequest:i,onAddressFocusRequestConsumed:a,environmentId:o,canShowNativeBrowserView:s,canHandleBrowserCommands:c,onNativeFocus:l,threadId:u,onUpdate:d,onOpenInNewTab:f}=e,p=i===void 0?null:i,m=c===void 0?s:c,h;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(h=D(),t[0]=h):h=t[0];let g=h,_;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(_=g===null?null:ee(g),t[1]=_):_=t[1];let v=_,y=Ne(n,r),b=y?.desktopTarget,x=b?.hostId,S;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(S=()=>g?.getTarget===void 0?{status:`ready`,target:null}:{status:`pending`},t[2]=S):S=t[2];let[C,w]=(0,q.useState)(S),[T,E]=(0,q.useState)(0),O=b===void 0?null:`${y?.id}:${T}:${b.hostId}:${b.instanceId}:${b.generation}`,[k,A]=(0,q.useState)(null),j;t[3]!==O||t[4]!==A?(j=()=>{let e=g?.getTarget?.bind(g);if(e===void 0)return;let t=!0,n=0,r,i=()=>{e().catch(Be).then(e=>{if(t){if(e!==null){w({status:`ready`,target:e});return}if(n+=1,n>=Pe&&w({status:`ready`,target:null}),n>=Fe){A(O);return}r=setTimeout(i,Le(n))}})};return i(),()=>{t=!1,clearTimeout(r)}},t[3]=O,t[4]=A,t[5]=j):j=t[5],(0,q.useEffect)(j,[g,x,b?.instanceId,b?.generation,O]);let M=Re(b,C),N=M===`check-saved-window`?O:null,[P,F]=(0,q.useState)(null),I=b?.instanceId,L;t[6]!==O||t[7]!==I||t[8]!==N||t[9]!==A||t[10]!==x?(L=()=>{if(N===null||x===void 0||I===void 0)return;let e=!0,t=0,n,r=()=>{te.experimental_desktopBrowsers.listInstances({hostId:x}).then(t=>{let{instances:n}=t;e&&F({key:N,status:n.some(e=>e.instanceId===I)?`live`:`gone`})},()=>{if(e){if(t+=1,t>=Pe&&F({key:N,status:`unknown`}),t>=Fe){A(O);return}n=setTimeout(r,Le(t))}})};return r(),()=>{e=!1,clearTimeout(n)}},t[6]=O,t[7]=I,t[8]=N,t[9]=A,t[10]=x,t[11]=L):L=t[11];let R;if(t[12]!==O||t[13]!==I||t[14]!==N||t[15]!==x?(R=[N,x,I,O],t[12]=O,t[13]=I,t[14]=N,t[15]=x,t[16]=R):R=t[16],(0,q.useEffect)(L,R),y===null)return null;let z=P?.key===N?P.status:null,B=O!==null&&k===O;if(M===`pending`||M===`check-saved-window`&&z===null){let e;return t[17]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,X.jsx)(`div`,{className:`flex min-h-0 flex-1 bg-sidebar`}),t[17]=e):e=t[17],e}if(M===`unavailable`||M===`check-saved-window`&&z!==`gone`){let e;t[18]!==B||t[19]!==z||t[20]!==E?(e=B||z===`live`?()=>E(Q):null,t[18]=B,t[19]=z,t[20]=E,t[21]=e):e=t[21];let n=g===null?`desktop-required`:z===`live`?`other-window`:C.status===`ready`&&C.target!==null&&C.target.hostId!==b?.hostId?`other-computer`:B?`unreachable`:`reconnecting`,r;return t[22]!==y.url||t[23]!==n||t[24]!==e?(r=(0,X.jsx)(He,{url:y.url,onRetry:e,reason:n}),t[22]=y.url,t[23]=n,t[24]=e,t[25]=r):r=t[25],r}let V=M===`attach`?!0:void 0,H=p?.tabId===y.id?p:null,U;return t[26]!==y.id||t[27]!==y.url||t[28]!==m||t[29]!==s||t[30]!==o||t[31]!==a||t[32]!==l||t[33]!==f||t[34]!==d||t[35]!==H||t[36]!==V||t[37]!==b||t[38]!==u?(U=(0,X.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col bg-sidebar`,children:(0,X.jsx)(Me,{tabId:y.id,desktopTarget:b,existingOnly:V,initialUrl:y.url,addressFocusRequest:H,onAddressFocusRequestConsumed:a,canShowNativeBrowserView:s,canHandleBrowserCommands:m,onNativeFocus:l,visibilityCoordinator:v,environmentId:o,threadId:u,onUpdate:d,onOpenInNewTab:f},y.id)}),t[26]=y.id,t[27]=y.url,t[28]=m,t[29]=s,t[30]=o,t[31]=a,t[32]=l,t[33]=f,t[34]=d,t[35]=H,t[36]=V,t[37]=b,t[38]=u,t[39]=U):U=t[39],U}function Q(e){return e+1}function Be(){return null}var Ve={"desktop-required":{title:`Browser tabs need the desktop app`,body:`This tab is open in the Moonlet desktop app.`},"other-window":{title:`This tab is open in another Moonlet window`,body:`Switch to that window to keep browsing.`},"other-computer":{title:`This tab is open on another computer`,body:`It was opened in Moonlet on a different computer.`},reconnecting:{title:`Reconnecting to this tab`,body:`The tab opens again as soon as Moonlet reconnects.`},unreachable:{title:`Can't reach this tab`,body:`Moonlet couldn't reconnect. Try again in a moment.`}};function He(e){let t=(0,J.c)(24),{url:n,reason:r,onRetry:i}=e,a=Ve[r],o;t[0]===n?o=t[1]:(o=URL.canParse(n)?new URL(n):null,t[0]=n,t[1]=o);let s=o,c=s?.protocol===`https:`||s?.protocol===`http:`,l;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,X.jsx)(`span`,{className:`flex size-11 items-center justify-center rounded-lg border border-border bg-card text-muted-foreground`,children:(0,X.jsx)(y,{name:`Globe`,className:`size-6`,"aria-hidden":!0})}),t[2]=l):l=t[2];let u;t[3]===a.title?u=t[4]:(u=(0,X.jsx)(`div`,{className:`text-sm font-medium text-foreground`,children:a.title}),t[3]=a.title,t[4]=u);let d;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(d=N(`max-w-xs text-muted-foreground`,I),t[5]=d):d=t[5];let f;t[6]===a.body?f=t[7]:(f=(0,X.jsx)(`p`,{className:d,children:a.body}),t[6]=a.body,t[7]=f);let p;t[8]===n?p=t[9]:(p=n.length>0?(0,X.jsx)(`p`,{className:N(`max-w-full truncate font-mono text-muted-foreground select-text`,I),title:n,children:n}):null,t[8]=n,t[9]=p);let m;t[10]===i?m=t[11]:(m=i===null?null:(0,X.jsxs)(M,{type:`button`,variant:`outline`,size:`sm`,onClick:i,children:[(0,X.jsx)(y,{name:`RotateCcw`,"aria-hidden":!0}),`Try again`]}),t[10]=i,t[11]=m);let h;t[12]!==c||t[13]!==i||t[14]!==n?(h=n.length>0?(0,X.jsxs)(X.Fragment,{children:[c?(0,X.jsxs)(M,{type:`button`,variant:i===null?`outline`:`ghost`,size:`sm`,onClick:()=>A(n),children:[(0,X.jsx)(y,{name:`ExternalLink`,"aria-hidden":!0}),`Open in browser`]}):null,(0,X.jsxs)(M,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>{S(n,{successMessage:`Link copied`})},children:[(0,X.jsx)(y,{name:`Copy`,"aria-hidden":!0}),`Copy link`]})]}):null,t[12]=c,t[13]=i,t[14]=n,t[15]=h):h=t[15];let g;t[16]!==m||t[17]!==h?(g=(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center justify-center gap-2`,children:[m,h]}),t[16]=m,t[17]=h,t[18]=g):g=t[18];let _;return t[19]!==u||t[20]!==f||t[21]!==p||t[22]!==g?(_=(0,X.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col items-center justify-center gap-3 bg-sidebar px-6 text-center`,children:[l,u,f,p,g]}),t[19]=u,t[20]=f,t[21]=p,t[22]=g,t[23]=_):_=t[23],_}export{ze as BrowserTabDeck};
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Cr as t,Et as n,Or as r,St as i,bt as a,dr as o,mi as s,ni as c,t as l,vr as u,yr as d}from"./boot-vendor-BBLG7GwQ.js";import{$ as f,$a as p,Cp as m,Lf as h,Nf as g,Pf as _,Pu as v,Qm as y,Sa as b,Sn as x,Ta as S,Tr as C,W_ as w,Xf as T,Za as E,df as D,dr as O,fr as k,ft as A,lm as j,lr as ee,md as te,nh as M,oh as N,oo as P,pm as F,qf as I,uc as L,uf as R,vi as z,xo as B}from"./index-B_0TBqOi.js";import{n as V,r as H,t as U}from"./browser-url-CxrZuVov.js";import{r as ne}from"./panelChromeClasses-DF5L8TjO.js";import{a as W,i as G,n as K,r as re}from"./launcherRow-CP53NnO3.js";var q=e(s(),1),J=r(),ie=`bb.thread.browserHistory`,ae=`1`,oe=24,Y=o(d({url:t().min(1),title:t().min(1).nullable(),visitedAt:u().int().nonnegative()}).strict()),se=[],ce=v({parse:(e,t)=>{if(e===null)return t;try{let n=Y.safeParse(JSON.parse(e));return n.success?n.data:t}catch{return t}},serialize:e=>JSON.stringify(e)});function le(e){return`${ie}-${encodeURIComponent(e.trim())}-${ae}`}var ue=n(se),de=l(e=>a(le(e),se,ce,{getOnInit:!0}));function fe(e){return e!=null&&e.trim().length>0}function pe(e){let t=(0,J.c)(10),n;t[0]===e?n=t[1]:(n=fe(e)?de(e):ue,t[0]=e,t[1]=n);let[r,a]=i(n),o;t[2]===a?o=t[3]:(o=e=>{let{url:t,title:n}=e;t.length!==0&&a(e=>[{url:t,title:n,visitedAt:Date.now()},...e.filter(e=>e.url!==t)].slice(0,oe))},t[2]=a,t[3]=o);let s=o,c;t[4]===a?c=t[5]:(c=()=>{a(se)},t[4]=a,t[5]=c);let l=c,u;return t[6]!==l||t[7]!==r||t[8]!==s?(u={entries:r,recordVisit:s,clear:l},t[6]=l,t[7]=r,t[8]=s,t[9]=u):u=t[9],u}var X=e(c(),1);function me(e){return e===null?null:`${e.activeMatchOrdinal}/${e.matches}`}function Z(e){let t=(0,J.c)(9),{icon:n,label:r,disabled:i,onClick:a,shortcut:o}=e,s=o?`${r} (${o.label})`:r,c=o?.ariaKeyshortcuts,l;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(l=N(`flex shrink-0 items-center justify-center transition-colors hover:bg-state-hover hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-40`,h,f),t[0]=l):l=t[0];let u;t[1]===n?u=t[2]:(u=(0,X.jsx)(y,{name:n,"aria-hidden":!0}),t[1]=n,t[2]=u);let d;return t[3]!==s||t[4]!==i||t[5]!==a||t[6]!==c||t[7]!==u?(d=(0,X.jsx)(`button`,{type:`button`,onClick:a,disabled:i,"aria-label":s,"aria-keyshortcuts":c,className:l,children:u}),t[3]=s,t[4]=i,t[5]=a,t[6]=c,t[7]=u,t[8]=d):d=t[8],d}function he(e){let t=(0,J.c)(36),{inputRef:n,query:r,matches:i,onQueryChange:a,onFindNext:o,onFindPrevious:s,onClose:c,shortcut:l}=e,u;t[0]===i?u=t[1]:(u=me(i),t[0]=i,t[1]=u);let d=u,f=i!==null&&i.matches>0,p=i!==null&&i.matches===0,m;t[2]!==c||t[3]!==o||t[4]!==s?(m=e=>{if(!e.nativeEvent.isComposing){if(e.key===`Enter`){e.preventDefault(),e.shiftKey?s():o();return}e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),c())}},t[2]=c,t[3]=o,t[4]=s,t[5]=m):m=t[5];let h=m,g;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(g=N(`flex h-9 shrink-0 items-center gap-1 border-b border-border/70 py-1 pl-2 pr-2`,ne),t[6]=g):g=t[6];let _;t[7]===a?_=t[8]:(_=e=>a(e.target.value),t[7]=a,t[8]=_);let v=l?`Find in page (${l.label})`:`Find in page`,y=l?.ariaKeyshortcuts,b;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(b=N(`min-w-0 flex-1 bg-transparent text-foreground outline-none placeholder:text-muted-foreground`,I),t[9]=b):b=t[9];let x;t[10]!==h||t[11]!==n||t[12]!==r||t[13]!==_||t[14]!==v||t[15]!==y?(x=(0,X.jsx)(`input`,{ref:n,type:`text`,value:r,onChange:_,onKeyDown:h,placeholder:`Find in page`,"aria-label":v,"aria-keyshortcuts":y,autoComplete:`off`,spellCheck:!1,maxLength:j,className:b}),t[10]=h,t[11]=n,t[12]=r,t[13]=_,t[14]=v,t[15]=y,t[16]=x):x=t[16];let S;t[17]!==d||t[18]!==p?(S=d===null?null:(0,X.jsx)(`span`,{"data-testid":`browser-find-match-count`,"aria-live":`polite`,className:N(`shrink-0 tabular-nums`,p?`text-destructive`:`text-muted-foreground`,I),children:d}),t[17]=d,t[18]=p,t[19]=S):S=t[19];let C;t[20]!==x||t[21]!==S?(C=(0,X.jsxs)(`div`,{className:`flex h-7 min-w-0 flex-1 items-center gap-2 rounded-md border border-border/70 bg-background/70 px-2`,children:[x,S]}),t[20]=x,t[21]=S,t[22]=C):C=t[22];let w=!f,T;t[23]!==s||t[24]!==w?(T=(0,X.jsx)(Z,{icon:`ChevronUp`,label:`Previous match`,disabled:w,onClick:s}),t[23]=s,t[24]=w,t[25]=T):T=t[25];let E=!f,D;t[26]!==o||t[27]!==E?(D=(0,X.jsx)(Z,{icon:`ChevronDown`,label:`Next match`,disabled:E,onClick:o}),t[26]=o,t[27]=E,t[28]=D):D=t[28];let O;t[29]===c?O=t[30]:(O=(0,X.jsx)(Z,{icon:`X`,label:`Close find bar`,onClick:c}),t[29]=c,t[30]=O);let k;return t[31]!==C||t[32]!==T||t[33]!==D||t[34]!==O?(k=(0,X.jsxs)(`div`,{"data-testid":`browser-find-bar`,role:`search`,"aria-label":`Find in page`,className:g,children:[C,T,D,O]}),t[31]=C,t[32]=T,t[33]=D,t[34]=O,t[35]=k):k=t[35],k}function ge(e){let t=(0,J.c)(17),n,r,i;t[0]===e?(n=t[1],r=t[2],i=t[3]):({onFocus:r,onBlur:n,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i);let a=(0,q.useRef)(null),o=(0,q.useRef)(!1),s,c;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(s=()=>{let e=()=>{o.current=!0,a.current=null},t=()=>{o.current=!1};return window.addEventListener(`blur`,e),window.addEventListener(`keydown`,t,!0),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`keydown`,t,!0)}},c=[],t[4]=s,t[5]=c):(s=t[4],c=t[5]),(0,q.useEffect)(s,c);let l,u,d;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(l=e=>{a.current=e.button===0&&(o.current||document.activeElement!==e.currentTarget)?{x:e.clientX,y:e.clientY}:null,o.current=!1},u=e=>{let t=a.current;t!==null&&Math.hypot(e.clientX-t.x,e.clientY-t.y)>4&&(a.current=null)},d=e=>{a.current!==null&&(a.current=null,e.preventDefault(),e.currentTarget.select())},t[6]=l,t[7]=u,t[8]=d):(l=t[6],u=t[7],d=t[8]);let f;t[9]===r?f=t[10]:(f=e=>{a.current===null&&!o.current&&e.currentTarget.select(),r?.(e)},t[9]=r,t[10]=f);let p;t[11]===n?p=t[12]:(p=e=>{a.current=null,n?.(e)},t[11]=n,t[12]=p);let m;return t[13]!==i||t[14]!==f||t[15]!==p?(m=(0,X.jsx)(`input`,{type:`text`,placeholder:`Enter a URL`,autoComplete:`off`,spellCheck:!1,...i,onMouseDown:l,onMouseMove:u,onMouseUp:d,onFocus:f,onBlur:p}),t[13]=i,t[14]=f,t[15]=p,t[16]=m):m=t[16],m}function _e(e){let t=(0,J.c)(27),{entry:n,now:r,onNavigate:i}=e,a;t[0]===n.url?a=t[1]:(a=U(n.url),t[0]=n.url,t[1]=a);let o=a,s;t[2]===n.title?s=t[3]:(s=n.title?.trim(),t[2]=n.title,t[3]=s);let c=s,l=c&&c.length>0?c:o,u;t[4]!==n.visitedAt||t[5]!==r?(u=b({timestamp:n.visitedAt,now:r}),t[4]=n.visitedAt,t[5]=r,t[6]=u):u=t[6];let d=u,f;t[7]!==n.url||t[8]!==i?(f=()=>i(n.url),t[7]=n.url,t[8]=i,t[9]=f):f=t[9];let p=n.url,m;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(m=N(K,`hover:bg-state-hover`),t[10]=m):m=t[10];let h;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,X.jsx)(`span`,{className:re,children:(0,X.jsx)(y,{name:`Browser`,className:g,"aria-hidden":!0})}),t[11]=h):h=t[11];let _;t[12]===l?_=t[13]:(_=(0,X.jsx)(`span`,{className:`truncate text-foreground`,children:l}),t[12]=l,t[13]=_);let v;t[14]!==o||t[15]!==l?(v=l===o?null:(0,X.jsx)(`span`,{className:`truncate font-mono text-muted-foreground [flex-shrink:9999]`,children:o}),t[14]=o,t[15]=l,t[16]=v):v=t[16];let x;t[17]!==_||t[18]!==v?(x=(0,X.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-1.5`,children:[_,v]}),t[17]=_,t[18]=v,t[19]=x):x=t[19];let S;t[20]===d?S=t[21]:(S=(0,X.jsx)(G,{idle:d,isActive:!1}),t[20]=d,t[21]=S);let C;return t[22]!==n.url||t[23]!==x||t[24]!==S||t[25]!==f?(C=(0,X.jsxs)(`button`,{type:`button`,onClick:f,title:p,className:m,children:[h,x,S]}),t[22]=n.url,t[23]=x,t[24]=S,t[25]=f,t[26]=C):C=t[26],C}function ve(e){let t=(0,J.c)(17),{onNavigateInput:n,recent:r,onClearRecent:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=Date.now(),t[0]=a):a=t[0];let o=a;if(r.length===0)return null;let s=r.length,c;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(c=N(`rounded text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`,I),t[1]=c):c=t[1];let l;t[2]===i?l=t[3]:(l=(0,X.jsx)(`button`,{type:`button`,onClick:i,"aria-label":`Clear recently visited`,className:c,children:`Clear`}),t[2]=i,t[3]=l);let u;t[4]!==r.length||t[5]!==l?(u=(0,X.jsx)(W,{label:`Recently visited`,count:s,action:l}),t[4]=r.length,t[5]=l,t[6]=u):u=t[6];let d;if(t[7]!==n||t[8]!==r){let e;t[10]===n?e=t[11]:(e=e=>(0,X.jsx)(`li`,{children:(0,X.jsx)(_e,{entry:e,now:o,onNavigate:n})},e.url),t[10]=n,t[11]=e),d=r.map(e),t[7]=n,t[8]=r,t[9]=d}else d=t[9];let f;t[12]===d?f=t[13]:(f=(0,X.jsx)(`ul`,{"aria-label":`Recently visited`,className:`flex flex-col gap-px`,children:d}),t[12]=d,t[13]=f);let p;return t[14]!==u||t[15]!==f?(p=(0,X.jsx)(`div`,{className:`flex h-full flex-col overflow-y-auto px-4 pb-6 pt-8`,children:(0,X.jsx)(`div`,{className:`mx-auto flex w-full max-w-xl flex-col gap-6`,children:(0,X.jsxs)(`section`,{children:[u,f]})})}),t[14]=u,t[15]=f,t[16]=p):p=t[16],p}function ye({desktopBrowser:e,pluginId:t,tabId:n}){let r=e?.evaluate,i=e?.onPageMessage;return r===void 0||i===void 0?null:{async evaluate(e,i){let a=await r({tabId:n,expression:e,world:i?.world??`isolated`,channel:t});if(!a.ok)throw Error(a.error);return a.value},onMessage(e){return i(r=>{r.tabId===n&&r.channel===t&&e(r.data)})}}}function be(e){let t=(0,J.c)(18),{slot:n,threadId:r,tabId:i,url:a,isCompactViewport:o}=e,s;t[0]!==n.pluginId||t[1]!==i?(s=ye({desktopBrowser:D(),pluginId:n.pluginId,tabId:i}),t[0]=n.pluginId,t[1]=i,t[2]=s):s=t[2];let c=s,l=n.component,u=`${r}/${i}`,d;t[3]!==l||t[4]!==o||t[5]!==c||t[6]!==i||t[7]!==r||t[8]!==a?(d=(0,X.jsx)(l,{threadId:r,tabId:i,url:a,isCompactViewport:o,experimental_page:c}),t[3]=l,t[4]=o,t[5]=c,t[6]=i,t[7]=r,t[8]=a,t[9]=d):d=t[9];let f;t[10]!==n.title||t[11]!==d?(f=(0,X.jsx)(`span`,{role:`group`,"aria-label":n.title,className:`flex shrink-0 items-center`,children:d}),t[10]=n.title,t[11]=d,t[12]=f):f=t[12];let p;return t[13]!==n.id||t[14]!==n.pluginId||t[15]!==u||t[16]!==f?(p=(0,X.jsx)(C,{pluginId:n.pluginId,slotKind:`browserToolbarAction`,slotId:n.id,instanceId:u,crashFallback:null,children:f}),t[13]=n.id,t[14]=n.pluginId,t[15]=u,t[16]=f,t[17]=p):p=t[17],p}function xe(e){let t=(0,J.c)(11),{threadId:n,tabId:r,url:i,isCompactViewport:a}=e,{browserToolbarActions:o}=m();if(o.length===0)return null;let s;if(t[0]!==o||t[1]!==a||t[2]!==r||t[3]!==n||t[4]!==i){let e;t[6]!==a||t[7]!==r||t[8]!==n||t[9]!==i?(e=e=>(0,X.jsx)(be,{slot:e,threadId:n,tabId:r,url:i,isCompactViewport:a},`${e.pluginId}/${e.id}/${e.generation}/${n}/${r}`),t[6]=a,t[7]=r,t[8]=n,t[9]=i,t[10]=e):e=t[10],s=o.map(e),t[0]=o,t[1]=a,t[2]=r,t[3]=n,t[4]=i,t[5]=s}else s=t[5];return s}var Se={x:0,y:0,width:0,height:0};function Ce(e){return{x:Math.round(e.left),y:Math.round(e.top),width:Math.round(e.width),height:Math.round(e.height)}}function we(){return{width:window.innerWidth,height:window.innerHeight}}function Te(e){return F({bounds:Ce(e.element.getBoundingClientRect()),viewport:we()})}function Ee(e){return e===`flex-grow`||e===`flex-basis`}function De(e){return e.a.x===e.b.x&&e.a.y===e.b.y&&e.a.width===e.b.width&&e.a.height===e.b.height}function Oe(e){return z(e.url)?`Server not reachable`:e.errorText.includes(`ERR_BLOCKED_BY_CLIENT`)?`Page blocked`:`Page unavailable`}function ke(e){let t=(0,J.c)(48),{addressDraft:n,isEditing:r,state:i,currentUrl:a,addressInputRef:o,onAddressChange:s,onAddressFocus:c,onAddressBlur:l,onAddressKeyDown:u,onSubmit:d,onBack:f,onForward:p,onReloadOrStop:m,onOpenExternal:h,locationShortcut:g,reloadShortcut:v,pluginActions:b}=e,x=i?.isLoading??!1,S;t[0]===a?S=t[1]:(S=V(a),t[0]=a,t[1]=S);let C=S,w=r?n:a,T,E;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(T=N(`relative h-11 shrink-0 overflow-hidden focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-ring max-md:pointer-coarse:h-[52px]`,ne),E=N(`absolute inset-x-0 top-0 flex h-11 translate-y-0 items-center gap-1 py-1.5 pl-2 pr-4 opacity-100 max-md:pointer-coarse:h-[52px]`),t[2]=T,t[3]=E):(T=t[2],E=t[3]);let D=!(i?.canGoBack??!1),O;t[4]!==f||t[5]!==D?(O=(0,X.jsx)(Z,{icon:`ChevronLeft`,label:`Go back`,disabled:D,onClick:f}),t[4]=f,t[5]=D,t[6]=O):O=t[6];let k=!(i?.canGoForward??!1),A;t[7]!==p||t[8]!==k?(A=(0,X.jsx)(Z,{icon:`ChevronRight`,label:`Go forward`,disabled:k,onClick:p}),t[7]=p,t[8]=k,t[9]=A):A=t[9];let j=x?`X`:`RotateCcw`,ee=x?`Stop loading`:`Reload`,te=x?null:v,M;t[10]!==m||t[11]!==te||t[12]!==j||t[13]!==ee?(M=(0,X.jsx)(Z,{icon:j,label:ee,shortcut:te,onClick:m}),t[10]=m,t[11]=te,t[12]=j,t[13]=ee,t[14]=M):M=t[14];let P;t[15]===C?P=t[16]:(P=C===`secure`?(0,X.jsx)(y,{name:`Lock`,className:N(_,`text-success`),"aria-label":`Secure connection`}):C===`insecure`?(0,X.jsx)(y,{name:`AlertTriangle`,className:N(_,`text-warning`),"aria-label":`Connection not secure`}):(0,X.jsx)(y,{name:`Search`,className:N(_,`text-muted-foreground`),"aria-hidden":!0}),t[15]=C,t[16]=P);let F;t[17]===s?F=t[18]:(F=e=>s(e.target.value),t[17]=s,t[18]=F);let L=g?`Address and search bar (${g.label})`:`Address and search bar`,R=g?.ariaKeyshortcuts,z;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(z=N(`min-w-0 flex-1 bg-transparent font-mono text-foreground outline-none placeholder:font-sans placeholder:text-muted-foreground`,I),t[19]=z):z=t[19];let B;t[20]!==o||t[21]!==w||t[22]!==l||t[23]!==c||t[24]!==u||t[25]!==F||t[26]!==L||t[27]!==R?(B=(0,X.jsx)(ge,{ref:o,value:w,onChange:F,onFocus:c,onBlur:l,onKeyDown:u,"aria-label":L,"aria-keyshortcuts":R,className:z}),t[20]=o,t[21]=w,t[22]=l,t[23]=c,t[24]=u,t[25]=F,t[26]=L,t[27]=R,t[28]=B):B=t[28];let H;t[29]!==P||t[30]!==B?(H=(0,X.jsxs)(`div`,{className:`flex h-8 items-center gap-2 rounded-full border border-border/70 bg-background/70 px-3 max-md:pointer-coarse:h-10`,children:[P,B]}),t[29]=P,t[30]=B,t[31]=H):H=t[31];let U;t[32]!==d||t[33]!==H?(U=(0,X.jsx)(`form`,{onSubmit:d,className:`min-w-0 flex-1`,children:H}),t[32]=d,t[33]=H,t[34]=U):U=t[34];let W=a.length===0,G;t[35]!==h||t[36]!==W?(G=(0,X.jsx)(Z,{icon:`ExternalLink`,label:`Open in external browser`,disabled:W,onClick:h}),t[35]=h,t[36]=W,t[37]=G):G=t[37];let K;t[38]===x?K=t[39]:(K=x?(0,X.jsx)(`span`,{className:`absolute inset-x-0 bottom-0 h-0.5 overflow-hidden`,children:(0,X.jsx)(`span`,{className:`block h-full w-1/3 animate-pulse bg-ring/70 motion-reduce:animate-none`})}):null,t[38]=x,t[39]=K);let re;return t[40]!==b||t[41]!==M||t[42]!==U||t[43]!==G||t[44]!==K||t[45]!==O||t[46]!==A?(re=(0,X.jsx)(`div`,{role:`region`,"aria-label":`Browser navigation`,tabIndex:-1,className:T,children:(0,X.jsxs)(`div`,{className:E,children:[O,A,M,U,b,G,K]})}),t[40]=b,t[41]=M,t[42]=U,t[43]=G,t[44]=K,t[45]=O,t[46]=A,t[47]=re):re=t[47],re}function Ae(){let e=(0,J.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,X.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-3 px-6 text-center`,children:[(0,X.jsx)(`span`,{className:`flex size-11 items-center justify-center rounded-lg border border-border bg-card text-muted-foreground`,children:(0,X.jsx)(y,{name:`Globe`,className:`size-6`,"aria-hidden":!0})}),(0,X.jsx)(`div`,{className:`text-sm font-medium text-foreground`,children:`Browser tabs need the desktop app`}),(0,X.jsx)(`p`,{className:N(`max-w-xs text-muted-foreground`,I),children:`The in-app web browser runs in the Moonlet desktop app. Open this thread there to browse the web.`})]}),e[0]=t):t=e[0],t}function je(e){let t=(0,J.c)(32),{errorText:n,onOpenExternal:r,onRetry:i,url:a}=e,o;t[0]===a?o=t[1]:(o=U(a),t[0]=a,t[1]=o);let s=o,c;t[2]!==n||t[3]!==a?(c=Oe({errorText:n,url:a}),t[2]=n,t[3]=a,t[4]=c):c=t[4];let l=c,u;t[5]!==s||t[6]!==a?(u=z(a)?`The browser could not reach ${s||`this local server`}. Start the server, then reload.`:`The browser could not load this page. Try reloading or opening it externally.`,t[5]=s,t[6]=a,t[7]=u):u=t[7];let d=u,f;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,X.jsx)(`span`,{className:`flex size-11 items-center justify-center rounded-lg border border-border bg-surface-recessed text-muted-foreground`,children:(0,X.jsx)(y,{name:`Globe`,className:`size-6`,"aria-hidden":!0})}),t[8]=f):f=t[8];let p;t[9]===l?p=t[10]:(p=(0,X.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:l}),t[9]=l,t[10]=p);let m;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(m=N(`mt-1 text-muted-foreground`,I),t[11]=m):m=t[11];let h;t[12]===d?h=t[13]:(h=(0,X.jsx)(`p`,{className:m,children:d}),t[12]=d,t[13]=h);let g;t[14]!==p||t[15]!==h?(g=(0,X.jsxs)(`div`,{children:[p,h]}),t[14]=p,t[15]=h,t[16]=g):g=t[16];let _;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,X.jsx)(y,{name:`RotateCcw`,className:`size-3.5`,"aria-hidden":!0}),t[17]=_):_=t[17];let v;t[18]===i?v=t[19]:(v=(0,X.jsxs)(`button`,{type:`button`,onClick:i,className:`inline-flex h-8 items-center gap-1.5 rounded-md border border-border bg-background px-2.5 text-xs font-medium text-foreground transition-colors hover:bg-state-hover`,children:[_,`Reload`]}),t[18]=i,t[19]=v);let b;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,X.jsx)(y,{name:`ExternalLink`,className:`size-3.5`,"aria-hidden":!0}),t[20]=b):b=t[20];let x;t[21]===r?x=t[22]:(x=(0,X.jsxs)(`button`,{type:`button`,onClick:r,className:`inline-flex h-8 items-center gap-1.5 rounded-md px-2.5 text-xs font-medium text-muted-foreground transition-colors hover:bg-state-hover hover:text-foreground`,children:[b,`Open externally`]}),t[21]=r,t[22]=x);let S;t[23]!==v||t[24]!==x?(S=(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center justify-center gap-2 pt-1`,children:[v,x]}),t[23]=v,t[24]=x,t[25]=S):S=t[25];let C;t[26]===n?C=t[27]:(C=(0,X.jsx)(`p`,{className:`max-w-full truncate pt-1 font-mono text-[11px] text-subtle-foreground`,children:n}),t[26]=n,t[27]=C);let w;return t[28]!==S||t[29]!==C||t[30]!==g?(w=(0,X.jsx)(`div`,{className:`flex h-full flex-col items-center justify-center px-6 text-center`,children:(0,X.jsxs)(`div`,{className:`flex w-full max-w-sm flex-col items-center gap-3`,children:[f,g,S,C]})}),t[28]=S,t[29]=C,t[30]=g,t[31]=w):w=t[31],w}function Me({tabId:e,desktopTarget:t,existingOnly:n,initialUrl:r,addressFocusRequest:i,onAddressFocusRequestConsumed:a,canShowNativeBrowserView:o,canHandleBrowserCommands:s=o,onNativeFocus:c,visibilityCoordinator:l,environmentId:u,threadId:d,onUpdate:f,onOpenInNewTab:m}){let h=p(`browser.focusLocation`),g=p(`browser.reload`),_=p(`browser.find`),v=(0,q.useMemo)(()=>D(),[]),y=(0,q.useRef)(null),b=(0,q.useRef)(null),S=(0,q.useRef)(null),C=L(),A=T(),{entries:ee,recordVisit:te,clear:M}=pe(d),[N,F]=(0,q.useState)(null),[I,z]=(0,q.useState)(null);(0,q.useEffect)(()=>{let t=!0,n=!1;z(null);let r=n=>{t&&n.tabId===e&&n.threadId===d&&z(n.control)},i=v?.onControl?.(t=>{t.tabId!==e||t.threadId!==d||(n=!0,r(t))});return v?.getControl?.(e).then(e=>{e!==null&&!n&&r(e)}).catch(()=>void 0),()=>{t=!1,i?.()}},[v,e,d]);let[V,U]=(0,q.useState)(r),[ne,W]=(0,q.useState)(r),[G,K]=(0,q.useState)(!1),[re,J]=(0,q.useState)(!1),[ie,ae]=(0,q.useState)(!1),oe=(0,q.useRef)(!1);oe.current=ie;let[Y,se]=(0,q.useState)(``),[ce,le]=(0,q.useState)(null),[ue,de]=(0,q.useState)(null),fe=(0,q.useRef)(f),me=(0,q.useRef)(te);fe.current=f,me.current=te;let Z=(0,q.useRef)(r),ge=(0,q.useRef)(n),_e=(0,q.useRef)(t),[ye,be]=(0,q.useState)(null),Ce=ye!==null&&ye.environmentId===u&&ye.tabId===e&&ye.threadId===d,we=V.length>0,Oe=v?.focus!==void 0&&v.onFocus!==void 0&&v.setVisibleWithoutFocus!==void 0,Me=N?.errorText??null,Ne=Me!==null&&we,Pe=B(),Fe=(0,q.useRef)(null),Ie=(0,q.useCallback)(()=>{let e=y.current;return e===null?null:Te({element:e})},[]),Le=(0,q.useCallback)(t=>{v!==null&&(Fe.current=t,v.setBounds({tabId:e,bounds:t}))},[v,e]),Re=(0,q.useCallback)(({force:e})=>{let t=Ie();if(t===null)return;let n=Fe.current;!e&&n!==null&&De({a:n,b:t})||Le(t)},[Ie,Le]),ze=(0,q.useCallback)(()=>{Re({force:!0})},[Re]),Q=(0,q.useCallback)(()=>{Re({force:!1})},[Re]),Be=(0,q.useCallback)(()=>{let e=Ie();return Fe.current=e,e??Se},[Ie]);(0,q.useEffect)(()=>{if(v===null)return;let t=Be(),n=Z.current;O({environmentId:u,tabId:e,threadId:d});let r=_e.current,i=ge.current===!0&&(r===void 0||!k(e,r));v.attach({tabId:e,threadId:d,...i?{existingOnly:!0}:{},url:n,bounds:t,visible:!1}),be({environmentId:u,tabId:e,threadId:d});let a=null,o=v.onState(t=>{t.tabId===e&&(a!==null&&(a.url!==t.url||t.isLoading&&!a.isLoading)&&le(null),a=t,F(t),U(t.url),fe.current({tabId:e,url:t.url,title:t.title}),!t.isLoading&&t.url.length>0&&me.current({url:t.url,title:t.title}))}),s=v.onSnapshot?.(t=>{t.tabId===e&&de(t.dataUrl)}),c=v.onFindResult?.(t=>{t.tabId===e&&le({activeMatchOrdinal:t.activeMatchOrdinal,matches:t.matches})});return()=>{o(),s?.(),c?.(),oe.current&&v.stopFindInPage?.({tabId:e,action:`clearSelection`}),l?.release(e)}},[v,u,Be,l,e,d]),(0,q.useEffect)(()=>{let e=y.current;if(e===null||v===null)return;let t=new ResizeObserver(()=>{Q()});return t.observe(e),()=>{t.disconnect()}},[v,Q]),(0,q.useEffect)(()=>{if(v===null)return;let e=e=>{Ee(e.propertyName)&&Q()};return window.addEventListener(x,Q),window.addEventListener(`resize`,Q),document.addEventListener(`transitionend`,e,!0),document.addEventListener(`transitioncancel`,e,!0),()=>{window.removeEventListener(x,Q),window.removeEventListener(`resize`,Q),document.removeEventListener(`transitionend`,e,!0),document.removeEventListener(`transitioncancel`,e,!0)}},[v,Q]);let Ve=o&&(s||Oe)&&we&&!Ne&&Ce&&!Pe;(0,q.useLayoutEffect)(()=>{if(l!==null){if(Ve)return l.show(e,ze,{focus:!1}),()=>{l.hide(e)};l.hide(e)}},[l,e,Ve,ze]),(0,q.useLayoutEffect)(()=>{if(re){if(!o||!s||Ne||Pe){J(!1);return}Ve&&(J(!1),v?.focus?.(e))}},[re,o,s,Ne,Pe,Ve,v,e]),(0,q.useEffect)(()=>{if(!(v?.onFocus===void 0||c===void 0))return v.onFocus(t=>{t===e&&c()})},[v,c,e]),(0,q.useEffect)(()=>{if(i===null||i.tabId!==e)return;if(C){a?.(i);return}W(V),K(!0),b.current?.focus({preventScroll:!0});let t=requestAnimationFrame(()=>{b.current?.focus({preventScroll:!0}),a?.(i)});return()=>cancelAnimationFrame(t)},[i,V,C,a,e]);let He=(0,q.useCallback)(t=>{let n=H(t);n!==null&&(U(n),K(!1),b.current?.blur(),v?.navigate({tabId:e,url:n}),J(!0))},[v,e]),Ue=(0,q.useCallback)(e=>{e.preventDefault(),He(ne)},[ne,He]),We=(0,q.useCallback)(e=>{if(e.nativeEvent.isComposing)return;if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),W(V);let t=e.currentTarget;window.requestAnimationFrame(()=>{document.activeElement===t&&t.select()});return}if(m===null||e.key!==`Enter`||e.shiftKey||e.ctrlKey||!(w(P())?e.metaKey&&!e.altKey:e.altKey&&!e.metaKey))return;e.preventDefault();let t=H(ne);t!==null&&(W(V),K(!1),b.current?.blur(),m(t))},[ne,V,m]),Ge=(0,q.useCallback)(()=>{W(V),K(!0)},[V]),Ke=(0,q.useCallback)(()=>{if(N?.isLoading??!1){v?.stop(e);return}v?.reload(e)},[v,N?.isLoading,e]);E(`browser.focusLocation`,(0,q.useCallback)(()=>!s||v===null?!1:(W(V),K(!0),b.current?.focus({preventScroll:!0}),window.requestAnimationFrame(()=>{b.current?.focus({preventScroll:!0}),b.current?.select()}),!0),[s,V,v]),100);let qe=o&&v!==null&&v.findInPage!==void 0&&we,$=(0,q.useCallback)(t=>{v?.findInPage?.({tabId:e,...t})},[v,e]),Je=(0,q.useCallback)(()=>{v?.stopFindInPage?.({tabId:e,action:`clearSelection`}),le(null)},[v,e]),Ye=(0,q.useCallback)(()=>{S.current?.focus({preventScroll:!0}),window.requestAnimationFrame(()=>{S.current?.focus({preventScroll:!0}),S.current?.select()})},[]),Xe=(0,q.useCallback)(e=>{let t=e.slice(0,j);if(se(t),t.length===0){Je();return}$({text:t,forward:!0,newSession:!0})},[Je,$]),Ze=(0,q.useCallback)(()=>{Y.length!==0&&$({text:Y,forward:!0,newSession:!1})},[Y,$]),Qe=(0,q.useCallback)(()=>{Y.length!==0&&$({text:Y,forward:!1,newSession:!1})},[Y,$]),$e=(0,q.useCallback)(()=>{ae(!1),Je()},[Je]);E(`browser.find`,(0,q.useCallback)(()=>qe?(ae(!0),Y.length>0&&$({text:Y,forward:!0,newSession:!0}),Ye(),!0):!1,[qe,Y,Ye,$]),100),(0,q.useEffect)(()=>{ie&&!qe&&(ae(!1),Je())},[qe,Je,ie]),E(`browser.reload`,()=>!s||v===null||!we?!1:(v.reload(e),!0),100);let et=(0,q.useCallback)(()=>{R()?.openExternalUrl(V)},[V]);return v===null?(0,X.jsx)(Ae,{}):(0,X.jsxs)(`div`,{"data-app-browser":!0,className:`flex h-full min-h-0 flex-col`,children:[(0,X.jsx)(ke,{addressDraft:ne,isEditing:G,state:N,currentUrl:V,addressInputRef:b,onAddressChange:W,onAddressFocus:Ge,onAddressBlur:()=>K(!1),onAddressKeyDown:We,onSubmit:Ue,onBack:()=>{v.goBack(e)},onForward:()=>{v.goForward(e)},onReloadOrStop:Ke,onOpenExternal:et,locationShortcut:h,reloadShortcut:g,pluginActions:(0,X.jsx)(xe,{threadId:d,tabId:e,url:V,isCompactViewport:A})}),I===null?null:(0,X.jsxs)(`div`,{role:`status`,className:`flex shrink-0 items-center gap-3 border-b border-border bg-surface-recessed px-3 py-2 text-xs`,children:[(0,X.jsxs)(`span`,{className:`min-w-0 flex-1 truncate`,children:[I.controllerLabel,` is controlling this tab`]}),(0,X.jsx)(`button`,{type:`button`,className:`rounded px-2 py-1 hover:bg-state-hover`,onClick:()=>v.releaseControl?.(e),children:`Stop`}),(0,X.jsx)(`button`,{type:`button`,className:`rounded px-2 py-1 hover:bg-state-hover`,onClick:()=>{v.releaseControl?.(e),v.focus?.(e)},children:`Take over`})]}),ie?(0,X.jsx)(he,{inputRef:S,query:Y,matches:ce,onQueryChange:Xe,onFindNext:Ze,onFindPrevious:Qe,onClose:$e,shortcut:_}):null,(0,X.jsxs)(`div`,{ref:y,className:`relative min-h-0 flex-1`,children:[Ne?(0,X.jsx)(je,{errorText:Me,onOpenExternal:et,onRetry:Ke,url:V}):we&&!Pe?null:(0,X.jsx)(ve,{onNavigateInput:He,recent:ee,onClearRecent:M}),we&&ue!==null?(0,X.jsx)(`img`,{src:ue,alt:``,draggable:!1,className:`absolute inset-0 size-full`}):null]})]})}function Ne(e,t){return t===null?null:e.find(e=>e.id===t)??null}var Pe=4,Fe=32,Ie=2e3;function Le(e){return Math.min(250*2**(e-1),Ie)}function Re(e,t){if(e===void 0)return`open`;if(t.status===`pending`)return`pending`;let n=t.target;return n===null||n.hostId!==e.hostId?`unavailable`:n.instanceId===e.instanceId?`attach`:`check-saved-window`}function ze(e){let t=(0,J.c)(40),{browserTabs:n,activeBrowserTabId:r,addressFocusRequest:i,onAddressFocusRequestConsumed:a,environmentId:o,canShowNativeBrowserView:s,canHandleBrowserCommands:c,onNativeFocus:l,threadId:u,onUpdate:d,onOpenInNewTab:f}=e,p=i===void 0?null:i,m=c===void 0?s:c,h;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(h=D(),t[0]=h):h=t[0];let g=h,_;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(_=g===null?null:ee(g),t[1]=_):_=t[1];let v=_,y=Ne(n,r),b=y?.desktopTarget,x=b?.hostId,S;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(S=()=>g?.getTarget===void 0?{status:`ready`,target:null}:{status:`pending`},t[2]=S):S=t[2];let[C,w]=(0,q.useState)(S),[T,E]=(0,q.useState)(0),O=b===void 0?null:`${y?.id}:${T}:${b.hostId}:${b.instanceId}:${b.generation}`,[k,A]=(0,q.useState)(null),j;t[3]!==O||t[4]!==A?(j=()=>{let e=g?.getTarget?.bind(g);if(e===void 0)return;let t=!0,n=0,r,i=()=>{e().catch(Be).then(e=>{if(t){if(e!==null){w({status:`ready`,target:e});return}if(n+=1,n>=Pe&&w({status:`ready`,target:null}),n>=Fe){A(O);return}r=setTimeout(i,Le(n))}})};return i(),()=>{t=!1,clearTimeout(r)}},t[3]=O,t[4]=A,t[5]=j):j=t[5],(0,q.useEffect)(j,[g,x,b?.instanceId,b?.generation,O]);let M=Re(b,C),N=M===`check-saved-window`?O:null,[P,F]=(0,q.useState)(null),I=b?.instanceId,L;t[6]!==O||t[7]!==I||t[8]!==N||t[9]!==A||t[10]!==x?(L=()=>{if(N===null||x===void 0||I===void 0)return;let e=!0,t=0,n,r=()=>{te.experimental_desktopBrowsers.listInstances({hostId:x}).then(t=>{let{instances:n}=t;e&&F({key:N,status:n.some(e=>e.instanceId===I)?`live`:`gone`})},()=>{if(e){if(t+=1,t>=Pe&&F({key:N,status:`unknown`}),t>=Fe){A(O);return}n=setTimeout(r,Le(t))}})};return r(),()=>{e=!1,clearTimeout(n)}},t[6]=O,t[7]=I,t[8]=N,t[9]=A,t[10]=x,t[11]=L):L=t[11];let R;if(t[12]!==O||t[13]!==I||t[14]!==N||t[15]!==x?(R=[N,x,I,O],t[12]=O,t[13]=I,t[14]=N,t[15]=x,t[16]=R):R=t[16],(0,q.useEffect)(L,R),y===null)return null;let z=P?.key===N?P.status:null,B=O!==null&&k===O;if(M===`pending`||M===`check-saved-window`&&z===null){let e;return t[17]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,X.jsx)(`div`,{className:`flex min-h-0 flex-1 bg-sidebar`}),t[17]=e):e=t[17],e}if(M===`unavailable`||M===`check-saved-window`&&z!==`gone`){let e;t[18]!==B||t[19]!==z||t[20]!==E?(e=B||z===`live`?()=>E(Q):null,t[18]=B,t[19]=z,t[20]=E,t[21]=e):e=t[21];let n=g===null?`desktop-required`:z===`live`?`other-window`:C.status===`ready`&&C.target!==null&&C.target.hostId!==b?.hostId?`other-computer`:B?`unreachable`:`reconnecting`,r;return t[22]!==y.url||t[23]!==n||t[24]!==e?(r=(0,X.jsx)(He,{url:y.url,onRetry:e,reason:n}),t[22]=y.url,t[23]=n,t[24]=e,t[25]=r):r=t[25],r}let V=M===`attach`?!0:void 0,H=p?.tabId===y.id?p:null,U;return t[26]!==y.id||t[27]!==y.url||t[28]!==m||t[29]!==s||t[30]!==o||t[31]!==a||t[32]!==l||t[33]!==f||t[34]!==d||t[35]!==H||t[36]!==V||t[37]!==b||t[38]!==u?(U=(0,X.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col bg-sidebar`,children:(0,X.jsx)(Me,{tabId:y.id,desktopTarget:b,existingOnly:V,initialUrl:y.url,addressFocusRequest:H,onAddressFocusRequestConsumed:a,canShowNativeBrowserView:s,canHandleBrowserCommands:m,onNativeFocus:l,visibilityCoordinator:v,environmentId:o,threadId:u,onUpdate:d,onOpenInNewTab:f},y.id)}),t[26]=y.id,t[27]=y.url,t[28]=m,t[29]=s,t[30]=o,t[31]=a,t[32]=l,t[33]=f,t[34]=d,t[35]=H,t[36]=V,t[37]=b,t[38]=u,t[39]=U):U=t[39],U}function Q(e){return e+1}function Be(){return null}var Ve={"desktop-required":{title:`Browser tabs need the desktop app`,body:`This tab is open in the Moonlet desktop app.`},"other-window":{title:`This tab is open in another Moonlet window`,body:`Switch to that window to keep browsing.`},"other-computer":{title:`This tab is open on another computer`,body:`It was opened in Moonlet on a different computer.`},reconnecting:{title:`Reconnecting to this tab`,body:`The tab opens again as soon as Moonlet reconnects.`},unreachable:{title:`Can't reach this tab`,body:`Moonlet couldn't reconnect. Try again in a moment.`}};function He(e){let t=(0,J.c)(24),{url:n,reason:r,onRetry:i}=e,a=Ve[r],o;t[0]===n?o=t[1]:(o=URL.canParse(n)?new URL(n):null,t[0]=n,t[1]=o);let s=o,c=s?.protocol===`https:`||s?.protocol===`http:`,l;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,X.jsx)(`span`,{className:`flex size-11 items-center justify-center rounded-lg border border-border bg-card text-muted-foreground`,children:(0,X.jsx)(y,{name:`Globe`,className:`size-6`,"aria-hidden":!0})}),t[2]=l):l=t[2];let u;t[3]===a.title?u=t[4]:(u=(0,X.jsx)(`div`,{className:`text-sm font-medium text-foreground`,children:a.title}),t[3]=a.title,t[4]=u);let d;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(d=N(`max-w-xs text-muted-foreground`,I),t[5]=d):d=t[5];let f;t[6]===a.body?f=t[7]:(f=(0,X.jsx)(`p`,{className:d,children:a.body}),t[6]=a.body,t[7]=f);let p;t[8]===n?p=t[9]:(p=n.length>0?(0,X.jsx)(`p`,{className:N(`max-w-full truncate font-mono text-muted-foreground select-text`,I),title:n,children:n}):null,t[8]=n,t[9]=p);let m;t[10]===i?m=t[11]:(m=i===null?null:(0,X.jsxs)(M,{type:`button`,variant:`outline`,size:`sm`,onClick:i,children:[(0,X.jsx)(y,{name:`RotateCcw`,"aria-hidden":!0}),`Try again`]}),t[10]=i,t[11]=m);let h;t[12]!==c||t[13]!==i||t[14]!==n?(h=n.length>0?(0,X.jsxs)(X.Fragment,{children:[c?(0,X.jsxs)(M,{type:`button`,variant:i===null?`outline`:`ghost`,size:`sm`,onClick:()=>A(n),children:[(0,X.jsx)(y,{name:`ExternalLink`,"aria-hidden":!0}),`Open in browser`]}):null,(0,X.jsxs)(M,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>{S(n,{successMessage:`Link copied`})},children:[(0,X.jsx)(y,{name:`Copy`,"aria-hidden":!0}),`Copy link`]})]}):null,t[12]=c,t[13]=i,t[14]=n,t[15]=h):h=t[15];let g;t[16]!==m||t[17]!==h?(g=(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center justify-center gap-2`,children:[m,h]}),t[16]=m,t[17]=h,t[18]=g):g=t[18];let _;return t[19]!==u||t[20]!==f||t[21]!==p||t[22]!==g?(_=(0,X.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col items-center justify-center gap-3 bg-sidebar px-6 text-center`,children:[l,u,f,p,g]}),t[19]=u,t[20]=f,t[21]=p,t[22]=g,t[23]=_):_=t[23],_}export{ze as BrowserTabDeck};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Or as t,mi as n,ni as r,zr as i}from"./boot-vendor-BBLG7GwQ.js";import{Cp as a,Ha as o,Ja as s,Jp as c,Kp as l,Xf as u,oh as d}from"./index-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Or as t,mi as n,ni as r,zr as i}from"./boot-vendor-BBLG7GwQ.js";import{Cp as a,Ha as o,Ja as s,Jp as c,Kp as l,Xf as u,oh as d}from"./index-B_0TBqOi.js";import{i as f,n as p,r as m,t as h}from"./PaletteShell-CPrD4CCm.js";import{n as g}from"./settings-sections-Bo9wVSLf.js";import{r as _,t as v}from"./settings-nav-6vCwAb5Y.js";var y=e(n(),1),b=t();function x(){let e=typeof window>`u`?void 0:window.bbDesktop;return e?.getServerChoices&&e.onServerChoicesChange&&e.selectServer?{list:e.getServerChoices.bind(e),subscribe:e.onServerChoicesChange.bind(e),select:e.selectServer.bind(e)}:null}function ee(){let e=(0,b.c)(7),[t]=(0,y.useState)(x),n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[],e[0]=n):n=e[0];let[r,i]=(0,y.useState)(n),a,o;e[1]===t?(a=e[2],o=e[3]):(a=()=>{if(t===null)return;let e=!1,n=!1,r=t.subscribe(t=>{n=!0,e||i(t)});return t.list().then(t=>{!e&&!n&&i(t)}).catch(S),()=>{e=!0,r()}},o=[t],e[1]=t,e[2]=a,e[3]=o),(0,y.useEffect)(a,o);let s=t?.select,c;return e[4]!==r||e[5]!==s?(c={choices:r,select:s},e[4]=r,e[5]=s,e[6]=c):c=e[6],c}function S(){}var te=[`Threads`,`Actions`,`Settings`,`Plugins`];function ne(e){return[...e.sections.map(t=>({id:`settings:${t.id}`,bucket:`Settings`,group:`Settings`,title:`${t.label} settings`,shortcut:null,run:()=>e.navigate(g(t.id))})),...e.pluginEntries.map(t=>({id:`settings:plugin:${t.id}`,bucket:`Settings`,group:`Plugin settings`,title:`${t.label} settings`,shortcut:null,run:()=>e.navigate(l({pluginId:t.id}))}))]}function re(e){return e.panels.map(t=>({id:`plugin-page:${t.pluginId}/${t.id}`,bucket:`Plugins`,group:`Plugin pages`,title:t.title,shortcut:null,run:()=>e.navigate(c({pluginId:t.pluginId,path:t.path}))}))}var C=e(r(),1),ie=s(`thread.search`);function ae(e){let t=(0,b.c)(60),{actions:n,installedPlugins:r,recents:s,query:c,onQueryChange:l,onChoose:d}=e,m=i(),g=u(),x=(0,y.useId)(),S=(0,y.useId)(),[ae,w]=(0,y.useState)(0),T=a(),de=v(T.fileOpeners),E;t[0]!==r||t[1]!==T.settingsSections?(E=_({installedPlugins:r,settingsSections:T.settingsSections}),t[0]=r,t[1]=T.settingsSections,t[2]=E):E=t[2];let fe=E,D;t[3]===m?D=t[4]:(D=e=>void m(e),t[3]=m,t[4]=D);let O;t[5]!==fe||t[6]!==de||t[7]!==D?(O=ne({navigate:D,pluginEntries:fe,sections:de}),t[5]=fe,t[6]=de,t[7]=D,t[8]=O):O=t[8];let pe=O,k;t[9]===m?k=t[10]:(k=e=>void m(e),t[9]=m,t[10]=k);let A;t[11]!==T.navPanels||t[12]!==k?(A=re({navigate:k,panels:T.navPanels}),t[11]=T.navPanels,t[12]=k,t[13]=A):A=t[13];let me=A,{choices:he,select:j}=ee(),M;t[14]!==he||t[15]!==j?(M=j===void 0?[]:he.filter(le).map(e=>({id:`server:${e.id}`,title:`Switch to ${e.name}`,bucket:`Actions`,group:`Servers`,shortcut:null,run:()=>j(e.id)})),t[14]=he,t[15]=j,t[16]=M):M=t[16];let N=M,P;t[17]!==n||t[18]!==me||t[19]!==N||t[20]!==pe?(P=[...n,...pe,...me,...N],t[17]=n,t[18]=me,t[19]=N,t[20]=pe,t[21]=P):P=t[21];let ge=P,F;t[22]===c?F=t[23]:(F=c.startsWith(`>`)?c.slice(1):c,t[22]=c,t[23]=F);let I=F,L;t[24]!==ge||t[25]!==I||t[26]!==s?(L=f({actions:ge,query:I,recentIds:s}),t[24]=ge,t[25]=I,t[26]=s,t[27]=L):L=t[27];let R=L,z;t[28]===I?z=t[29]:(z=I.trim(),t[28]=I,t[29]=z);let B=z===``,V;if(t[30]!==R){let e=te.map(e=>({bucket:e,entries:R.filter(t=>t.action.bucket===e)})).filter(ce);V=e.map((t,n)=>({...t,startIndex:e.slice(0,n).reduce(se,0)})),t[30]=R,t[31]=V}else V=t[31];let H=V,U;t[32]!==B||t[33]!==R||t[34]!==H?(U=B?H.flatMap(oe):R,t[32]=B,t[33]=R,t[34]=H,t[35]=U):U=t[35];let W=U,G=W.length===0?-1:Math.min(ae,W.length-1),K=(0,y.useRef)(null),q=(0,y.useRef)(!1),J;t[36]===Symbol.for(`react.memo_cache_sentinel`)?(J=()=>{q.current&&(q.current=!1,K.current?.querySelector(`[aria-selected="true"]`)?.scrollIntoView({block:`nearest`}))},t[36]=J):J=t[36];let Y;t[37]===G?Y=t[38]:(Y=[G],t[37]=G,t[38]=Y),(0,y.useEffect)(J,Y);let X;t[39]!==G||t[40]!==d||t[41]!==W?(X=e=>{if(!e.nativeEvent.isComposing&&W.length!==0){if(e.key===`ArrowDown`){e.preventDefault(),q.current=!0,w(e=>e+1>=W.length?0:e+1);return}if(e.key===`ArrowUp`){e.preventDefault(),q.current=!0,w(e=>e<=0?W.length-1:e-1);return}if(e.key===`Home`){e.preventDefault(),q.current=!0,w(0);return}if(e.key===`End`){e.preventDefault(),q.current=!0,w(W.length-1);return}if(e.key===`Enter`){let t=W[G];if(t===void 0)return;e.preventDefault(),d(t.action)}}},t[39]=G,t[40]=d,t[41]=W,t[42]=X):X=t[42];let _e=X,ve=G===-1?void 0:`${S}-${G}`,Z;t[43]===l?Z=t[44]:(Z=e=>{l(e),w(0),K.current!==null&&(K.current.scrollTop=0)},t[43]=l,t[44]=Z);let Q;t[45]!==G||t[46]!==g||t[47]!==B||t[48]!==d||t[49]!==S||t[50]!==H||t[51]!==W?(Q=!B&&W.length===0?(0,C.jsx)(`p`,{className:`px-3 py-4 text-center text-sm text-muted-foreground`,children:`No matching commands`}):B?H.map(e=>{let t=`${S}-${e.bucket.toLowerCase()}-label`;return(0,C.jsxs)(`div`,{role:`group`,"aria-labelledby":t,"data-palette-bucket":e.bucket,children:[(0,C.jsx)(`div`,{id:t,className:h,children:e.bucket}),e.entries.map((t,n)=>{let r=e.startIndex+n;return(0,C.jsx)(ue,{entry:t,id:`${S}-${r}`,isActive:r===G,isDrillIn:t.action.id===ie,showShortcut:!g,onActivate:()=>{w(r)},onSelect:()=>d(t.action)},t.action.id)})]},e.bucket)}):W.map((e,t)=>(0,C.jsx)(ue,{entry:e,id:`${S}-${t}`,isActive:t===G,isDrillIn:e.action.id===ie,showShortcut:!g,onActivate:()=>{w(t)},onSelect:()=>d(e.action)},e.action.id)),t[45]=G,t[46]=g,t[47]=B,t[48]=d,t[49]=S,t[50]=H,t[51]=W,t[52]=Q):Q=t[52];let $;return t[53]!==_e||t[54]!==x||t[55]!==c||t[56]!==ve||t[57]!==Z||t[58]!==Q?($=(0,C.jsx)(p,{activeDescendantId:ve,inputDescription:o.description,inputLabel:o.label,listId:x,listLabel:`Commands`,listRef:K,onInputChange:Z,onInputKeyDown:_e,placeholder:o.placeholder,value:c,children:Q}),t[53]=_e,t[54]=x,t[55]=c,t[56]=ve,t[57]=Z,t[58]=Q,t[59]=$):$=t[59],$}function oe(e){return e.entries}function se(e,t){return e+t.entries.length}function ce(e){return e.entries.length>0}function le(e){return!e.active}function ue(e){let t=(0,b.c)(19),{entry:n,id:r,isActive:i,isDrillIn:a,showShortcut:o,onActivate:s,onSelect:c}=e,l=n.action.group===`Browser`||n.action.id.startsWith(`plugin:`)?n.action.group:null,u=a?`${n.action.title}…`:n.action.title,f=o?n.action.shortcut:null,p=l!==null||f!==null||a,h=a?`drill-in`:`terminal`,g=i&&`bg-state-hover text-foreground`,_;t[0]===g?_=t[1]:(_=d(`flex min-h-8 w-full min-w-0 cursor-pointer items-center gap-3 rounded-md px-2 py-1.5 text-left text-sm outline-none`,g),t[0]=g,t[1]=_);let v;t[2]!==n.positions||t[3]!==u?(v=(0,C.jsx)(`span`,{className:`min-w-0 truncate`,children:(0,C.jsx)(w,{title:u,positions:n.positions})}),t[2]=n.positions,t[3]=u,t[4]=v):v=t[4];let y;t[5]!==p||t[6]!==a||t[7]!==l||t[8]!==f?(y=p?(0,C.jsxs)(`span`,{className:`ml-auto flex shrink-0 items-center gap-2`,children:[l===null?null:(0,C.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:l}),f===null?null:(0,C.jsx)(m,{children:f.label}),a?(0,C.jsx)(`span`,{className:`sr-only`,children:`Opens a search view`}):null]}):null,t[5]=p,t[6]=a,t[7]=l,t[8]=f,t[9]=y):y=t[9];let x;return t[10]!==r||t[11]!==i||t[12]!==s||t[13]!==c||t[14]!==h||t[15]!==_||t[16]!==v||t[17]!==y?(x=(0,C.jsxs)(`div`,{id:r,role:`option`,"aria-selected":i,"data-palette-action-kind":h,className:_,onPointerMove:s,onClick:c,children:[v,y]}),t[10]=r,t[11]=i,t[12]=s,t[13]=c,t[14]=h,t[15]=_,t[16]=v,t[17]=y,t[18]=x):x=t[18],x}function w(e){let t=(0,b.c)(9),{title:n,positions:r}=e;if(r.length===0){let e;return t[0]===n?e=t[1]:(e=(0,C.jsx)(C.Fragment,{children:n}),t[0]=n,t[1]=e),e}let i;t[2]===r?i=t[3]:(i=new Set(r),t[2]=r,t[3]=i);let a=i,o;t[4]===n?o=t[5]:(o=[...n],t[4]=n,t[5]=o);let s;return t[6]!==a||t[7]!==o?(s=(0,C.jsx)(C.Fragment,{children:o.map((e,t)=>a.has(t)?(0,C.jsx)(`span`,{className:`font-semibold text-foreground`,children:e},t):(0,C.jsx)(`span`,{children:e},t))}),t[6]=a,t[7]=o,t[8]=s):s=t[8],s}export{ae as CommandPaletteBody};
|