synabun 2.0.9 → 2.0.10
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/CHANGELOG.md +29 -0
- package/README.md +1 -1
- package/THIRD-PARTY-LICENSES.md +46 -4
- package/launcher.mjs +9 -3
- package/lib/start-launcher.js +6 -1
- package/mcp-server/package-lock.json +2 -2
- package/mcp-server/package.json +1 -1
- package/neural-interface/i18n/en.json +218 -7
- package/neural-interface/i18n/pt-BR.json +220 -9
- package/neural-interface/lib/account-usage.js +5 -3
- package/neural-interface/lib/app-controls-api.js +161 -0
- package/neural-interface/lib/assistant-api.js +21 -7
- package/neural-interface/lib/assistant-brains/opencode.js +13 -1
- package/neural-interface/lib/assistant-brains/opencode2-browser-policy/index.js +44 -0
- package/neural-interface/lib/assistant-brains/opencode2-route-gate/index.js +57 -0
- package/neural-interface/lib/assistant-catalog.js +17 -2
- package/neural-interface/lib/assistant-dispatch.js +3 -0
- package/neural-interface/lib/assistant-envelope.js +19 -1
- package/neural-interface/lib/assistant-runtime.js +127 -8
- package/neural-interface/lib/claude-model-catalog.js +64 -14
- package/neural-interface/lib/codex-settings-schema.js +109 -47
- package/neural-interface/lib/editor-completion-opencode.js +132 -35
- package/neural-interface/lib/exec-loop-command.js +8 -1
- package/neural-interface/lib/launch-cache.js +293 -0
- package/neural-interface/lib/login-start.js +524 -0
- package/neural-interface/lib/native-loop-providers.js +18 -3
- package/neural-interface/lib/native-loop-runtime.js +19 -0
- package/neural-interface/lib/opencode-db-schema.js +75 -0
- package/neural-interface/lib/opencode-history.js +16 -1
- package/neural-interface/lib/opencode-protocol.js +173 -0
- package/neural-interface/lib/opencode-provider-view.js +81 -0
- package/neural-interface/lib/opencode-runtime-config.js +10 -3
- package/neural-interface/lib/opencode-serve-records.js +606 -0
- package/neural-interface/lib/opencode-v2-client.js +33 -6
- package/neural-interface/lib/opencode-v2-ws-requests.js +19 -5
- package/neural-interface/lib/opencode-worker-activity.js +229 -0
- package/neural-interface/lib/opencode2-client.js +760 -0
- package/neural-interface/lib/opencode2-proxy.js +116 -0
- package/neural-interface/lib/opencode2-translate.js +1008 -0
- package/neural-interface/lib/process-identity.js +361 -0
- package/neural-interface/lib/session-cache-builder.js +26 -5
- package/neural-interface/lib/session-title-generator.js +18 -0
- package/neural-interface/lib/style-guide/api.js +4 -3
- package/neural-interface/lib/untrusted-file-headers.js +27 -0
- package/neural-interface/package-lock.json +1343 -45
- package/neural-interface/package.json +5 -1
- package/neural-interface/public/index.html +2 -2
- package/neural-interface/public/shared/agent-runtime-options.js +55 -11
- package/neural-interface/public/shared/assistant/asst-agents-dock.js +172 -17
- package/neural-interface/public/shared/assistant/asst-api.js +11 -3
- package/neural-interface/public/shared/assistant/asst-brain-picker.js +195 -80
- package/neural-interface/public/shared/assistant/asst-composer.js +1 -1
- package/neural-interface/public/shared/assistant/asst-hosts.js +49 -2
- package/neural-interface/public/shared/assistant/asst-menu.js +77 -6
- package/neural-interface/public/shared/assistant/asst-panel.js +197 -33
- package/neural-interface/public/shared/assistant/asst-rack-styles.js +28 -10
- package/neural-interface/public/shared/assistant/asst-redact.js +186 -0
- package/neural-interface/public/shared/assistant/asst-render.js +382 -36
- package/neural-interface/public/shared/assistant/asst-run-stage.js +231 -0
- package/neural-interface/public/shared/assistant/asst-sanitize.js +193 -3
- package/neural-interface/public/shared/assistant/asst-scene-styles.js +273 -0
- package/neural-interface/public/shared/assistant/asst-scenes.js +528 -0
- package/neural-interface/public/shared/assistant/asst-sidepanel-styles.js +3 -15
- package/neural-interface/public/shared/assistant/asst-state.js +14 -0
- package/neural-interface/public/shared/assistant/asst-styles.js +43 -0
- package/neural-interface/public/shared/assistant/asst-tool-kinds.js +13 -1
- package/neural-interface/public/shared/cc-dropdown.js +480 -0
- package/neural-interface/public/shared/cdx/cdx-panel.js +13 -1
- package/neural-interface/public/shared/cdx/cdx-render.js +15 -3
- package/neural-interface/public/shared/cdx/cdx-styles.js +4 -0
- package/neural-interface/public/shared/cdx/cdx-tabs.js +149 -35
- package/neural-interface/public/shared/cp/cp-markdown.js +4 -57
- package/neural-interface/public/shared/data-cache.js +223 -0
- package/neural-interface/public/shared/desktop-bridge.js +11 -0
- package/neural-interface/public/shared/desktop-titlebar-view.js +78 -1
- package/neural-interface/public/shared/desktop-titlebar.js +214 -28
- package/neural-interface/public/shared/desktop-update-view.js +15 -5
- package/neural-interface/public/shared/file-links.js +73 -8
- package/neural-interface/public/shared/html-shell.js +74 -80
- package/neural-interface/public/shared/launch-prefetch.js +59 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-caps.js +3 -2
- package/neural-interface/public/shared/ocp-v2/ocp-v2-childpanel.js +7 -2
- package/neural-interface/public/shared/ocp-v2/ocp-v2-modelpicker.js +54 -17
- package/neural-interface/public/shared/ocp-v2/ocp-v2-panel.js +93 -2
- package/neural-interface/public/shared/ocp-v2/ocp-v2-projectbar.js +3 -2
- package/neural-interface/public/shared/ocp-v2/ocp-v2-providers.js +11 -9
- package/neural-interface/public/shared/ocp-v2/ocp-v2-rehydrate.js +15 -4
- package/neural-interface/public/shared/ocp-v2/ocp-v2-render.js +1 -1
- package/neural-interface/public/shared/ocp-v2/ocp-v2-send-logic.js +401 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-send.js +16 -9
- package/neural-interface/public/shared/ocp-v2/ocp-v2-sessions-logic.js +60 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-styles.js +48 -19
- package/neural-interface/public/shared/ocp-v2/ocp-v2-ws.js +195 -19
- package/neural-interface/public/shared/opencode-providers.js +39 -0
- package/neural-interface/public/shared/schedules-view.js +318 -0
- package/neural-interface/public/shared/settings/settings-app-pane.js +335 -0
- package/neural-interface/public/shared/settings/settings-app.js +243 -0
- package/neural-interface/public/shared/settings/settings-data.js +88 -0
- package/neural-interface/public/shared/settings/settings-ia.js +17 -0
- package/neural-interface/public/shared/sidepanel-session-status.js +49 -0
- package/neural-interface/public/shared/styles.css +540 -371
- package/neural-interface/public/shared/ui-assistant.js +27 -5
- package/neural-interface/public/shared/ui-automation-studio.js +67 -27
- package/neural-interface/public/shared/ui-bookmarks.js +2 -1
- package/neural-interface/public/shared/ui-claude-panel.js +76 -8
- package/neural-interface/public/shared/ui-codex-panel.js +1 -0
- package/neural-interface/public/shared/ui-detail.js +6 -6
- package/neural-interface/public/shared/ui-file-links.js +1 -0
- package/neural-interface/public/shared/ui-image-gallery.js +6 -5
- package/neural-interface/public/shared/ui-invite.js +18 -2
- package/neural-interface/public/shared/ui-link.js +9 -9
- package/neural-interface/public/shared/ui-menubar.js +232 -33
- package/neural-interface/public/shared/ui-native-loop-router.js +2 -0
- package/neural-interface/public/shared/ui-opencode-panel-v2.js +1 -0
- package/neural-interface/public/shared/ui-schedules-studio.js +2099 -869
- package/neural-interface/public/shared/ui-sessions.js +15 -4
- package/neural-interface/public/shared/ui-settings.js +87 -36
- package/neural-interface/public/shared/ui-sidebar.js +4 -4
- package/neural-interface/public/shared/ui-sidepanel-session-entry.js +13 -0
- package/neural-interface/public/shared/ui-sidepanel-sessions.js +55 -4
- package/neural-interface/public/shared/ui-sidepanel-tray.js +84 -8
- package/neural-interface/public/shared/ui-skills.js +70 -12
- package/neural-interface/public/shared/ui-sync.js +7 -0
- package/neural-interface/public/shared/ui-terminal.js +36 -20
- package/neural-interface/public/shared/ui-trash.js +8 -1
- package/neural-interface/public/shared/ui-tutorial-steps.js +7 -3
- package/neural-interface/public/shared/ui-tutorial.js +15 -5
- package/neural-interface/public/shared/ui-update.js +83 -14
- package/neural-interface/public/shared/ui-whiteboard.js +2 -1
- package/neural-interface/public/variant/2d/main.js +4 -1
- package/neural-interface/public/variant/3d/main.js +3 -0
- package/neural-interface/public/vendor/highlight/LICENSE +29 -0
- package/neural-interface/public/vendor/highlight/github-dark-dimmed-11.12.0.min.css +9 -0
- package/neural-interface/public/vendor/highlight/highlight-11.12.0.min.js +1262 -0
- package/neural-interface/public/vendor/highlight/manifest.json +5 -0
- package/neural-interface/public/vendor/html2canvas/LICENSE +22 -0
- package/neural-interface/public/vendor/html2canvas/html2canvas-1.4.1.min.js +20 -0
- package/neural-interface/public/vendor/html2canvas/manifest.json +4 -0
- package/neural-interface/public/vendor/marked/LICENSE.md +44 -0
- package/neural-interface/public/vendor/marked/manifest.json +4 -0
- package/neural-interface/public/vendor/marked/marked-14.1.4.esm.js +2502 -0
- package/neural-interface/public/vendor/mermaid/LICENSE +21 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/abnfDiagram-PAR5IXJI.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/architecture-7GRP2DOG-M7G3SWCO.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/architectureDiagram-2PNWDENW.mjs +36 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/blockDiagram-PUWGUBOA.mjs +129 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/c4Diagram-3NLNHZP5.mjs +38 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-2NMSUPJH.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-32MCUW2P.mjs +206 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-3NPNU5GP.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-3SMGFRGC.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-4CAJECRU.mjs +14 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-4OADUZ5Q.mjs +10 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-5IMINLNL.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-5IQCK5RY.mjs +3 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-5MVFYWFU.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-AQ6EADP3.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-AZZRMDJM.mjs +15 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-CLS4B6BI.mjs +168 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-DZP67EKU.mjs +70 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-EICP7K5X.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-GDY2UAB4.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-H7VHZCWX.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-IJBDOHL6.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-JFFVMJIA.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-JQRUD6KW.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-JZGDI5JK.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-KD6SPIPN.mjs +2 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-NF366YI6.mjs +231 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-NUDPKBEF.mjs +32 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-OJINMHTS.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-Q6NGPIAH.mjs +2 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-QJSWEUOL.mjs +132 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-R7JDMUKV.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-RCXAM2GK.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-RT4MAWR3.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-SFMINX4W.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-SLDQ463B.mjs +88 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-STOV2HOB.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-T5OCTHI4.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-TCEHX7R3.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-VQC2EELJ.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-VRZKL3EH.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-VTHDQ7BV.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-VY2OSTJR.mjs +2 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-WUBWJARI.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-YBMQ5JGJ.mjs +2 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-YDMLL4PJ.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-Z6V44ARX.mjs +62 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZJJ7VQJP.mjs +339 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZNLK7HRR.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZQN7UHIL.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZS6VBONO.mjs +174 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZUNWM646.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/classDiagram-FGAMPOII.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/classDiagram-v2-AI5RJEK4.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/cose-bilkent-Q72C2OJ3.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/cynefin-OW5HDTMX-6OCTWOGG.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/cynefinDiagram-2OOWUY4M.mjs +62 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/dagre-MPVFI544.mjs +4 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-AE4NWXFW.mjs +24 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-BUJID5UG.mjs +41 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-C44CZ5NI.mjs +24 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-EYOLEXXS.mjs +30 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-P7B6PWOJ.mjs +3 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/ebnfDiagram-FTPZ3PV6.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/erDiagram-H3ERR26V.mjs +99 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/eventmodeling-NTZA5JFV-WKSWQHFS.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/flowDiagram-YHGXBVSY.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/ganttDiagram-RWFTB7ED.mjs +292 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/gitGraph-4MIJSDKK-JH2HKYUO.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/gitGraphDiagram-MAR6GKOP.mjs +106 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/info-A6RAGUB7-3TX3OFWW.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/infoDiagram-LV547AFH.mjs +2 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/ishikawaDiagram-PUJQGNDS.mjs +70 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/journeyDiagram-EW5QJT4W.mjs +139 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/kanban-definition-JSQERAZB.mjs +89 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/katex-CZ4GXH2S.mjs +257 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/mindmap-definition-VBJCLQLM.mjs +96 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/packet-AYTQ26CC-MKII6P3Y.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/pegDiagram-7WILOQTJ.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/pie-WAS4IAKB-6B4OPMJ5.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/pieDiagram-EFA7CBSB.mjs +39 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/quadrantDiagram-WARVYA7P.mjs +7 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/radar-RG4KPBEZ-UPTR3XUL.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroad-74A4TZTK-MEFUPFMS.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroad-abnf-HS5TGJTU-R5YG2S5D.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroad-ebnf-LZEXJU2U-G5QEX2L6.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroad-peg-WCYAUIDC-H5I2ZRY2.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroadDiagram-5NIQVNLQ.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/requirementDiagram-SXREGOKZ.mjs +84 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/sankeyDiagram-VV74M2VP.mjs +40 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/sequenceDiagram-52ZFIFDL.mjs +162 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/sizeCapture-FGA5AGYP.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/stateDiagram-3QAKPIVI.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/stateDiagram-v2-HN2P4RDZ.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/swimlanes-QLVP42QD.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/swimlanesDiagram-JKPDBFCN.mjs +8 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/timeline-definition-GS45XAXW.mjs +120 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/treeView-Q6P3EWNA-ZRJGANNQ.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/treemap-WGGIJYW6-K64VN5AS.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/vennDiagram-QIQU2ZRJ.mjs +34 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/wardley-WFR3VGLG-D67OWCCH.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/wardleyDiagram-U6YNM66N.mjs +78 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/xychartDiagram-XJAZEDNM.mjs +7 -0
- package/neural-interface/public/vendor/mermaid/manifest.json +4 -0
- package/neural-interface/public/vendor/mermaid/mermaid-11.17.2.esm.min.mjs +14 -0
- package/neural-interface/scripts/build-vendor.mjs +84 -3
- package/neural-interface/server.js +1099 -286
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/skills/synabun/modules/schedule.md +1 -1
|
@@ -31,7 +31,7 @@ const NAMES = {
|
|
|
31
31
|
apps: ['[data-menu="apps"] > .menubar-label', 'nav.apps'],
|
|
32
32
|
browser: ['#menu-terminal-browser', 'menu.apps.browser'],
|
|
33
33
|
studio: ['#menu-open-automation-studio', 'menu.automations.studio'],
|
|
34
|
-
schedules: ['#
|
|
34
|
+
schedules: ['#menubar-schedules-btn', 'tutorial.names.schedules'],
|
|
35
35
|
keybinds: ['#topright-keybinds-btn', 'tutorial.names.keybinds'],
|
|
36
36
|
settings: ['#menubar-settings-btn', 'nav.settings'],
|
|
37
37
|
projects: [null, 'settings.redesign.nav.projects.label'],
|
|
@@ -81,7 +81,8 @@ function names() {
|
|
|
81
81
|
// A tooltip may end in its shortcut: "Focus Mode (V)".
|
|
82
82
|
out[name] = label?.replace(/\s*\([^)]*\)\s*$/, '').trim() || t(key);
|
|
83
83
|
}
|
|
84
|
-
|
|
84
|
+
// 2D: the Graph menu's label. 3D: the label of the Map row in Apps, which opens its submenu.
|
|
85
|
+
out.menu = document.querySelector('[data-menu="graph"] > .menubar-label, #menu-map-label')?.textContent.trim()
|
|
85
86
|
|| t(getVariant() === '2d' ? 'nav.graph' : 'nav.map');
|
|
86
87
|
out.view = out.menu.toLocaleLowerCase();
|
|
87
88
|
return out;
|
|
@@ -111,10 +112,18 @@ function resolveStep(step) {
|
|
|
111
112
|
|
|
112
113
|
// ── What the tour changes to show a step, and puts back ──
|
|
113
114
|
|
|
115
|
+
// The dropdown a step opens, which can differ per variant ({ '3d': 'apps' }).
|
|
116
|
+
const stepMenu = (step) => (step.menu && typeof step.menu === 'object' ? step.menu[getVariant()] : step.menu) || null;
|
|
117
|
+
// The submenu of that dropdown the step opens, by its data-submenu name ({ '3d': 'map' }).
|
|
118
|
+
const stepSubmenu = (step) => (step.submenu && typeof step.submenu === 'object' ? step.submenu[getVariant()] : step.submenu) || null;
|
|
119
|
+
|
|
114
120
|
function showStage(step) {
|
|
121
|
+
const menu = stepMenu(step);
|
|
115
122
|
for (const [el, open] of menuState) {
|
|
116
|
-
if (el.isConnected) el.classList.toggle('open',
|
|
123
|
+
if (el.isConnected) el.classList.toggle('open', menu ? el.dataset.menu === menu : open);
|
|
117
124
|
}
|
|
125
|
+
// ui-menubar.js opens it beside its row, or closes the one a previous step opened.
|
|
126
|
+
emit('menubar:submenu', menu ? stepSubmenu(step) : null);
|
|
118
127
|
if (step.panel !== 'assistant') { hidePanelPeek(); return; }
|
|
119
128
|
// With no session tab, opening the Assistant starts a session: its button is annotated instead.
|
|
120
129
|
if (panelPeek || isAssistantPanelOpen() || !assistantPanelPeekable()) return;
|
|
@@ -135,6 +144,7 @@ function hidePanelPeek() {
|
|
|
135
144
|
state.lastActivePanel = peek.lastActivePanel; state.lastActiveSidepanel = peek.lastActiveSidepanel;
|
|
136
145
|
}
|
|
137
146
|
function restoreStage() {
|
|
147
|
+
emit('menubar:submenu', null);
|
|
138
148
|
for (const [el, open] of menuState) if (el.isConnected) el.classList.toggle('open', open);
|
|
139
149
|
hidePanelPeek();
|
|
140
150
|
}
|
|
@@ -352,7 +362,7 @@ function renderStep() {
|
|
|
352
362
|
}
|
|
353
363
|
// A menu or panel the tour just opened is still moving: draw once the target holds still.
|
|
354
364
|
function settle(step, done) {
|
|
355
|
-
const staged = !!step
|
|
365
|
+
const staged = !!stepMenu(step) || (step.panel === 'assistant' && isAssistantPanelOpen());
|
|
356
366
|
// Staged, the target is the control inside the menu or panel, not the fallback outside it.
|
|
357
367
|
const inside = step.targets ? step.targets.length - (step.panel ? 1 : 0) : 0;
|
|
358
368
|
const started = performance.now();
|
|
@@ -441,7 +451,7 @@ function layout(animate) {
|
|
|
441
451
|
|
|
442
452
|
const rects = (selectors) => selectors.flatMap(s => [...document.querySelectorAll(s)])
|
|
443
453
|
.filter(shown).map(el => el.getBoundingClientRect()).filter(r => r.width > 0 && r.height > 0);
|
|
444
|
-
const avoid = rects(['.menubar-item.open .menubar-dropdown']), keep = rects(KEEP_CLEAR);
|
|
454
|
+
const avoid = rects(['.menubar-item.open .menubar-dropdown', '.menubar-item.open .menubar-submenu.open']), keep = rects(KEEP_CLEAR);
|
|
445
455
|
const key = (...values) => values.map(v => Math.round(v)).join(',');
|
|
446
456
|
const flat = (list) => list.flatMap(r => [r.left, r.top, r.width, r.height]);
|
|
447
457
|
// The app redraws itself all the time: nothing the note depends on moved, nothing to do.
|
|
@@ -30,6 +30,31 @@ let _pollWired = false;
|
|
|
30
30
|
let _desktopState = null;
|
|
31
31
|
let _desktopDialog = null;
|
|
32
32
|
|
|
33
|
+
// One update dialog on the page, whichever surface asks for it (the badge, the toast, Notifications, Settings >
|
|
34
|
+
// App, the sessions list, the app's menu or tray, the notice's Details): while one is open another request leaves
|
|
35
|
+
// it as it is, and one still fading out goes at once before the next is drawn, so two never share the page or the
|
|
36
|
+
// ids their labels point at.
|
|
37
|
+
let _updateDialogOverlay = null;
|
|
38
|
+
const _closingUpdateDialogs = new Set();
|
|
39
|
+
|
|
40
|
+
function updateDialogOpen() {
|
|
41
|
+
return !!_updateDialogOverlay;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function claimUpdateDialog(overlay) {
|
|
45
|
+
for (const leaving of _closingUpdateDialogs) leaving.remove();
|
|
46
|
+
_closingUpdateDialogs.clear();
|
|
47
|
+
_updateDialogOverlay = overlay;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function releaseUpdateDialog(overlay) {
|
|
51
|
+
if (_updateDialogOverlay !== overlay) return;
|
|
52
|
+
_updateDialogOverlay = null;
|
|
53
|
+
_closingUpdateDialogs.add(overlay);
|
|
54
|
+
overlay.classList.add('closing');
|
|
55
|
+
setTimeout(() => { overlay.remove(); _closingUpdateDialogs.delete(overlay); }, 150);
|
|
56
|
+
}
|
|
57
|
+
|
|
33
58
|
/** Where an update comes from, as the badge, the toast and the menu name it. */
|
|
34
59
|
export function synabunUpdateSourceLabel(data) {
|
|
35
60
|
const src = data?.source;
|
|
@@ -97,12 +122,15 @@ export async function initUpdate() {
|
|
|
97
122
|
if (!res.ok) return;
|
|
98
123
|
_versionData = await res.json();
|
|
99
124
|
applyTopRightButton(_versionData);
|
|
100
|
-
|
|
125
|
+
// Settings > App: with automatic updates off the server looks only when asked, and the page does not ask by itself.
|
|
126
|
+
if (_versionData?.autoCheck !== false) maybeShowUpdateAlert(_versionData);
|
|
101
127
|
|
|
102
128
|
if (!_pollWired) {
|
|
103
129
|
_pollWired = true;
|
|
104
130
|
setInterval(() => {
|
|
105
|
-
|
|
131
|
+
if (_versionData?.autoCheck === false) return;
|
|
132
|
+
// Passive: with the automatic check off (another tab may have turned it off) the server asks nothing.
|
|
133
|
+
forceCheckSynabunUpdate({ alert: true, passive: true }).catch(() => {});
|
|
106
134
|
}, 30 * 60 * 1000);
|
|
107
135
|
}
|
|
108
136
|
} catch { /* silent — no update UI if check fails */ }
|
|
@@ -110,8 +138,11 @@ export async function initUpdate() {
|
|
|
110
138
|
|
|
111
139
|
// Force a fresh server-side check (bypasses 1h cache via ?force=1) and
|
|
112
140
|
// re-applies the top-right button + badge state. Returns the latest
|
|
113
|
-
// _synabunUpdateCache shape so callers can compose toasts.
|
|
114
|
-
|
|
141
|
+
// _synabunUpdateCache shape so callers can compose toasts. `passive` (a timer,
|
|
142
|
+
// a drawer that refreshes itself, not a person asking): with the automatic
|
|
143
|
+
// check off (Settings > App) the server answers what it last saw and asks npm
|
|
144
|
+
// and GitHub nothing.
|
|
145
|
+
export async function forceCheckSynabunUpdate({ alert = false, passive = false } = {}) {
|
|
115
146
|
// Inside the desktop app the app checks its own release feed; an error is
|
|
116
147
|
// null here, as a failed request is, so callers list it under the errors.
|
|
117
148
|
const desktop = desktopBridge();
|
|
@@ -124,7 +155,7 @@ export async function forceCheckSynabunUpdate({ alert = false } = {}) {
|
|
|
124
155
|
}
|
|
125
156
|
}
|
|
126
157
|
try {
|
|
127
|
-
const res = await fetch(
|
|
158
|
+
const res = await fetch(`/api/system/version?force=1${passive ? '&passive=1' : ''}`);
|
|
128
159
|
if (!res.ok) return null;
|
|
129
160
|
_versionData = await res.json();
|
|
130
161
|
applyTopRightButton(_versionData);
|
|
@@ -142,7 +173,7 @@ export async function forceCheckSynabunUpdate({ alert = false } = {}) {
|
|
|
142
173
|
*/
|
|
143
174
|
export async function syncSynabunUpdateData() {
|
|
144
175
|
const desktop = desktopBridge();
|
|
145
|
-
if (!desktop) return forceCheckSynabunUpdate();
|
|
176
|
+
if (!desktop) return forceCheckSynabunUpdate({ passive: true });
|
|
146
177
|
try {
|
|
147
178
|
return applyDesktopState(await desktop.updates.state(), { alert: false });
|
|
148
179
|
} catch {
|
|
@@ -150,11 +181,41 @@ export async function syncSynabunUpdateData() {
|
|
|
150
181
|
}
|
|
151
182
|
}
|
|
152
183
|
|
|
184
|
+
/**
|
|
185
|
+
* The update state as it is, without a check (Settings > App): the desktop
|
|
186
|
+
* app's last report, or the server's last look. Published to the badge and the
|
|
187
|
+
* dialog, so what a page shows is what Install update opens.
|
|
188
|
+
*/
|
|
189
|
+
export async function refreshSynabunUpdateData() {
|
|
190
|
+
if (desktopBridge()) return syncSynabunUpdateData();
|
|
191
|
+
try {
|
|
192
|
+
const res = await fetch('/api/system/version');
|
|
193
|
+
if (!res.ok) return _versionData;
|
|
194
|
+
_versionData = await res.json();
|
|
195
|
+
applyTopRightButton(_versionData);
|
|
196
|
+
return _versionData;
|
|
197
|
+
} catch {
|
|
198
|
+
return _versionData;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
153
202
|
export function openSynabunUpdateModal() {
|
|
154
203
|
if (!_versionData?.updateAvailable) return;
|
|
155
204
|
openUpdateModal();
|
|
156
205
|
}
|
|
157
206
|
|
|
207
|
+
/** Settings > App > Updates (the page id is its deep link: settings-ia.js). */
|
|
208
|
+
export function openUpdateSettings() {
|
|
209
|
+
import('./ui-settings.js')
|
|
210
|
+
.then((settings) => settings.openSettingsModal({ tab: 'app', scrollTo: 'stg-sec-app-updates', expand: ['stg-sec-app-updates'] }))
|
|
211
|
+
.catch((error) => console.warn('[update] could not open Settings', error));
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/** Settings > App changed the automatic update check of an npm or Git install: the half-hourly look follows it. */
|
|
215
|
+
export function noteSynabunAutoCheck(auto) {
|
|
216
|
+
if (_versionData && !_versionData.desktop) _versionData = { ..._versionData, autoCheck: auto !== false };
|
|
217
|
+
}
|
|
218
|
+
|
|
158
219
|
// Read-only accessor for the Notifications drawer to mirror SynaBun core
|
|
159
220
|
// update state without re-fetching. May be null until initUpdate() resolves.
|
|
160
221
|
export function getSynabunUpdateData() {
|
|
@@ -209,7 +270,8 @@ function applyDesktopState(state, { alert = true } = {}) {
|
|
|
209
270
|
// An offer that waits for the user (macOS: a copy to move to Applications, or one in a folder SynaBun
|
|
210
271
|
// cannot write): one toast per version and session. Every other update downloads and installs by
|
|
211
272
|
// itself, and the notice speaks when there is something to say.
|
|
212
|
-
|
|
273
|
+
// With automatic updates off (Settings > App) every offer waits for the user, so it is said too.
|
|
274
|
+
if (alert && _versionData.updateAvailable && _versionData.status === 'available' && (_versionData.install !== 'restart' || _versionData.autoUpdate === false)) maybeShowUpdateAlert(_versionData);
|
|
213
275
|
emit('synabun-update:changed', _versionData);
|
|
214
276
|
_desktopDialog?.update(_desktopState);
|
|
215
277
|
renderDesktopNotice();
|
|
@@ -373,7 +435,8 @@ function renderDesktopStep(view) {
|
|
|
373
435
|
const actions = view.actions.length ? `
|
|
374
436
|
<div class="tag-delete-modal-actions" style="margin-top:14px">
|
|
375
437
|
${view.actions.map(item => `<button class="action-btn action-btn--${item.kind}" type="button" data-desktop-action="${item.id}" id="desktop-update-${item.id}">${esc(item.label)}</button>`).join('')}
|
|
376
|
-
</div
|
|
438
|
+
</div>
|
|
439
|
+
<p style="margin:10px 0 0"><button class="update-notice-link" type="button" data-desktop-action="settings" id="desktop-update-settings" style="background:none;border:0;padding:0;cursor:pointer;font:inherit;font-size:11px">${esc(desktopT('update.settingsLink'))}</button></p>` : '';
|
|
377
440
|
return `
|
|
378
441
|
<h3 class="update-modal-title" id="desktop-update-title">${working}${esc(view.title)}${pill}</h3>
|
|
379
442
|
${diff}
|
|
@@ -396,7 +459,7 @@ function openDesktopUpdateModal() {
|
|
|
396
459
|
const desktop = desktopBridge();
|
|
397
460
|
if (!desktop) return;
|
|
398
461
|
// One dialog: a second request (the badge, the menu, the tray) leaves the open one as it is.
|
|
399
|
-
if (_desktopDialog) return;
|
|
462
|
+
if (_desktopDialog || updateDialogOpen()) return;
|
|
400
463
|
const viewOf = (state) => desktopUpdateView(state, { t: desktopT, number: desktopNumber, time: desktopTime });
|
|
401
464
|
const first = viewOf(_desktopState);
|
|
402
465
|
if (first.step === 'none') return;
|
|
@@ -590,6 +653,8 @@ function openDesktopUpdateModal() {
|
|
|
590
653
|
|
|
591
654
|
async function act(id) {
|
|
592
655
|
if (working) return;
|
|
656
|
+
// Settings > App > Updates: automatic updates, the version, a check.
|
|
657
|
+
if (id === 'settings') { close(); openUpdateSettings(); return; }
|
|
593
658
|
// Later on a ready update postpones its restart; everywhere else it only closes the dialog.
|
|
594
659
|
if (id === 'later' && view?.step === 'downloaded') {
|
|
595
660
|
close();
|
|
@@ -686,8 +751,7 @@ function openDesktopUpdateModal() {
|
|
|
686
751
|
_desktopDialog = null;
|
|
687
752
|
keepTicking(false);
|
|
688
753
|
window.removeEventListener('keydown', onKey, true);
|
|
689
|
-
overlay
|
|
690
|
-
setTimeout(() => overlay.remove(), 150);
|
|
754
|
+
releaseUpdateDialog(overlay);
|
|
691
755
|
}
|
|
692
756
|
|
|
693
757
|
overlay.addEventListener('click', (e) => {
|
|
@@ -695,6 +759,7 @@ function openDesktopUpdateModal() {
|
|
|
695
759
|
});
|
|
696
760
|
window.addEventListener('keydown', onKey, true);
|
|
697
761
|
_desktopDialog = { overlay, update, close };
|
|
762
|
+
claimUpdateDialog(overlay);
|
|
698
763
|
document.body.appendChild(overlay);
|
|
699
764
|
setStep(first);
|
|
700
765
|
keepTicking(first.ticking);
|
|
@@ -705,6 +770,7 @@ function openDesktopUpdateModal() {
|
|
|
705
770
|
function openUpdateModal() {
|
|
706
771
|
if (!_versionData) return;
|
|
707
772
|
if (_versionData.desktop) { openDesktopUpdateModal(); return; }
|
|
773
|
+
if (updateDialogOpen()) return;
|
|
708
774
|
|
|
709
775
|
let step = 1;
|
|
710
776
|
let backupDone = false;
|
|
@@ -871,7 +937,8 @@ function openUpdateModal() {
|
|
|
871
937
|
<span class="update-ver update-ver--new">v${esc(_versionData.latest)}</span>
|
|
872
938
|
</div>
|
|
873
939
|
<p style="font-size:12px;color:var(--t-muted);margin:12px 0 6px">${srcCopy}</p>
|
|
874
|
-
<p style="font-size:11px;color:var(--t-muted);opacity:.75;margin:0 0
|
|
940
|
+
<p style="font-size:11px;color:var(--t-muted);opacity:.75;margin:0 0 6px">${npmStable}${npmBeta}${gitBit}</p>
|
|
941
|
+
<p style="margin:0 0 18px"><button class="update-notice-link" type="button" id="update-settings" style="background:none;border:0;padding:0;cursor:pointer;font:inherit;font-size:11px">Update settings</button></p>
|
|
875
942
|
<div class="tag-delete-modal-actions">
|
|
876
943
|
<button class="action-btn action-btn--ghost" id="update-cancel">Cancel</button>
|
|
877
944
|
<button class="action-btn action-btn--primary" id="update-next">Next</button>
|
|
@@ -972,6 +1039,8 @@ function openUpdateModal() {
|
|
|
972
1039
|
// Cancel / Done
|
|
973
1040
|
scope.querySelector('#update-cancel')?.addEventListener('click', close);
|
|
974
1041
|
scope.querySelector('#update-done')?.addEventListener('click', close);
|
|
1042
|
+
// Settings > App > Updates: the automatic check, the version, a check now.
|
|
1043
|
+
scope.querySelector('#update-settings')?.addEventListener('click', () => { close(); openUpdateSettings(); });
|
|
975
1044
|
|
|
976
1045
|
// Next
|
|
977
1046
|
scope.querySelector('#update-next')?.addEventListener('click', () => {
|
|
@@ -1167,14 +1236,14 @@ function openUpdateModal() {
|
|
|
1167
1236
|
}
|
|
1168
1237
|
|
|
1169
1238
|
function close() {
|
|
1170
|
-
overlay
|
|
1171
|
-
setTimeout(() => overlay.remove(), 150);
|
|
1239
|
+
releaseUpdateDialog(overlay);
|
|
1172
1240
|
}
|
|
1173
1241
|
|
|
1174
1242
|
// Boot: attach shell once, wire overlay-click-to-close, render initial step.
|
|
1175
1243
|
overlay.addEventListener('click', (e) => {
|
|
1176
1244
|
if (e.target === overlay) close();
|
|
1177
1245
|
});
|
|
1246
|
+
claimUpdateDialog(overlay);
|
|
1178
1247
|
document.body.appendChild(overlay);
|
|
1179
1248
|
syncStepDots();
|
|
1180
1249
|
setStep(1);
|
|
@@ -903,7 +903,8 @@ function updateElementDOM(dom, el) {
|
|
|
903
903
|
svg.setAttribute('viewBox', `0 0 ${w} ${h}`);
|
|
904
904
|
svg.setAttribute('width', w);
|
|
905
905
|
svg.setAttribute('height', h);
|
|
906
|
-
|
|
906
|
+
// The colour is whatever whiteboard_add / whiteboard_update was given: an attribute value, never markup.
|
|
907
|
+
const sc = String(el.color || 'rgba(255,255,255,0.8)').replace(/[&"<>]/g, (c) => ({ '&': '&', '"': '"', '<': '<', '>': '>' })[c]);
|
|
907
908
|
if (shape === 'drawn-circle') {
|
|
908
909
|
svg.innerHTML = `<path d="${generateDrawnCirclePath(w, h, el.id)}" fill="none" stroke="${sc}" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>`;
|
|
909
910
|
} else {
|
|
@@ -46,7 +46,8 @@ import { initCostWidget } from '../../shared/ui-cost-widget.js';
|
|
|
46
46
|
import { initGames, clearGameOnLoad } from '../../shared/ui-games.js';
|
|
47
47
|
import { initWorkspaces } from '../../shared/ui-workspaces.js';
|
|
48
48
|
import { initInvite } from '../../shared/ui-invite.js';
|
|
49
|
-
import { initSync } from '../../shared/ui-sync.js';
|
|
49
|
+
import { initSync, isGuest } from '../../shared/ui-sync.js';
|
|
50
|
+
import { startLaunchPrefetch } from '../../shared/launch-prefetch.js';
|
|
50
51
|
import { initKeybinds, registerAction, getDisplayKey } from '../../shared/ui-keybinds.js';
|
|
51
52
|
import { initTutorial } from '../../shared/ui-tutorial.js';
|
|
52
53
|
import { initImageGallery } from '../../shared/ui-image-gallery.js';
|
|
@@ -401,6 +402,8 @@ async function boot() {
|
|
|
401
402
|
|
|
402
403
|
// Mark boot complete
|
|
403
404
|
_bootComplete = true;
|
|
405
|
+
// Painted: what the windows, menus and Settings wait for is read now, in idle time (launch-prefetch.js).
|
|
406
|
+
startLaunchPrefetch({ isGuest });
|
|
404
407
|
|
|
405
408
|
// Focus mode restored at load: the viz:toggle emitted by applyIfaceConfig
|
|
406
409
|
// ran before boot and was ignored above, so apply the persisted state to
|
|
@@ -46,6 +46,7 @@ import { initGames, clearGameOnLoad } from '../../shared/ui-games.js';
|
|
|
46
46
|
import { initWorkspaces } from '../../shared/ui-workspaces.js';
|
|
47
47
|
import { initInvite } from '../../shared/ui-invite.js';
|
|
48
48
|
import { initSync, isGuest } from '../../shared/ui-sync.js';
|
|
49
|
+
import { startLaunchPrefetch } from '../../shared/launch-prefetch.js';
|
|
49
50
|
import { initKeybinds, registerAction } from '../../shared/ui-keybinds.js';
|
|
50
51
|
import { initTutorial } from '../../shared/ui-tutorial.js';
|
|
51
52
|
import { initImageGallery } from '../../shared/ui-image-gallery.js';
|
|
@@ -465,6 +466,8 @@ async function boot() {
|
|
|
465
466
|
try { emit('trash:refresh'); } catch {}
|
|
466
467
|
hideLoading(400);
|
|
467
468
|
_bootComplete = true;
|
|
469
|
+
// Painted: what the windows, menus and Settings wait for is read now, in idle time (launch-prefetch.js).
|
|
470
|
+
startLaunchPrefetch({ isGuest });
|
|
468
471
|
} catch (err) {
|
|
469
472
|
console.error('Init error:', err);
|
|
470
473
|
const isNetworkError = err.message === 'Failed to fetch' || err.name === 'TypeError';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2006, Ivan Sagalaev.
|
|
4
|
+
All rights reserved.
|
|
5
|
+
|
|
6
|
+
Redistribution and use in source and binary forms, with or without
|
|
7
|
+
modification, are permitted provided that the following conditions are met:
|
|
8
|
+
|
|
9
|
+
* Redistributions of source code must retain the above copyright notice, this
|
|
10
|
+
list of conditions and the following disclaimer.
|
|
11
|
+
|
|
12
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
and/or other materials provided with the distribution.
|
|
15
|
+
|
|
16
|
+
* Neither the name of the copyright holder nor the names of its
|
|
17
|
+
contributors may be used to endorse or promote products derived from
|
|
18
|
+
this software without specific prior written permission.
|
|
19
|
+
|
|
20
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
21
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
22
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
23
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
24
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
25
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
26
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
27
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
28
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
|
|
2
|
+
Theme: GitHub Dark Dimmed
|
|
3
|
+
Description: Dark dimmed theme as seen on github.com
|
|
4
|
+
Author: github.com
|
|
5
|
+
Maintainer: @Hirse
|
|
6
|
+
Updated: 2021-05-15
|
|
7
|
+
|
|
8
|
+
Colors taken from GitHub's CSS
|
|
9
|
+
*/.hljs{color:#adbac7;background:#22272e}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#f47067}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#dcbdfb}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#6cb6ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#96d0ff}.hljs-built_in,.hljs-symbol{color:#f69d50}.hljs-code,.hljs-comment,.hljs-formula{color:#768390}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#8ddb8c}.hljs-subst{color:#adbac7}.hljs-section{color:#316dca;font-weight:700}.hljs-bullet{color:#eac55f}.hljs-emphasis{color:#adbac7;font-style:italic}.hljs-strong{color:#adbac7;font-weight:700}.hljs-addition{color:#b4f1b4;background-color:#1b4721}.hljs-deletion{color:#ffd8d3;background-color:#78191b}
|