@ecmaos/kernel 0.10.1 → 0.10.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/dist/.vite/manifest.json +12 -12
  2. package/dist/{browser-97JnRk6A.js → browser-BjnxDyrD.js} +2 -2
  3. package/dist/{browser-97JnRk6A.js.map → browser-BjnxDyrD.js.map} +1 -1
  4. package/dist/{index-BJ4HPRTi.js → index-9M8pZtzV.js} +2 -2
  5. package/dist/{index-BJ4HPRTi.js.map → index-9M8pZtzV.js.map} +1 -1
  6. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_auth.Auth.html +2 -2
  7. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_components.Component.html +2 -2
  8. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_components.Components.html +2 -2
  9. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_dom.Dom.html +2 -2
  10. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_events.Events.html +8 -8
  11. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_fdtable.FDTable.html +14 -14
  12. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_filesystem.Filesystem.html +12 -12
  13. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_i18n.I18n.html +6 -6
  14. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_intervals.Intervals.html +2 -2
  15. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_kernel.Kernel.html +68 -68
  16. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_lib_commands.TerminalCommand.html +4 -4
  17. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_log.Log.html +3 -3
  18. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_memory.Memory.html +2 -2
  19. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_processes.Process.html +33 -33
  20. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_processes.ProcessManager.html +2 -2
  21. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_protocol.Protocol.html +2 -2
  22. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_service.Service.html +10 -10
  23. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_shell.Shell.html +16 -16
  24. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_sockets.Sockets.html +7 -7
  25. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_storage.Storage.html +8 -8
  26. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_telemetry.Telemetry.html +2 -2
  27. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_terminal.Spinner.html +2 -2
  28. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_terminal.Terminal.html +38 -38
  29. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_users.Users.html +13 -13
  30. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_wasm.Wasm.html +8 -8
  31. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_windows.Windows.html +8 -8
  32. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/classes/kernel_src_tree_workers.Workers.html +4 -4
  33. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/enums/kernel_src_tree_terminal.CommandPath.html +2 -2
  34. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/enums/types_kernel.KernelEvents.html +2 -2
  35. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/enums/types_kernel.KernelState.html +2 -2
  36. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/enums/types_processes.ProcessEvents.html +2 -2
  37. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/enums/types_terminal.TerminalEvents.html +2 -2
  38. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_commands.TerminalCommands.html +1 -1
  39. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_commands.clear.html +1 -1
  40. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_commands.df.html +1 -1
  41. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_commands.download.html +1 -1
  42. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_commands.exportCmd.html +1 -1
  43. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_commands.load.html +1 -1
  44. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_commands.passwd.html +1 -1
  45. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_commands.ps.html +1 -1
  46. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_commands.reboot.html +1 -1
  47. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_commands.screensaver.html +1 -1
  48. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_commands.snake.html +1 -1
  49. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_commands.su.html +1 -1
  50. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_commands.upload.html +1 -1
  51. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_commands_install.default.html +1 -1
  52. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_commands_uninstall.default.html +1 -1
  53. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_crontab.parseCrontabFile.html +1 -1
  54. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_crontab.parseCrontabLine.html +1 -1
  55. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_fstab.parseFstabFile.html +1 -1
  56. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_fstab.parseFstabLine.html +1 -1
  57. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_screensavers_blank.default.html +1 -1
  58. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_screensavers_blank.exit.html +1 -1
  59. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_screensavers_matrix.default.html +1 -1
  60. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_lib_screensavers_matrix.exit.html +1 -1
  61. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_wasi_preview1.default.html +1 -1
  62. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/functions/kernel_src_tree_wasi_preview2.default.html +1 -1
  63. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/kernel_src_tree_lib_commands.CommandArgs.html +2 -2
  64. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/kernel_src_tree_lib_crontab.CrontabEntry.html +2 -2
  65. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/kernel_src_tree_wasm.WasiComponentResult.html +2 -2
  66. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/kernel_src_tree_wasm.WasiStreamOptions.html +2 -2
  67. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_auth.Auth.html +2 -2
  68. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_components.Components.html +2 -2
  69. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_device.KernelDevice.html +4 -4
  70. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_device.KernelDeviceCLIOptions.html +6 -6
  71. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_device.KernelDeviceData.html +1 -1
  72. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_dom.Dom.html +6 -6
  73. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_dom.DomOptions.html +2 -2
  74. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_events.Events.html +8 -8
  75. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_filesystem.FileHeader.html +4 -4
  76. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_filesystem.Filesystem.html +10 -10
  77. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_filesystem.FilesystemDescriptions.html +2 -2
  78. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_filesystem.FstabEntry.html +5 -5
  79. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_i18n.I18n.html +7 -7
  80. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_i18n.I18nFilesystemAdapter.html +2 -2
  81. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_i18n.I18nNamespaces.html +2 -2
  82. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_i18n.I18nOptions.html +7 -7
  83. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_i18n.I18nResourceLoadResult.html +2 -2
  84. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_intervals.ITimerHandle.html +2 -2
  85. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_intervals.Intervals.html +8 -8
  86. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_kernel.BootOptions.html +2 -2
  87. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_kernel.Kernel.html +51 -51
  88. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_kernel.KernelExecuteEvent.html +2 -2
  89. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_kernel.KernelExecuteOptions.html +2 -2
  90. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_kernel.KernelOptions.html +2 -2
  91. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_kernel.KernelPanicEvent.html +2 -2
  92. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_kernel.KernelShutdownEvent.html +2 -2
  93. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_kernel.KernelUploadEvent.html +2 -2
  94. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_keyboard.Keyboard.html +2 -2
  95. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_log.Log.html +10 -10
  96. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_log.LogOptions.html +4 -4
  97. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_memory.Memory.html +16 -16
  98. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_modules.KernelModule.html +2 -2
  99. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_processes.FDTable.html +13 -13
  100. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_processes.FileHandle.html +8 -8
  101. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_processes.Process.html +31 -31
  102. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_processes.ProcessEntryParams.html +16 -16
  103. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_processes.ProcessExitEvent.html +2 -2
  104. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_processes.ProcessManager.html +8 -8
  105. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_processes.ProcessOptions.html +18 -18
  106. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_processes.ProcessPauseEvent.html +2 -2
  107. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_processes.ProcessResumeEvent.html +2 -2
  108. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_processes.ProcessStartEvent.html +2 -2
  109. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_processes.ProcessStopEvent.html +2 -2
  110. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_protocol.Protocol.html +3 -3
  111. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_protocol.ProtocolOptions.html +3 -3
  112. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_service.Service.html +9 -9
  113. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_service.ServiceOptions.html +4 -4
  114. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_shell.Shell.html +13 -13
  115. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_shell.ShellOptions.html +7 -7
  116. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_sockets.Sockets.html +7 -7
  117. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_sockets.SocketsOptions.html +2 -2
  118. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_sockets.WebSocketConnection.html +8 -8
  119. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_sockets.WebTransportConnection.html +8 -8
  120. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_storage.StorageOptions.html +3 -3
  121. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_storage.StorageProvider.html +7 -7
  122. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_telemetry.Telemetry.html +3 -3
  123. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_telemetry.TelemetryOptions.html +2 -2
  124. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_terminal.Terminal.html +36 -36
  125. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_terminal.TerminalAttachEvent.html +2 -2
  126. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_terminal.TerminalCommand.html +4 -4
  127. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_terminal.TerminalCreatedEvent.html +2 -2
  128. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_terminal.TerminalExecuteEvent.html +2 -2
  129. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_terminal.TerminalInputEvent.html +2 -2
  130. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_terminal.TerminalInterruptEvent.html +2 -2
  131. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_terminal.TerminalKeyEvent.html +2 -2
  132. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_terminal.TerminalListenEvent.html +2 -2
  133. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_terminal.TerminalMessageEvent.html +2 -2
  134. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_terminal.TerminalMountEvent.html +2 -2
  135. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_terminal.TerminalOptions.html +6 -6
  136. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_terminal.TerminalPasteEvent.html +2 -2
  137. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_terminal.TerminalResizeEvent.html +2 -2
  138. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_terminal.TerminalUnlistenEvent.html +2 -2
  139. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_terminal.TerminalWriteEvent.html +2 -2
  140. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_terminal.TerminalWritelnEvent.html +2 -2
  141. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_users.AddUserOptions.html +4 -4
  142. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_users.Passkey.html +7 -7
  143. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_users.User.html +9 -9
  144. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_users.Users.html +14 -14
  145. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_users.UsersOptions.html +2 -2
  146. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_wasm.WasiComponentResult.html +3 -3
  147. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_wasm.WasiStreamOptions.html +4 -4
  148. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_wasm.Wasm.html +5 -5
  149. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_wasm.WasmOptions.html +2 -2
  150. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_windows.WindowOptions.html +2 -2
  151. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_windows.Windows.html +7 -7
  152. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/interfaces/types_workers.Workers.html +3 -3
  153. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/kernel_src_tree_fdtable.ZenFSFileHandle.html +1 -1
  154. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_auth.PasswordCredentialInit.html +1 -1
  155. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_components.ComponentListener.html +1 -1
  156. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_events.EventCallback.html +1 -1
  157. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_filesystem.FilesystemConfigMounts.html +1 -1
  158. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_filesystem.FilesystemOptions.html +1 -1
  159. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_filesystem.Fstab.html +1 -1
  160. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_filesystem.Path.html +1 -1
  161. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_i18n.I18nResourceBundle.html +1 -1
  162. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_intervals.CronMap.html +1 -1
  163. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_intervals.IntervalMap.html +1 -1
  164. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_memory.Address.html +1 -1
  165. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_memory.Collection.html +1 -1
  166. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_memory.Config.html +1 -1
  167. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_memory.Heap.html +1 -1
  168. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_memory.Stack.html +1 -1
  169. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_memory.StackFrame.html +1 -1
  170. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_modules.KernelModules.html +1 -1
  171. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_processes.ProcessStatus.html +1 -1
  172. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_processes.ProcessesMap.html +1 -1
  173. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_sockets.SocketConnection.html +1 -1
  174. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_sockets.WebSocketState.html +1 -1
  175. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_sockets.WebTransportState.html +1 -1
  176. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_users.GID.html +1 -1
  177. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_users.UID.html +1 -1
  178. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/types/types_windows.WindowId.html +1 -1
  179. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/variables/kernel_src_tree_device.DefaultDevices.html +1 -1
  180. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/variables/kernel_src_tree_dom.DefaultDomOptions.html +1 -1
  181. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/variables/kernel_src_tree_filesystem.DefaultFilesystemOptions.html +1 -1
  182. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/variables/kernel_src_tree_i18n.DefaultI18nOptions.html +1 -1
  183. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/variables/kernel_src_tree_log.DefaultLogOptions.html +1 -1
  184. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/variables/kernel_src_tree_service.DefaultServiceOptions.html +1 -1
  185. package/dist/initfs/usr/share/docs/@ecmaos/kernel/docs/variables/kernel_src_tree_terminal.DefaultTerminalOptions.html +1 -1
  186. package/dist/initfs.tar.gz +0 -0
  187. package/dist/{install-CYHZu4La.js → install-C78wAcrD.js} +2 -2
  188. package/dist/{install-CYHZu4La.js.map → install-C78wAcrD.js.map} +1 -1
  189. package/dist/{kernel-CBc_SGe6.js → kernel-C3PA_-lt.js} +807 -512
  190. package/dist/{kernel-CBc_SGe6.js.map → kernel-C3PA_-lt.js.map} +1 -1
  191. package/dist/kernel.css +6 -6
  192. package/dist/kernel.d.ts +0 -8
  193. package/dist/kernel.js +1 -1
  194. package/dist/swapi.js +22 -18
  195. package/dist/toasters.png +0 -0
  196. package/dist/ui.js +4 -2
  197. package/dist/ui.js.map +1 -1
  198. package/dist/{uninstall-CGDotg6T.js → uninstall-qEkzPbxE.js} +2 -2
  199. package/dist/{uninstall-CGDotg6T.js.map → uninstall-qEkzPbxE.js.map} +1 -1
  200. package/package.json +12 -10
@@ -26,21 +26,21 @@ async function blank({ terminal }) {
26
26
  if (!ctx) return false;
27
27
  ctx.fillStyle = "black";
28
28
  ctx.fillRect(0, 0, canvas.width, canvas.height);
29
- canvas.addEventListener("click", () => exit$2(canvas, terminal));
30
- document.addEventListener("click", () => exit$2(canvas, terminal));
31
- document.addEventListener("mousemove", () => exit$2(canvas, terminal));
32
- document.addEventListener("keydown", () => exit$2(canvas, terminal));
29
+ canvas.addEventListener("click", () => exit$3(canvas, terminal));
30
+ document.addEventListener("click", () => exit$3(canvas, terminal));
31
+ document.addEventListener("mousemove", () => exit$3(canvas, terminal));
32
+ document.addEventListener("keydown", () => exit$3(canvas, terminal));
33
33
  }
34
34
  __name(blank, "blank");
35
- async function exit$2(canvas, terminal) {
35
+ async function exit$3(canvas, terminal) {
36
36
  canvas.remove();
37
37
  terminal.listen();
38
38
  }
39
- __name(exit$2, "exit$2");
39
+ __name(exit$3, "exit$3");
40
40
  const __vite_glob_0_0 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
41
41
  __proto__: null,
42
42
  default: blank,
43
- exit: exit$2
43
+ exit: exit$3
44
44
  }, Symbol.toStringTag, { value: "Module" }));
45
45
  async function matrix({ terminal }) {
46
46
  if (document.getElementById("screensaver")) return false;
@@ -74,20 +74,152 @@ async function matrix({ terminal }) {
74
74
  }, "animatrix");
75
75
  terminal.unlisten();
76
76
  const interval = setInterval(animatrix, 33);
77
+ document.addEventListener("click", () => exit$2(interval, canvas, terminal));
78
+ document.addEventListener("mousemove", () => exit$2(interval, canvas, terminal));
79
+ document.addEventListener("keydown", () => exit$2(interval, canvas, terminal));
80
+ }
81
+ __name(matrix, "matrix");
82
+ async function exit$2(interval, canvas, terminal) {
83
+ clearInterval(interval);
84
+ canvas.remove();
85
+ terminal.listen();
86
+ }
87
+ __name(exit$2, "exit$2");
88
+ const __vite_glob_0_1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
89
+ __proto__: null,
90
+ default: matrix,
91
+ exit: exit$2
92
+ }, Symbol.toStringTag, { value: "Module" }));
93
+ async function toasters({ terminal }) {
94
+ if (document.getElementById("screensaver")) return false;
95
+ const canvas = document.createElement("canvas");
96
+ canvas.id = "screensaver";
97
+ canvas.width = globalThis.innerWidth;
98
+ canvas.height = globalThis.innerHeight;
99
+ canvas.style.position = "absolute";
100
+ canvas.style.top = "0";
101
+ canvas.style.left = "0";
102
+ canvas.style.zIndex = Number.MAX_SAFE_INTEGER.toString();
103
+ document.body.appendChild(canvas);
104
+ const ctx = canvas.getContext("2d");
105
+ if (!ctx) return false;
106
+ ctx.fillStyle = "black";
107
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
108
+ const spritesheet = new Image();
109
+ spritesheet.src = "/toasters.png";
110
+ await new Promise((resolve2, reject) => {
111
+ spritesheet.onload = () => resolve2();
112
+ spritesheet.onerror = () => reject(new Error("Failed to load toasters spritesheet"));
113
+ });
114
+ if (spritesheet.width === 0 || spritesheet.height === 0) return false;
115
+ const toasterWidth = 65;
116
+ const toasterHeight = 58;
117
+ const toastWidth = 65;
118
+ const toastHeight = 39;
119
+ const toasterSpacing = spritesheet.width / 5;
120
+ const processSprite = /* @__PURE__ */ __name((sx, sy, width2, height) => {
121
+ const spriteCanvas = document.createElement("canvas");
122
+ spriteCanvas.width = width2;
123
+ spriteCanvas.height = height;
124
+ const spriteCtx = spriteCanvas.getContext("2d");
125
+ if (!spriteCtx) return spriteCanvas;
126
+ spriteCtx.drawImage(spritesheet, sx, sy, width2, height, 0, 0, width2, height);
127
+ const imageData = spriteCtx.getImageData(0, 0, width2, height);
128
+ const data = imageData.data;
129
+ for (let i2 = 0; i2 < data.length; i2 += 4) {
130
+ if (data[i2] === 17 && data[i2 + 1] === 17 && data[i2 + 2] === 17) {
131
+ data[i2 + 3] = 0;
132
+ }
133
+ }
134
+ spriteCtx.putImageData(imageData, 0, 0);
135
+ return spriteCanvas;
136
+ }, "processSprite");
137
+ const toasterSprites = [];
138
+ for (let i2 = 0; i2 < 5; i2++) {
139
+ toasterSprites.push(processSprite(i2 * toasterSpacing, 0, toasterWidth, toasterHeight));
140
+ }
141
+ const toastSprite = processSprite(0, toasterHeight, toastWidth, toastHeight);
142
+ const toasters2 = [];
143
+ const toasts = [];
144
+ const maxToasters = 5;
145
+ const maxToasts = 20;
146
+ const createToaster = /* @__PURE__ */ __name(() => {
147
+ const baseY = Math.random() * (canvas.height - toasterHeight * 2) + toasterHeight;
148
+ return {
149
+ x: canvas.width + toasterWidth,
150
+ y: baseY,
151
+ vx: -(2 + Math.random() * 2),
152
+ vy: Math.sin(Math.random() * Math.PI * 2) * 0.5,
153
+ frame: 0,
154
+ frameCounter: 0,
155
+ baseY
156
+ };
157
+ }, "createToaster");
158
+ for (let i2 = 0; i2 < maxToasters; i2++) {
159
+ const toaster = createToaster();
160
+ toaster.x = canvas.width + i2 * toasterWidth * 3;
161
+ toasters2.push(toaster);
162
+ }
163
+ const animate = /* @__PURE__ */ __name(() => {
164
+ ctx.fillStyle = "black";
165
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
166
+ for (let i2 = toasters2.length - 1; i2 >= 0; i2--) {
167
+ const toaster = toasters2[i2];
168
+ if (!toaster) continue;
169
+ toaster.frameCounter++;
170
+ if (toaster.frameCounter >= 5) {
171
+ toaster.frameCounter = 0;
172
+ toaster.frame = (toaster.frame + 1) % 5;
173
+ }
174
+ toaster.y = toaster.baseY + Math.sin(toaster.x * 0.01) * 20;
175
+ toaster.x += toaster.vx;
176
+ if (toaster.x < -toasterWidth) {
177
+ toasters2[i2] = createToaster();
178
+ toasters2[i2].x = canvas.width + toasterWidth;
179
+ }
180
+ const sprite = toasterSprites[toaster.frame];
181
+ if (sprite) ctx.drawImage(sprite, toaster.x, toaster.y);
182
+ if (Math.random() < 0.01 && toasts.length < maxToasts) {
183
+ toasts.push({
184
+ x: toaster.x + toasterWidth / 2,
185
+ y: toaster.y + toasterHeight,
186
+ vy: 1 + Math.random() * 2,
187
+ vx: (Math.random() - 0.5) * 0.5
188
+ });
189
+ }
190
+ }
191
+ for (let i2 = toasts.length - 1; i2 >= 0; i2--) {
192
+ const toast = toasts[i2];
193
+ if (!toast) continue;
194
+ toast.x += toast.vx;
195
+ toast.y += toast.vy;
196
+ if (toast.y > canvas.height) {
197
+ toasts.splice(i2, 1);
198
+ continue;
199
+ }
200
+ ctx.drawImage(
201
+ toastSprite,
202
+ toast.x - toastWidth / 2,
203
+ toast.y
204
+ );
205
+ }
206
+ }, "animate");
207
+ terminal.unlisten();
208
+ const interval = setInterval(animate, 33);
77
209
  document.addEventListener("click", () => exit$1(interval, canvas, terminal));
78
210
  document.addEventListener("mousemove", () => exit$1(interval, canvas, terminal));
79
211
  document.addEventListener("keydown", () => exit$1(interval, canvas, terminal));
80
212
  }
81
- __name(matrix, "matrix");
213
+ __name(toasters, "toasters");
82
214
  async function exit$1(interval, canvas, terminal) {
83
215
  clearInterval(interval);
84
216
  canvas.remove();
85
217
  terminal.listen();
86
218
  }
87
219
  __name(exit$1, "exit$1");
88
- const __vite_glob_0_1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
220
+ const __vite_glob_0_2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
89
221
  __proto__: null,
90
- default: matrix,
222
+ default: toasters,
91
223
  exit: exit$1
92
224
  }, Symbol.toStringTag, { value: "Module" }));
93
225
  function getDefaultExportFromCjs$1(x2) {
@@ -24516,400 +24648,6 @@ const $pkg$1 = {
24516
24648
  version: version$2
24517
24649
  };
24518
24650
  globalThis.__zenfs__ = Object.assign(Object.create(fs$2), { _version: $pkg$1.version });
24519
- var __assign = /* @__PURE__ */ __name(function() {
24520
- __assign = Object.assign || /* @__PURE__ */ __name(function __assign2(t2) {
24521
- for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
24522
- s2 = arguments[i2];
24523
- for (var p2 in s2) if (Object.prototype.hasOwnProperty.call(s2, p2)) t2[p2] = s2[p2];
24524
- }
24525
- return t2;
24526
- }, "__assign");
24527
- return __assign.apply(this, arguments);
24528
- }, "__assign");
24529
- var NotyfNotification = (
24530
- /** @class */
24531
- (function() {
24532
- function NotyfNotification2(options) {
24533
- this.options = options;
24534
- this.listeners = {};
24535
- }
24536
- __name(NotyfNotification2, "NotyfNotification");
24537
- NotyfNotification2.prototype.on = function(eventType, cb) {
24538
- var callbacks = this.listeners[eventType] || [];
24539
- this.listeners[eventType] = callbacks.concat([cb]);
24540
- };
24541
- NotyfNotification2.prototype.triggerEvent = function(eventType, event) {
24542
- var _this = this;
24543
- var callbacks = this.listeners[eventType] || [];
24544
- callbacks.forEach(function(cb) {
24545
- return cb({ target: _this, event });
24546
- });
24547
- };
24548
- return NotyfNotification2;
24549
- })()
24550
- );
24551
- var NotyfArrayEvent;
24552
- (function(NotyfArrayEvent2) {
24553
- NotyfArrayEvent2[NotyfArrayEvent2["Add"] = 0] = "Add";
24554
- NotyfArrayEvent2[NotyfArrayEvent2["Remove"] = 1] = "Remove";
24555
- })(NotyfArrayEvent || (NotyfArrayEvent = {}));
24556
- var NotyfArray = (
24557
- /** @class */
24558
- (function() {
24559
- function NotyfArray2() {
24560
- this.notifications = [];
24561
- }
24562
- __name(NotyfArray2, "NotyfArray");
24563
- NotyfArray2.prototype.push = function(elem) {
24564
- this.notifications.push(elem);
24565
- this.updateFn(elem, NotyfArrayEvent.Add, this.notifications);
24566
- };
24567
- NotyfArray2.prototype.splice = function(index2, num) {
24568
- var elem = this.notifications.splice(index2, num)[0];
24569
- this.updateFn(elem, NotyfArrayEvent.Remove, this.notifications);
24570
- return elem;
24571
- };
24572
- NotyfArray2.prototype.indexOf = function(elem) {
24573
- return this.notifications.indexOf(elem);
24574
- };
24575
- NotyfArray2.prototype.onUpdate = function(fn2) {
24576
- this.updateFn = fn2;
24577
- };
24578
- return NotyfArray2;
24579
- })()
24580
- );
24581
- var NotyfEvent;
24582
- (function(NotyfEvent2) {
24583
- NotyfEvent2["Dismiss"] = "dismiss";
24584
- NotyfEvent2["Click"] = "click";
24585
- })(NotyfEvent || (NotyfEvent = {}));
24586
- var DEFAULT_OPTIONS = {
24587
- types: [
24588
- {
24589
- type: "success",
24590
- className: "notyf__toast--success",
24591
- backgroundColor: "#3dc763",
24592
- icon: {
24593
- className: "notyf__icon--success",
24594
- tagName: "i"
24595
- }
24596
- },
24597
- {
24598
- type: "error",
24599
- className: "notyf__toast--error",
24600
- backgroundColor: "#ed3d3d",
24601
- icon: {
24602
- className: "notyf__icon--error",
24603
- tagName: "i"
24604
- }
24605
- }
24606
- ],
24607
- duration: 2e3,
24608
- ripple: true,
24609
- position: {
24610
- x: "right",
24611
- y: "bottom"
24612
- },
24613
- dismissible: false
24614
- };
24615
- var NotyfView = (
24616
- /** @class */
24617
- (function() {
24618
- function NotyfView2() {
24619
- this.notifications = [];
24620
- this.events = {};
24621
- this.X_POSITION_FLEX_MAP = {
24622
- left: "flex-start",
24623
- center: "center",
24624
- right: "flex-end"
24625
- };
24626
- this.Y_POSITION_FLEX_MAP = {
24627
- top: "flex-start",
24628
- center: "center",
24629
- bottom: "flex-end"
24630
- };
24631
- var docFrag = document.createDocumentFragment();
24632
- var notyfContainer = this._createHTMLElement({ tagName: "div", className: "notyf" });
24633
- docFrag.appendChild(notyfContainer);
24634
- document.body.appendChild(docFrag);
24635
- this.container = notyfContainer;
24636
- this.animationEndEventName = this._getAnimationEndEventName();
24637
- this._createA11yContainer();
24638
- }
24639
- __name(NotyfView2, "NotyfView");
24640
- NotyfView2.prototype.on = function(event, cb) {
24641
- var _a3;
24642
- this.events = __assign(__assign({}, this.events), (_a3 = {}, _a3[event] = cb, _a3));
24643
- };
24644
- NotyfView2.prototype.update = function(notification, type2) {
24645
- if (type2 === NotyfArrayEvent.Add) {
24646
- this.addNotification(notification);
24647
- } else if (type2 === NotyfArrayEvent.Remove) {
24648
- this.removeNotification(notification);
24649
- }
24650
- };
24651
- NotyfView2.prototype.removeNotification = function(notification) {
24652
- var _this = this;
24653
- var renderedNotification = this._popRenderedNotification(notification);
24654
- var node;
24655
- if (!renderedNotification) {
24656
- return;
24657
- }
24658
- node = renderedNotification.node;
24659
- node.classList.add("notyf__toast--disappear");
24660
- var handleEvent;
24661
- node.addEventListener(this.animationEndEventName, handleEvent = /* @__PURE__ */ __name(function(event) {
24662
- if (event.target === node) {
24663
- node.removeEventListener(_this.animationEndEventName, handleEvent);
24664
- _this.container.removeChild(node);
24665
- }
24666
- }, "handleEvent"));
24667
- };
24668
- NotyfView2.prototype.addNotification = function(notification) {
24669
- var node = this._renderNotification(notification);
24670
- this.notifications.push({ notification, node });
24671
- this._announce(notification.options.message || "Notification");
24672
- };
24673
- NotyfView2.prototype._renderNotification = function(notification) {
24674
- var _a3;
24675
- var card = this._buildNotificationCard(notification);
24676
- var className = notification.options.className;
24677
- if (className) {
24678
- (_a3 = card.classList).add.apply(_a3, className.split(" "));
24679
- }
24680
- this.container.appendChild(card);
24681
- return card;
24682
- };
24683
- NotyfView2.prototype._popRenderedNotification = function(notification) {
24684
- var idx = -1;
24685
- for (var i2 = 0; i2 < this.notifications.length && idx < 0; i2++) {
24686
- if (this.notifications[i2].notification === notification) {
24687
- idx = i2;
24688
- }
24689
- }
24690
- if (idx !== -1) {
24691
- return this.notifications.splice(idx, 1)[0];
24692
- }
24693
- return;
24694
- };
24695
- NotyfView2.prototype.getXPosition = function(options) {
24696
- var _a3;
24697
- return ((_a3 = options === null || options === void 0 ? void 0 : options.position) === null || _a3 === void 0 ? void 0 : _a3.x) || "right";
24698
- };
24699
- NotyfView2.prototype.getYPosition = function(options) {
24700
- var _a3;
24701
- return ((_a3 = options === null || options === void 0 ? void 0 : options.position) === null || _a3 === void 0 ? void 0 : _a3.y) || "bottom";
24702
- };
24703
- NotyfView2.prototype.adjustContainerAlignment = function(options) {
24704
- var align = this.X_POSITION_FLEX_MAP[this.getXPosition(options)];
24705
- var justify = this.Y_POSITION_FLEX_MAP[this.getYPosition(options)];
24706
- var style = this.container.style;
24707
- style.setProperty("justify-content", justify);
24708
- style.setProperty("align-items", align);
24709
- };
24710
- NotyfView2.prototype._buildNotificationCard = function(notification) {
24711
- var _this = this;
24712
- var options = notification.options;
24713
- var iconOpts = options.icon;
24714
- this.adjustContainerAlignment(options);
24715
- var notificationElem = this._createHTMLElement({ tagName: "div", className: "notyf__toast" });
24716
- var ripple = this._createHTMLElement({ tagName: "div", className: "notyf__ripple" });
24717
- var wrapper = this._createHTMLElement({ tagName: "div", className: "notyf__wrapper" });
24718
- var message = this._createHTMLElement({ tagName: "div", className: "notyf__message" });
24719
- message.innerHTML = options.message || "";
24720
- var mainColor = options.background || options.backgroundColor;
24721
- if (iconOpts) {
24722
- var iconContainer = this._createHTMLElement({ tagName: "div", className: "notyf__icon" });
24723
- if (typeof iconOpts === "string" || iconOpts instanceof String)
24724
- iconContainer.innerHTML = new String(iconOpts).valueOf();
24725
- if (typeof iconOpts === "object") {
24726
- var _a3 = iconOpts.tagName, tagName = _a3 === void 0 ? "i" : _a3, className_1 = iconOpts.className, text = iconOpts.text, _b3 = iconOpts.color, color = _b3 === void 0 ? mainColor : _b3;
24727
- var iconElement = this._createHTMLElement({ tagName, className: className_1, text });
24728
- if (color)
24729
- iconElement.style.color = color;
24730
- iconContainer.appendChild(iconElement);
24731
- }
24732
- wrapper.appendChild(iconContainer);
24733
- }
24734
- wrapper.appendChild(message);
24735
- notificationElem.appendChild(wrapper);
24736
- if (mainColor) {
24737
- if (options.ripple) {
24738
- ripple.style.background = mainColor;
24739
- notificationElem.appendChild(ripple);
24740
- } else {
24741
- notificationElem.style.background = mainColor;
24742
- }
24743
- }
24744
- if (options.dismissible) {
24745
- var dismissWrapper = this._createHTMLElement({ tagName: "div", className: "notyf__dismiss" });
24746
- var dismissButton = this._createHTMLElement({
24747
- tagName: "button",
24748
- className: "notyf__dismiss-btn"
24749
- });
24750
- dismissWrapper.appendChild(dismissButton);
24751
- wrapper.appendChild(dismissWrapper);
24752
- notificationElem.classList.add("notyf__toast--dismissible");
24753
- dismissButton.addEventListener("click", function(event) {
24754
- var _a4, _b4;
24755
- (_b4 = (_a4 = _this.events)[NotyfEvent.Dismiss]) === null || _b4 === void 0 ? void 0 : _b4.call(_a4, { target: notification, event });
24756
- event.stopPropagation();
24757
- });
24758
- }
24759
- notificationElem.addEventListener("click", function(event) {
24760
- var _a4, _b4;
24761
- return (_b4 = (_a4 = _this.events)[NotyfEvent.Click]) === null || _b4 === void 0 ? void 0 : _b4.call(_a4, { target: notification, event });
24762
- });
24763
- var className = this.getYPosition(options) === "top" ? "upper" : "lower";
24764
- notificationElem.classList.add("notyf__toast--" + className);
24765
- return notificationElem;
24766
- };
24767
- NotyfView2.prototype._createHTMLElement = function(_a3) {
24768
- var tagName = _a3.tagName, className = _a3.className, text = _a3.text;
24769
- var elem = document.createElement(tagName);
24770
- if (className) {
24771
- elem.className = className;
24772
- }
24773
- elem.textContent = text || null;
24774
- return elem;
24775
- };
24776
- NotyfView2.prototype._createA11yContainer = function() {
24777
- var a11yContainer = this._createHTMLElement({ tagName: "div", className: "notyf-announcer" });
24778
- a11yContainer.setAttribute("aria-atomic", "true");
24779
- a11yContainer.setAttribute("aria-live", "polite");
24780
- a11yContainer.style.border = "0";
24781
- a11yContainer.style.clip = "rect(0 0 0 0)";
24782
- a11yContainer.style.height = "1px";
24783
- a11yContainer.style.margin = "-1px";
24784
- a11yContainer.style.overflow = "hidden";
24785
- a11yContainer.style.padding = "0";
24786
- a11yContainer.style.position = "absolute";
24787
- a11yContainer.style.width = "1px";
24788
- a11yContainer.style.outline = "0";
24789
- document.body.appendChild(a11yContainer);
24790
- this.a11yContainer = a11yContainer;
24791
- };
24792
- NotyfView2.prototype._announce = function(message) {
24793
- var _this = this;
24794
- this.a11yContainer.textContent = "";
24795
- setTimeout(function() {
24796
- _this.a11yContainer.textContent = message;
24797
- }, 100);
24798
- };
24799
- NotyfView2.prototype._getAnimationEndEventName = function() {
24800
- var el2 = document.createElement("_fake");
24801
- var transitions = {
24802
- MozTransition: "animationend",
24803
- OTransition: "oAnimationEnd",
24804
- WebkitTransition: "webkitAnimationEnd",
24805
- transition: "animationend"
24806
- };
24807
- var t2;
24808
- for (t2 in transitions) {
24809
- if (el2.style[t2] !== void 0) {
24810
- return transitions[t2];
24811
- }
24812
- }
24813
- return "animationend";
24814
- };
24815
- return NotyfView2;
24816
- })()
24817
- );
24818
- var Notyf = (
24819
- /** @class */
24820
- (function() {
24821
- function Notyf2(opts) {
24822
- var _this = this;
24823
- this.dismiss = this._removeNotification;
24824
- this.notifications = new NotyfArray();
24825
- this.view = new NotyfView();
24826
- var types2 = this.registerTypes(opts);
24827
- this.options = __assign(__assign({}, DEFAULT_OPTIONS), opts);
24828
- this.options.types = types2;
24829
- this.notifications.onUpdate(function(elem, type2) {
24830
- return _this.view.update(elem, type2);
24831
- });
24832
- this.view.on(NotyfEvent.Dismiss, function(_a3) {
24833
- var target = _a3.target, event = _a3.event;
24834
- _this._removeNotification(target);
24835
- target["triggerEvent"](NotyfEvent.Dismiss, event);
24836
- });
24837
- this.view.on(NotyfEvent.Click, function(_a3) {
24838
- var target = _a3.target, event = _a3.event;
24839
- return target["triggerEvent"](NotyfEvent.Click, event);
24840
- });
24841
- }
24842
- __name(Notyf2, "Notyf");
24843
- Notyf2.prototype.error = function(payload) {
24844
- var options = this.normalizeOptions("error", payload);
24845
- return this.open(options);
24846
- };
24847
- Notyf2.prototype.success = function(payload) {
24848
- var options = this.normalizeOptions("success", payload);
24849
- return this.open(options);
24850
- };
24851
- Notyf2.prototype.open = function(options) {
24852
- var defaultOpts = this.options.types.find(function(_a3) {
24853
- var type2 = _a3.type;
24854
- return type2 === options.type;
24855
- }) || {};
24856
- var config2 = __assign(__assign({}, defaultOpts), options);
24857
- this.assignProps(["ripple", "position", "dismissible"], config2);
24858
- var notification = new NotyfNotification(config2);
24859
- this._pushNotification(notification);
24860
- return notification;
24861
- };
24862
- Notyf2.prototype.dismissAll = function() {
24863
- while (this.notifications.splice(0, 1))
24864
- ;
24865
- };
24866
- Notyf2.prototype.assignProps = function(props, config2) {
24867
- var _this = this;
24868
- props.forEach(function(prop) {
24869
- config2[prop] = config2[prop] == null ? _this.options[prop] : config2[prop];
24870
- });
24871
- };
24872
- Notyf2.prototype._pushNotification = function(notification) {
24873
- var _this = this;
24874
- this.notifications.push(notification);
24875
- var duration = notification.options.duration !== void 0 ? notification.options.duration : this.options.duration;
24876
- if (duration) {
24877
- setTimeout(function() {
24878
- return _this._removeNotification(notification);
24879
- }, duration);
24880
- }
24881
- };
24882
- Notyf2.prototype._removeNotification = function(notification) {
24883
- var index2 = this.notifications.indexOf(notification);
24884
- if (index2 !== -1) {
24885
- this.notifications.splice(index2, 1);
24886
- }
24887
- };
24888
- Notyf2.prototype.normalizeOptions = function(type2, payload) {
24889
- var options = { type: type2 };
24890
- if (typeof payload === "string") {
24891
- options.message = payload;
24892
- } else if (typeof payload === "object") {
24893
- options = __assign(__assign({}, options), payload);
24894
- }
24895
- return options;
24896
- };
24897
- Notyf2.prototype.registerTypes = function(opts) {
24898
- var incomingTypes = (opts && opts.types || []).slice();
24899
- var finalDefaultTypes = DEFAULT_OPTIONS.types.map(function(defaultType) {
24900
- var userTypeIdx = -1;
24901
- incomingTypes.forEach(function(t2, idx) {
24902
- if (t2.type === defaultType.type)
24903
- userTypeIdx = idx;
24904
- });
24905
- var userType = userTypeIdx !== -1 ? incomingTypes.splice(userTypeIdx, 1)[0] : {};
24906
- return __assign(__assign({}, defaultType), userType);
24907
- });
24908
- return finalDefaultTypes.concat(incomingTypes);
24909
- };
24910
- return Notyf2;
24911
- })()
24912
- );
24913
24651
  const global$1 = globalThis || void 0 || self;
24914
24652
  var _globalThis$1 = typeof globalThis === "object" ? globalThis : typeof self === "object" ? self : typeof window === "object" ? window : typeof global$1 === "object" ? global$1 : {};
24915
24653
  var VERSION$2 = "1.9.0";
@@ -26231,13 +25969,13 @@ const _Components = class _Components {
26231
25969
  };
26232
25970
  __name(_Components, "Components");
26233
25971
  let Components = _Components;
26234
- const pkg$c = {
25972
+ const pkg$d = {
26235
25973
  name: "audio",
26236
25974
  version: "0.1.0",
26237
25975
  description: "Web Audio API device driver"
26238
25976
  };
26239
25977
  async function cli$d(options) {
26240
- options.kernel.log.debug(`${pkg$c.name} CLI`, options.args);
25978
+ options.kernel.log.debug(`${pkg$d.name} CLI`, options.args);
26241
25979
  const usage = `
26242
25980
  Usage: audio <command>
26243
25981
 
@@ -26346,7 +26084,7 @@ async function test$2(kernel, shell) {
26346
26084
  return 0;
26347
26085
  }
26348
26086
  __name(test$2, "test$2");
26349
- async function getDrivers$c(kernel) {
26087
+ async function getDrivers$d(kernel) {
26350
26088
  const drivers = [];
26351
26089
  drivers.push({
26352
26090
  name: "audio",
@@ -26354,7 +26092,7 @@ async function getDrivers$c(kernel) {
26354
26092
  major: 14,
26355
26093
  minor: 4,
26356
26094
  data: {
26357
- version: pkg$c.version,
26095
+ version: pkg$d.version,
26358
26096
  kernel: kernel.id,
26359
26097
  context: new AudioContext()
26360
26098
  }
@@ -26427,12 +26165,12 @@ async function getDrivers$c(kernel) {
26427
26165
  });
26428
26166
  return drivers;
26429
26167
  }
26430
- __name(getDrivers$c, "getDrivers$c");
26168
+ __name(getDrivers$d, "getDrivers$d");
26431
26169
  const AudioDevice = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
26432
26170
  __proto__: null,
26433
26171
  cli: cli$d,
26434
- getDrivers: getDrivers$c,
26435
- pkg: pkg$c
26172
+ getDrivers: getDrivers$d,
26173
+ pkg: pkg$d
26436
26174
  }, Symbol.toStringTag, { value: "Module" }));
26437
26175
  function isObject$8(input) {
26438
26176
  return typeof input === "object" && input !== null;
@@ -26631,7 +26369,7 @@ ansi$5.erase = {
26631
26369
  return csi$5 + (n2 || 0) + "K";
26632
26370
  }, "inLine")
26633
26371
  };
26634
- const pkg$b = {
26372
+ const pkg$c = {
26635
26373
  name: "battery",
26636
26374
  version: "0.1.0",
26637
26375
  description: "Battery device driver"
@@ -26691,7 +26429,7 @@ Commands:
26691
26429
  }
26692
26430
  }
26693
26431
  __name(cli$c, "cli$c");
26694
- async function getDrivers$b(kernel) {
26432
+ async function getDrivers$c(kernel) {
26695
26433
  const drivers = [];
26696
26434
  if ("getBattery" in navigator) {
26697
26435
  const battery = await navigator.getBattery();
@@ -26718,14 +26456,14 @@ async function getDrivers$b(kernel) {
26718
26456
  }
26719
26457
  return drivers;
26720
26458
  }
26721
- __name(getDrivers$b, "getDrivers$b");
26459
+ __name(getDrivers$c, "getDrivers$c");
26722
26460
  const BatteryDevice = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
26723
26461
  __proto__: null,
26724
26462
  cli: cli$c,
26725
- getDrivers: getDrivers$b,
26726
- pkg: pkg$b
26463
+ getDrivers: getDrivers$c,
26464
+ pkg: pkg$c
26727
26465
  }, Symbol.toStringTag, { value: "Module" }));
26728
- const pkg$a = {
26466
+ const pkg$b = {
26729
26467
  name: "bluetooth",
26730
26468
  version: "0.1.0",
26731
26469
  description: "Web Bluetooth API device driver"
@@ -26976,7 +26714,7 @@ Commands:
26976
26714
  }
26977
26715
  }
26978
26716
  __name(cli$b, "cli$b");
26979
- async function getDrivers$a(kernel) {
26717
+ async function getDrivers$b(kernel) {
26980
26718
  const drivers = [{
26981
26719
  name: "bluetooth",
26982
26720
  init: /* @__PURE__ */ __name(() => ({
@@ -26996,12 +26734,12 @@ async function getDrivers$a(kernel) {
26996
26734
  }];
26997
26735
  return drivers;
26998
26736
  }
26999
- __name(getDrivers$a, "getDrivers$a");
26737
+ __name(getDrivers$b, "getDrivers$b");
27000
26738
  const BluetoothDevice = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
27001
26739
  __proto__: null,
27002
26740
  cli: cli$b,
27003
- getDrivers: getDrivers$a,
27004
- pkg: pkg$a
26741
+ getDrivers: getDrivers$b,
26742
+ pkg: pkg$b
27005
26743
  }, Symbol.toStringTag, { value: "Module" }));
27006
26744
  function isObject$7(input) {
27007
26745
  return typeof input === "object" && input !== null;
@@ -27200,7 +26938,7 @@ ansi$4.erase = {
27200
26938
  return csi$4 + (n2 || 0) + "K";
27201
26939
  }, "inLine")
27202
26940
  };
27203
- const pkg$9 = {
26941
+ const pkg$a = {
27204
26942
  name: "gamepad",
27205
26943
  version: "0.1.0",
27206
26944
  description: ""
@@ -27276,25 +27014,25 @@ Commands:
27276
27014
  }
27277
27015
  }
27278
27016
  __name(cli$a, "cli$a");
27279
- async function getDrivers$9(kernel) {
27017
+ async function getDrivers$a(kernel) {
27280
27018
  const drivers = [{
27281
27019
  name: "gamepad",
27282
27020
  init: /* @__PURE__ */ __name(() => ({
27283
27021
  major: 13,
27284
27022
  minor: 1,
27285
- data: { kernelId: kernel.id, version: pkg$9.version }
27023
+ data: { kernelId: kernel.id, version: pkg$a.version }
27286
27024
  }), "init"),
27287
27025
  read: /* @__PURE__ */ __name(() => 0, "read"),
27288
27026
  write: /* @__PURE__ */ __name(() => 0, "write")
27289
27027
  }];
27290
27028
  return drivers;
27291
27029
  }
27292
- __name(getDrivers$9, "getDrivers$9");
27030
+ __name(getDrivers$a, "getDrivers$a");
27293
27031
  const GamepadDevice = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
27294
27032
  __proto__: null,
27295
27033
  cli: cli$a,
27296
- getDrivers: getDrivers$9,
27297
- pkg: pkg$9
27034
+ getDrivers: getDrivers$a,
27035
+ pkg: pkg$a
27298
27036
  }, Symbol.toStringTag, { value: "Module" }));
27299
27037
  function isObject$6(input) {
27300
27038
  return typeof input === "object" && input !== null;
@@ -27493,7 +27231,7 @@ ansi$3.erase = {
27493
27231
  return csi$3 + (n2 || 0) + "K";
27494
27232
  }, "inLine")
27495
27233
  };
27496
- const pkg$8 = {
27234
+ const pkg$9 = {
27497
27235
  name: "geo",
27498
27236
  version: "0.1.0",
27499
27237
  description: "Geolocation device driver"
@@ -27563,7 +27301,7 @@ Commands:
27563
27301
  }
27564
27302
  }
27565
27303
  __name(cli$9, "cli$9");
27566
- async function getDrivers$8(kernel) {
27304
+ async function getDrivers$9(kernel) {
27567
27305
  const drivers = [];
27568
27306
  if ("geolocation" in navigator) {
27569
27307
  let lastPosition = {
@@ -27600,7 +27338,7 @@ async function getDrivers$8(kernel) {
27600
27338
  minor: 101,
27601
27339
  data: {
27602
27340
  kernelId: kernel.id,
27603
- version: pkg$8.version
27341
+ version: pkg$9.version
27604
27342
  }
27605
27343
  }), "init"),
27606
27344
  read: /* @__PURE__ */ __name((_2, buffer2) => {
@@ -27618,20 +27356,20 @@ async function getDrivers$8(kernel) {
27618
27356
  }
27619
27357
  return drivers;
27620
27358
  }
27621
- __name(getDrivers$8, "getDrivers$8");
27359
+ __name(getDrivers$9, "getDrivers$9");
27622
27360
  const GeoDevice = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
27623
27361
  __proto__: null,
27624
27362
  cli: cli$9,
27625
- getDrivers: getDrivers$8,
27626
- pkg: pkg$8
27363
+ getDrivers: getDrivers$9,
27364
+ pkg: pkg$9
27627
27365
  }, Symbol.toStringTag, { value: "Module" }));
27628
- const pkg$7 = {
27366
+ const pkg$8 = {
27629
27367
  name: "gpu",
27630
27368
  version: "0.1.0",
27631
27369
  description: "WebGPU device driver"
27632
27370
  };
27633
27371
  async function cli$8(options) {
27634
- options.kernel.log.debug(`${pkg$7.name} CLI`, options.args);
27372
+ options.kernel.log.debug(`${pkg$8.name} CLI`, options.args);
27635
27373
  const usage = `
27636
27374
  Usage: gpu <command>
27637
27375
 
@@ -27658,7 +27396,7 @@ Launch chrome using: google-chrome --enable-unsafe-webgpu --enable-features=Vulk
27658
27396
  return 0;
27659
27397
  }
27660
27398
  __name(cli$8, "cli$8");
27661
- async function getDrivers$7(kernel) {
27399
+ async function getDrivers$8(kernel) {
27662
27400
  const drivers = [];
27663
27401
  if ("gpu" in navigator) {
27664
27402
  const adapter = await navigator.gpu.requestAdapter();
@@ -27686,7 +27424,7 @@ async function getDrivers$7(kernel) {
27686
27424
  }
27687
27425
  return drivers;
27688
27426
  }
27689
- __name(getDrivers$7, "getDrivers$7");
27427
+ __name(getDrivers$8, "getDrivers$8");
27690
27428
  async function test$1(kernel) {
27691
27429
  if (!("gpu" in navigator)) throw new Error("WebGPU not available");
27692
27430
  const adapter = await navigator.gpu.requestAdapter();
@@ -27773,8 +27511,8 @@ __name(test$1, "test$1");
27773
27511
  const GPUDevice = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
27774
27512
  __proto__: null,
27775
27513
  cli: cli$8,
27776
- getDrivers: getDrivers$7,
27777
- pkg: pkg$7
27514
+ getDrivers: getDrivers$8,
27515
+ pkg: pkg$8
27778
27516
  }, Symbol.toStringTag, { value: "Module" }));
27779
27517
  function isObject$5(input) {
27780
27518
  return typeof input === "object" && input !== null;
@@ -27973,7 +27711,7 @@ ansi$2.erase = {
27973
27711
  return csi$2 + (n2 || 0) + "K";
27974
27712
  }, "inLine")
27975
27713
  };
27976
- const pkg$6 = {
27714
+ const pkg$7 = {
27977
27715
  name: "hid",
27978
27716
  version: "0.1.0",
27979
27717
  description: "Human Interface Device (HID) driver"
@@ -28091,7 +27829,7 @@ Commands:
28091
27829
  }
28092
27830
  }
28093
27831
  __name(cli$7, "cli$7");
28094
- async function getDrivers$6(kernel) {
27832
+ async function getDrivers$7(kernel) {
28095
27833
  const deviceMap = /* @__PURE__ */ new Map();
28096
27834
  const drivers = [{
28097
27835
  name: "hid",
@@ -28100,7 +27838,7 @@ async function getDrivers$6(kernel) {
28100
27838
  minor: 64,
28101
27839
  data: {
28102
27840
  kernelId: kernel.id,
28103
- version: pkg$6.version
27841
+ version: pkg$7.version
28104
27842
  }
28105
27843
  }), "init"),
28106
27844
  read: /* @__PURE__ */ __name((_2, buffer2) => {
@@ -28131,7 +27869,7 @@ async function getDrivers$6(kernel) {
28131
27869
  minor: 64 + drivers.length,
28132
27870
  data: {
28133
27871
  kernelId: kernel.id,
28134
- version: pkg$6.version
27872
+ version: pkg$7.version
28135
27873
  }
28136
27874
  }), "init"),
28137
27875
  read: /* @__PURE__ */ __name(() => 0, "read"),
@@ -28141,14 +27879,14 @@ async function getDrivers$6(kernel) {
28141
27879
  }
28142
27880
  return drivers;
28143
27881
  }
28144
- __name(getDrivers$6, "getDrivers$6");
27882
+ __name(getDrivers$7, "getDrivers$7");
28145
27883
  const HIDDevice = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
28146
27884
  __proto__: null,
28147
27885
  cli: cli$7,
28148
- getDrivers: getDrivers$6,
28149
- pkg: pkg$6
27886
+ getDrivers: getDrivers$7,
27887
+ pkg: pkg$7
28150
27888
  }, Symbol.toStringTag, { value: "Module" }));
28151
- const pkg$5 = {
27889
+ const pkg$6 = {
28152
27890
  name: "midi",
28153
27891
  version: "0.1.0",
28154
27892
  description: "MIDI device driver"
@@ -28271,7 +28009,7 @@ Commands:
28271
28009
  }
28272
28010
  }
28273
28011
  __name(cli$6, "cli$6");
28274
- async function getDrivers$5(kernel) {
28012
+ async function getDrivers$6(kernel) {
28275
28013
  const drivers = [{
28276
28014
  name: "midi",
28277
28015
  init: /* @__PURE__ */ __name(() => ({
@@ -28284,14 +28022,14 @@ async function getDrivers$5(kernel) {
28284
28022
  }];
28285
28023
  return drivers;
28286
28024
  }
28287
- __name(getDrivers$5, "getDrivers$5");
28025
+ __name(getDrivers$6, "getDrivers$6");
28288
28026
  const MIDIDevice = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
28289
28027
  __proto__: null,
28290
28028
  cli: cli$6,
28291
- getDrivers: getDrivers$5,
28292
- pkg: pkg$5
28029
+ getDrivers: getDrivers$6,
28030
+ pkg: pkg$6
28293
28031
  }, Symbol.toStringTag, { value: "Module" }));
28294
- const pkg$4 = {
28032
+ const pkg$5 = {
28295
28033
  name: "presentation",
28296
28034
  version: "0.1.0",
28297
28035
  description: "Web Presentation API device driver"
@@ -28326,7 +28064,7 @@ Commands:
28326
28064
  return 0;
28327
28065
  }
28328
28066
  __name(cli$5, "cli$5");
28329
- async function getDrivers$4() {
28067
+ async function getDrivers$5() {
28330
28068
  const drivers = [];
28331
28069
  if ("presentation" in navigator) {
28332
28070
  drivers.push({
@@ -28341,7 +28079,7 @@ async function getDrivers$4() {
28341
28079
  }
28342
28080
  return drivers;
28343
28081
  }
28344
- __name(getDrivers$4, "getDrivers$4");
28082
+ __name(getDrivers$5, "getDrivers$5");
28345
28083
  async function listDisplays(kernel, presentationUrl) {
28346
28084
  if (!("PresentationRequest" in globalThis)) throw new Error("PresentationRequest API not supported");
28347
28085
  try {
@@ -28391,8 +28129,8 @@ __name(startPresentation, "startPresentation");
28391
28129
  const PresentationDevice = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
28392
28130
  __proto__: null,
28393
28131
  cli: cli$5,
28394
- getDrivers: getDrivers$4,
28395
- pkg: pkg$4
28132
+ getDrivers: getDrivers$5,
28133
+ pkg: pkg$5
28396
28134
  }, Symbol.toStringTag, { value: "Module" }));
28397
28135
  function isObject$4(input) {
28398
28136
  return typeof input === "object" && input !== null;
@@ -28591,7 +28329,7 @@ ansi$1.erase = {
28591
28329
  return csi$1 + (n2 || 0) + "K";
28592
28330
  }, "inLine")
28593
28331
  };
28594
- const pkg$3 = {
28332
+ const pkg$4 = {
28595
28333
  name: "sensors",
28596
28334
  version: "0.1.0",
28597
28335
  description: "Device sensors driver"
@@ -28678,16 +28416,16 @@ Commands:
28678
28416
  }
28679
28417
  }
28680
28418
  __name(cli$4, "cli$4");
28681
- async function getDrivers$3(kernel) {
28419
+ async function getDrivers$4(kernel) {
28682
28420
  const drivers = [{
28683
28421
  name: "sensors",
28684
- init: /* @__PURE__ */ __name(() => ({ major: 0, minor: 0, data: { kernelId: kernel.id, version: pkg$3.version } }), "init"),
28422
+ init: /* @__PURE__ */ __name(() => ({ major: 0, minor: 0, data: { kernelId: kernel.id, version: pkg$4.version } }), "init"),
28685
28423
  read: /* @__PURE__ */ __name(() => 0, "read"),
28686
28424
  write: /* @__PURE__ */ __name(() => 0, "write")
28687
28425
  }];
28688
28426
  return drivers;
28689
28427
  }
28690
- __name(getDrivers$3, "getDrivers$3");
28428
+ __name(getDrivers$4, "getDrivers$4");
28691
28429
  const activeSensors = /* @__PURE__ */ new Map();
28692
28430
  let watchCounter = 0;
28693
28431
  async function readSensor(sensorType, terminal) {
@@ -28879,11 +28617,11 @@ __name(isSensorType, "isSensorType");
28879
28617
  const SensorsDevice = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
28880
28618
  __proto__: null,
28881
28619
  cli: cli$4,
28882
- getDrivers: getDrivers$3,
28883
- pkg: pkg$3
28620
+ getDrivers: getDrivers$4,
28621
+ pkg: pkg$4
28884
28622
  }, Symbol.toStringTag, { value: "Module" }));
28885
28623
  const availablePorts = /* @__PURE__ */ new Set();
28886
- const pkg$2 = {
28624
+ const pkg$3 = {
28887
28625
  name: "serial",
28888
28626
  version: "0.1.0",
28889
28627
  description: "Web Serial device driver",
@@ -28944,7 +28682,7 @@ async function cli$3(options) {
28944
28682
  }
28945
28683
  }
28946
28684
  default:
28947
- terminal.writeln(pkg$2.help);
28685
+ terminal.writeln(pkg$3.help);
28948
28686
  return 0;
28949
28687
  }
28950
28688
  }
@@ -28977,7 +28715,7 @@ async function createDriver(name) {
28977
28715
  };
28978
28716
  }
28979
28717
  __name(createDriver, "createDriver");
28980
- async function getDrivers$2(kernel) {
28718
+ async function getDrivers$3(kernel) {
28981
28719
  if (typeof navigator === "undefined" || !navigator.serial) return [];
28982
28720
  navigator.serial.addEventListener("connect", async (event) => {
28983
28721
  kernel.events.emit("device:connect", event.target);
@@ -28991,10 +28729,169 @@ async function getDrivers$2(kernel) {
28991
28729
  for (let i2 = 0; i2 < ports.length; i2++) drivers.push(await createDriver(`ttyS${i2}`));
28992
28730
  return drivers;
28993
28731
  }
28994
- __name(getDrivers$2, "getDrivers$2");
28732
+ __name(getDrivers$3, "getDrivers$3");
28995
28733
  const SerialDevice = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
28996
28734
  __proto__: null,
28997
28735
  cli: cli$3,
28736
+ getDrivers: getDrivers$3,
28737
+ pkg: pkg$3
28738
+ }, Symbol.toStringTag, { value: "Module" }));
28739
+ const pkg$2 = {
28740
+ name: "tty",
28741
+ version: "0.1.0",
28742
+ description: "TTY pseudo-device drivers for /dev/ttyN"
28743
+ };
28744
+ const _TTYReadBuffer = class _TTYReadBuffer {
28745
+ constructor() {
28746
+ __publicField(this, "buffer", []);
28747
+ __publicField(this, "maxSize", 1024 * 1024);
28748
+ __publicField(this, "currentSize", 0);
28749
+ }
28750
+ append(data) {
28751
+ this.buffer.push(data);
28752
+ this.currentSize += data.length;
28753
+ while (this.currentSize > this.maxSize && this.buffer.length > 0) {
28754
+ const removed = this.buffer.shift();
28755
+ if (removed)
28756
+ this.currentSize -= removed.length;
28757
+ }
28758
+ }
28759
+ read(target, offset, length) {
28760
+ if (this.buffer.length === 0)
28761
+ return 0;
28762
+ let bytesRead = 0;
28763
+ const targetView = new Uint8Array(target.buffer, target.byteOffset + offset, length);
28764
+ while (bytesRead < length && this.buffer.length > 0) {
28765
+ const chunk = this.buffer[0];
28766
+ if (!chunk)
28767
+ break;
28768
+ const remaining = length - bytesRead;
28769
+ const toCopy = Math.min(remaining, chunk.length);
28770
+ targetView.set(chunk.subarray(0, toCopy), bytesRead);
28771
+ bytesRead += toCopy;
28772
+ if (toCopy === chunk.length) {
28773
+ this.buffer.shift();
28774
+ this.currentSize -= chunk.length;
28775
+ } else {
28776
+ this.buffer[0] = chunk.subarray(toCopy);
28777
+ this.currentSize -= toCopy;
28778
+ }
28779
+ }
28780
+ return bytesRead;
28781
+ }
28782
+ clear() {
28783
+ this.buffer = [];
28784
+ this.currentSize = 0;
28785
+ }
28786
+ get size() {
28787
+ return this.currentSize;
28788
+ }
28789
+ };
28790
+ __name(_TTYReadBuffer, "TTYReadBuffer");
28791
+ let TTYReadBuffer = _TTYReadBuffer;
28792
+ const ttyBuffers = /* @__PURE__ */ new Map();
28793
+ const bufferedTerminals = /* @__PURE__ */ new WeakSet();
28794
+ function getOrCreateBuffer(ttyNumber) {
28795
+ if (!ttyBuffers.has(ttyNumber))
28796
+ ttyBuffers.set(ttyNumber, new TTYReadBuffer());
28797
+ return ttyBuffers.get(ttyNumber);
28798
+ }
28799
+ __name(getOrCreateBuffer, "getOrCreateBuffer");
28800
+ function setupTTYOutputBuffering(kernel, ttyNumber) {
28801
+ const shell = kernel.getShell(ttyNumber);
28802
+ if (!shell || !shell.terminal)
28803
+ return;
28804
+ const terminal = shell.terminal;
28805
+ const buffer2 = getOrCreateBuffer(ttyNumber);
28806
+ if (bufferedTerminals.has(terminal))
28807
+ return;
28808
+ const originalWrite = terminal.write.bind(terminal);
28809
+ const originalWriteln = terminal.writeln.bind(terminal);
28810
+ terminal.write = function(data) {
28811
+ const result = originalWrite(data);
28812
+ if (typeof data === "string") {
28813
+ buffer2.append(new TextEncoder().encode(data));
28814
+ } else {
28815
+ buffer2.append(data);
28816
+ }
28817
+ return result;
28818
+ };
28819
+ terminal.writeln = function(data) {
28820
+ const result = originalWriteln(data);
28821
+ const newline = new TextEncoder().encode("\n");
28822
+ if (typeof data === "string") {
28823
+ buffer2.append(new TextEncoder().encode(data + "\n"));
28824
+ } else {
28825
+ const combined = new Uint8Array(data.length + 1);
28826
+ combined.set(data);
28827
+ combined.set(newline, data.length);
28828
+ buffer2.append(combined);
28829
+ }
28830
+ return result;
28831
+ };
28832
+ bufferedTerminals.add(terminal);
28833
+ }
28834
+ __name(setupTTYOutputBuffering, "setupTTYOutputBuffering");
28835
+ async function getDrivers$2(kernel) {
28836
+ const drivers = [];
28837
+ for (let ttyNumber = 0; ttyNumber <= 9; ttyNumber++) {
28838
+ const deviceName = `tty${ttyNumber}`;
28839
+ drivers.push({
28840
+ name: deviceName,
28841
+ singleton: true,
28842
+ init: /* @__PURE__ */ __name(() => {
28843
+ return {
28844
+ major: 4,
28845
+ minor: ttyNumber,
28846
+ data: {
28847
+ ttyNumber,
28848
+ kernelId: kernel.id
28849
+ }
28850
+ };
28851
+ }, "init"),
28852
+ read: /* @__PURE__ */ __name((file, buffer2, offset, end) => {
28853
+ const ttyNumber2 = file.data?.ttyNumber;
28854
+ if (ttyNumber2 === void 0)
28855
+ return 0;
28856
+ const shell = kernel.getShell(ttyNumber2);
28857
+ if (!shell || !shell.terminal)
28858
+ return 0;
28859
+ setupTTYOutputBuffering(kernel, ttyNumber2);
28860
+ const readBuffer = getOrCreateBuffer(ttyNumber2);
28861
+ const length = end - offset;
28862
+ return readBuffer.read(buffer2, offset, length);
28863
+ }, "read"),
28864
+ write: /* @__PURE__ */ __name((file, buffer2, offset) => {
28865
+ const ttyNumber2 = file.data?.ttyNumber;
28866
+ if (ttyNumber2 === void 0)
28867
+ return 0;
28868
+ const bufferView = new Uint8Array(buffer2.buffer, buffer2.byteOffset + offset, buffer2.byteLength - offset);
28869
+ const text = new TextDecoder().decode(bufferView);
28870
+ let shell = kernel.getShell(ttyNumber2);
28871
+ if (!shell || !shell.terminal) {
28872
+ const terminalContainer = document.getElementById(`terminal-tty${ttyNumber2}`);
28873
+ if (terminalContainer) {
28874
+ kernel.createShell(ttyNumber2).then((createdShell) => {
28875
+ if (createdShell && createdShell.terminal) {
28876
+ createdShell.terminal.write(text);
28877
+ createdShell.terminal.dispatchStdin(text);
28878
+ }
28879
+ }).catch(() => {
28880
+ });
28881
+ }
28882
+ return bufferView.length;
28883
+ }
28884
+ shell.terminal.write(text);
28885
+ shell.terminal.dispatchStdin(text);
28886
+ return bufferView.length;
28887
+ }, "write")
28888
+ });
28889
+ }
28890
+ return drivers;
28891
+ }
28892
+ __name(getDrivers$2, "getDrivers$2");
28893
+ const TTYDevice = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
28894
+ __proto__: null,
28998
28895
  getDrivers: getDrivers$2,
28999
28896
  pkg: pkg$2
29000
28897
  }, Symbol.toStringTag, { value: "Module" }));
@@ -29325,6 +29222,7 @@ const DefaultDevices = {
29325
29222
  presentation: PresentationDevice,
29326
29223
  sensors: SensorsDevice,
29327
29224
  serial: SerialDevice,
29225
+ tty: TTYDevice,
29328
29226
  usb: USBDevice,
29329
29227
  webgl: WebGLDevice
29330
29228
  };
@@ -29367,6 +29265,400 @@ function requireTopbar_min() {
29367
29265
  __name(requireTopbar_min, "requireTopbar_min");
29368
29266
  var topbar_minExports = requireTopbar_min();
29369
29267
  const topbar = /* @__PURE__ */ getDefaultExportFromCjs(topbar_minExports);
29268
+ var __assign = /* @__PURE__ */ __name(function() {
29269
+ __assign = Object.assign || /* @__PURE__ */ __name(function __assign2(t2) {
29270
+ for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
29271
+ s2 = arguments[i2];
29272
+ for (var p2 in s2) if (Object.prototype.hasOwnProperty.call(s2, p2)) t2[p2] = s2[p2];
29273
+ }
29274
+ return t2;
29275
+ }, "__assign");
29276
+ return __assign.apply(this, arguments);
29277
+ }, "__assign");
29278
+ var NotyfNotification = (
29279
+ /** @class */
29280
+ (function() {
29281
+ function NotyfNotification2(options) {
29282
+ this.options = options;
29283
+ this.listeners = {};
29284
+ }
29285
+ __name(NotyfNotification2, "NotyfNotification");
29286
+ NotyfNotification2.prototype.on = function(eventType, cb) {
29287
+ var callbacks = this.listeners[eventType] || [];
29288
+ this.listeners[eventType] = callbacks.concat([cb]);
29289
+ };
29290
+ NotyfNotification2.prototype.triggerEvent = function(eventType, event) {
29291
+ var _this = this;
29292
+ var callbacks = this.listeners[eventType] || [];
29293
+ callbacks.forEach(function(cb) {
29294
+ return cb({ target: _this, event });
29295
+ });
29296
+ };
29297
+ return NotyfNotification2;
29298
+ })()
29299
+ );
29300
+ var NotyfArrayEvent;
29301
+ (function(NotyfArrayEvent2) {
29302
+ NotyfArrayEvent2[NotyfArrayEvent2["Add"] = 0] = "Add";
29303
+ NotyfArrayEvent2[NotyfArrayEvent2["Remove"] = 1] = "Remove";
29304
+ })(NotyfArrayEvent || (NotyfArrayEvent = {}));
29305
+ var NotyfArray = (
29306
+ /** @class */
29307
+ (function() {
29308
+ function NotyfArray2() {
29309
+ this.notifications = [];
29310
+ }
29311
+ __name(NotyfArray2, "NotyfArray");
29312
+ NotyfArray2.prototype.push = function(elem) {
29313
+ this.notifications.push(elem);
29314
+ this.updateFn(elem, NotyfArrayEvent.Add, this.notifications);
29315
+ };
29316
+ NotyfArray2.prototype.splice = function(index2, num) {
29317
+ var elem = this.notifications.splice(index2, num)[0];
29318
+ this.updateFn(elem, NotyfArrayEvent.Remove, this.notifications);
29319
+ return elem;
29320
+ };
29321
+ NotyfArray2.prototype.indexOf = function(elem) {
29322
+ return this.notifications.indexOf(elem);
29323
+ };
29324
+ NotyfArray2.prototype.onUpdate = function(fn2) {
29325
+ this.updateFn = fn2;
29326
+ };
29327
+ return NotyfArray2;
29328
+ })()
29329
+ );
29330
+ var NotyfEvent;
29331
+ (function(NotyfEvent2) {
29332
+ NotyfEvent2["Dismiss"] = "dismiss";
29333
+ NotyfEvent2["Click"] = "click";
29334
+ })(NotyfEvent || (NotyfEvent = {}));
29335
+ var DEFAULT_OPTIONS = {
29336
+ types: [
29337
+ {
29338
+ type: "success",
29339
+ className: "notyf__toast--success",
29340
+ backgroundColor: "#3dc763",
29341
+ icon: {
29342
+ className: "notyf__icon--success",
29343
+ tagName: "i"
29344
+ }
29345
+ },
29346
+ {
29347
+ type: "error",
29348
+ className: "notyf__toast--error",
29349
+ backgroundColor: "#ed3d3d",
29350
+ icon: {
29351
+ className: "notyf__icon--error",
29352
+ tagName: "i"
29353
+ }
29354
+ }
29355
+ ],
29356
+ duration: 2e3,
29357
+ ripple: true,
29358
+ position: {
29359
+ x: "right",
29360
+ y: "bottom"
29361
+ },
29362
+ dismissible: false
29363
+ };
29364
+ var NotyfView = (
29365
+ /** @class */
29366
+ (function() {
29367
+ function NotyfView2() {
29368
+ this.notifications = [];
29369
+ this.events = {};
29370
+ this.X_POSITION_FLEX_MAP = {
29371
+ left: "flex-start",
29372
+ center: "center",
29373
+ right: "flex-end"
29374
+ };
29375
+ this.Y_POSITION_FLEX_MAP = {
29376
+ top: "flex-start",
29377
+ center: "center",
29378
+ bottom: "flex-end"
29379
+ };
29380
+ var docFrag = document.createDocumentFragment();
29381
+ var notyfContainer = this._createHTMLElement({ tagName: "div", className: "notyf" });
29382
+ docFrag.appendChild(notyfContainer);
29383
+ document.body.appendChild(docFrag);
29384
+ this.container = notyfContainer;
29385
+ this.animationEndEventName = this._getAnimationEndEventName();
29386
+ this._createA11yContainer();
29387
+ }
29388
+ __name(NotyfView2, "NotyfView");
29389
+ NotyfView2.prototype.on = function(event, cb) {
29390
+ var _a3;
29391
+ this.events = __assign(__assign({}, this.events), (_a3 = {}, _a3[event] = cb, _a3));
29392
+ };
29393
+ NotyfView2.prototype.update = function(notification, type2) {
29394
+ if (type2 === NotyfArrayEvent.Add) {
29395
+ this.addNotification(notification);
29396
+ } else if (type2 === NotyfArrayEvent.Remove) {
29397
+ this.removeNotification(notification);
29398
+ }
29399
+ };
29400
+ NotyfView2.prototype.removeNotification = function(notification) {
29401
+ var _this = this;
29402
+ var renderedNotification = this._popRenderedNotification(notification);
29403
+ var node;
29404
+ if (!renderedNotification) {
29405
+ return;
29406
+ }
29407
+ node = renderedNotification.node;
29408
+ node.classList.add("notyf__toast--disappear");
29409
+ var handleEvent;
29410
+ node.addEventListener(this.animationEndEventName, handleEvent = /* @__PURE__ */ __name(function(event) {
29411
+ if (event.target === node) {
29412
+ node.removeEventListener(_this.animationEndEventName, handleEvent);
29413
+ _this.container.removeChild(node);
29414
+ }
29415
+ }, "handleEvent"));
29416
+ };
29417
+ NotyfView2.prototype.addNotification = function(notification) {
29418
+ var node = this._renderNotification(notification);
29419
+ this.notifications.push({ notification, node });
29420
+ this._announce(notification.options.message || "Notification");
29421
+ };
29422
+ NotyfView2.prototype._renderNotification = function(notification) {
29423
+ var _a3;
29424
+ var card = this._buildNotificationCard(notification);
29425
+ var className = notification.options.className;
29426
+ if (className) {
29427
+ (_a3 = card.classList).add.apply(_a3, className.split(" "));
29428
+ }
29429
+ this.container.appendChild(card);
29430
+ return card;
29431
+ };
29432
+ NotyfView2.prototype._popRenderedNotification = function(notification) {
29433
+ var idx = -1;
29434
+ for (var i2 = 0; i2 < this.notifications.length && idx < 0; i2++) {
29435
+ if (this.notifications[i2].notification === notification) {
29436
+ idx = i2;
29437
+ }
29438
+ }
29439
+ if (idx !== -1) {
29440
+ return this.notifications.splice(idx, 1)[0];
29441
+ }
29442
+ return;
29443
+ };
29444
+ NotyfView2.prototype.getXPosition = function(options) {
29445
+ var _a3;
29446
+ return ((_a3 = options === null || options === void 0 ? void 0 : options.position) === null || _a3 === void 0 ? void 0 : _a3.x) || "right";
29447
+ };
29448
+ NotyfView2.prototype.getYPosition = function(options) {
29449
+ var _a3;
29450
+ return ((_a3 = options === null || options === void 0 ? void 0 : options.position) === null || _a3 === void 0 ? void 0 : _a3.y) || "bottom";
29451
+ };
29452
+ NotyfView2.prototype.adjustContainerAlignment = function(options) {
29453
+ var align = this.X_POSITION_FLEX_MAP[this.getXPosition(options)];
29454
+ var justify = this.Y_POSITION_FLEX_MAP[this.getYPosition(options)];
29455
+ var style = this.container.style;
29456
+ style.setProperty("justify-content", justify);
29457
+ style.setProperty("align-items", align);
29458
+ };
29459
+ NotyfView2.prototype._buildNotificationCard = function(notification) {
29460
+ var _this = this;
29461
+ var options = notification.options;
29462
+ var iconOpts = options.icon;
29463
+ this.adjustContainerAlignment(options);
29464
+ var notificationElem = this._createHTMLElement({ tagName: "div", className: "notyf__toast" });
29465
+ var ripple = this._createHTMLElement({ tagName: "div", className: "notyf__ripple" });
29466
+ var wrapper = this._createHTMLElement({ tagName: "div", className: "notyf__wrapper" });
29467
+ var message = this._createHTMLElement({ tagName: "div", className: "notyf__message" });
29468
+ message.innerHTML = options.message || "";
29469
+ var mainColor = options.background || options.backgroundColor;
29470
+ if (iconOpts) {
29471
+ var iconContainer = this._createHTMLElement({ tagName: "div", className: "notyf__icon" });
29472
+ if (typeof iconOpts === "string" || iconOpts instanceof String)
29473
+ iconContainer.innerHTML = new String(iconOpts).valueOf();
29474
+ if (typeof iconOpts === "object") {
29475
+ var _a3 = iconOpts.tagName, tagName = _a3 === void 0 ? "i" : _a3, className_1 = iconOpts.className, text = iconOpts.text, _b3 = iconOpts.color, color = _b3 === void 0 ? mainColor : _b3;
29476
+ var iconElement = this._createHTMLElement({ tagName, className: className_1, text });
29477
+ if (color)
29478
+ iconElement.style.color = color;
29479
+ iconContainer.appendChild(iconElement);
29480
+ }
29481
+ wrapper.appendChild(iconContainer);
29482
+ }
29483
+ wrapper.appendChild(message);
29484
+ notificationElem.appendChild(wrapper);
29485
+ if (mainColor) {
29486
+ if (options.ripple) {
29487
+ ripple.style.background = mainColor;
29488
+ notificationElem.appendChild(ripple);
29489
+ } else {
29490
+ notificationElem.style.background = mainColor;
29491
+ }
29492
+ }
29493
+ if (options.dismissible) {
29494
+ var dismissWrapper = this._createHTMLElement({ tagName: "div", className: "notyf__dismiss" });
29495
+ var dismissButton = this._createHTMLElement({
29496
+ tagName: "button",
29497
+ className: "notyf__dismiss-btn"
29498
+ });
29499
+ dismissWrapper.appendChild(dismissButton);
29500
+ wrapper.appendChild(dismissWrapper);
29501
+ notificationElem.classList.add("notyf__toast--dismissible");
29502
+ dismissButton.addEventListener("click", function(event) {
29503
+ var _a4, _b4;
29504
+ (_b4 = (_a4 = _this.events)[NotyfEvent.Dismiss]) === null || _b4 === void 0 ? void 0 : _b4.call(_a4, { target: notification, event });
29505
+ event.stopPropagation();
29506
+ });
29507
+ }
29508
+ notificationElem.addEventListener("click", function(event) {
29509
+ var _a4, _b4;
29510
+ return (_b4 = (_a4 = _this.events)[NotyfEvent.Click]) === null || _b4 === void 0 ? void 0 : _b4.call(_a4, { target: notification, event });
29511
+ });
29512
+ var className = this.getYPosition(options) === "top" ? "upper" : "lower";
29513
+ notificationElem.classList.add("notyf__toast--" + className);
29514
+ return notificationElem;
29515
+ };
29516
+ NotyfView2.prototype._createHTMLElement = function(_a3) {
29517
+ var tagName = _a3.tagName, className = _a3.className, text = _a3.text;
29518
+ var elem = document.createElement(tagName);
29519
+ if (className) {
29520
+ elem.className = className;
29521
+ }
29522
+ elem.textContent = text || null;
29523
+ return elem;
29524
+ };
29525
+ NotyfView2.prototype._createA11yContainer = function() {
29526
+ var a11yContainer = this._createHTMLElement({ tagName: "div", className: "notyf-announcer" });
29527
+ a11yContainer.setAttribute("aria-atomic", "true");
29528
+ a11yContainer.setAttribute("aria-live", "polite");
29529
+ a11yContainer.style.border = "0";
29530
+ a11yContainer.style.clip = "rect(0 0 0 0)";
29531
+ a11yContainer.style.height = "1px";
29532
+ a11yContainer.style.margin = "-1px";
29533
+ a11yContainer.style.overflow = "hidden";
29534
+ a11yContainer.style.padding = "0";
29535
+ a11yContainer.style.position = "absolute";
29536
+ a11yContainer.style.width = "1px";
29537
+ a11yContainer.style.outline = "0";
29538
+ document.body.appendChild(a11yContainer);
29539
+ this.a11yContainer = a11yContainer;
29540
+ };
29541
+ NotyfView2.prototype._announce = function(message) {
29542
+ var _this = this;
29543
+ this.a11yContainer.textContent = "";
29544
+ setTimeout(function() {
29545
+ _this.a11yContainer.textContent = message;
29546
+ }, 100);
29547
+ };
29548
+ NotyfView2.prototype._getAnimationEndEventName = function() {
29549
+ var el2 = document.createElement("_fake");
29550
+ var transitions = {
29551
+ MozTransition: "animationend",
29552
+ OTransition: "oAnimationEnd",
29553
+ WebkitTransition: "webkitAnimationEnd",
29554
+ transition: "animationend"
29555
+ };
29556
+ var t2;
29557
+ for (t2 in transitions) {
29558
+ if (el2.style[t2] !== void 0) {
29559
+ return transitions[t2];
29560
+ }
29561
+ }
29562
+ return "animationend";
29563
+ };
29564
+ return NotyfView2;
29565
+ })()
29566
+ );
29567
+ var Notyf = (
29568
+ /** @class */
29569
+ (function() {
29570
+ function Notyf2(opts) {
29571
+ var _this = this;
29572
+ this.dismiss = this._removeNotification;
29573
+ this.notifications = new NotyfArray();
29574
+ this.view = new NotyfView();
29575
+ var types2 = this.registerTypes(opts);
29576
+ this.options = __assign(__assign({}, DEFAULT_OPTIONS), opts);
29577
+ this.options.types = types2;
29578
+ this.notifications.onUpdate(function(elem, type2) {
29579
+ return _this.view.update(elem, type2);
29580
+ });
29581
+ this.view.on(NotyfEvent.Dismiss, function(_a3) {
29582
+ var target = _a3.target, event = _a3.event;
29583
+ _this._removeNotification(target);
29584
+ target["triggerEvent"](NotyfEvent.Dismiss, event);
29585
+ });
29586
+ this.view.on(NotyfEvent.Click, function(_a3) {
29587
+ var target = _a3.target, event = _a3.event;
29588
+ return target["triggerEvent"](NotyfEvent.Click, event);
29589
+ });
29590
+ }
29591
+ __name(Notyf2, "Notyf");
29592
+ Notyf2.prototype.error = function(payload) {
29593
+ var options = this.normalizeOptions("error", payload);
29594
+ return this.open(options);
29595
+ };
29596
+ Notyf2.prototype.success = function(payload) {
29597
+ var options = this.normalizeOptions("success", payload);
29598
+ return this.open(options);
29599
+ };
29600
+ Notyf2.prototype.open = function(options) {
29601
+ var defaultOpts = this.options.types.find(function(_a3) {
29602
+ var type2 = _a3.type;
29603
+ return type2 === options.type;
29604
+ }) || {};
29605
+ var config2 = __assign(__assign({}, defaultOpts), options);
29606
+ this.assignProps(["ripple", "position", "dismissible"], config2);
29607
+ var notification = new NotyfNotification(config2);
29608
+ this._pushNotification(notification);
29609
+ return notification;
29610
+ };
29611
+ Notyf2.prototype.dismissAll = function() {
29612
+ while (this.notifications.splice(0, 1))
29613
+ ;
29614
+ };
29615
+ Notyf2.prototype.assignProps = function(props, config2) {
29616
+ var _this = this;
29617
+ props.forEach(function(prop) {
29618
+ config2[prop] = config2[prop] == null ? _this.options[prop] : config2[prop];
29619
+ });
29620
+ };
29621
+ Notyf2.prototype._pushNotification = function(notification) {
29622
+ var _this = this;
29623
+ this.notifications.push(notification);
29624
+ var duration = notification.options.duration !== void 0 ? notification.options.duration : this.options.duration;
29625
+ if (duration) {
29626
+ setTimeout(function() {
29627
+ return _this._removeNotification(notification);
29628
+ }, duration);
29629
+ }
29630
+ };
29631
+ Notyf2.prototype._removeNotification = function(notification) {
29632
+ var index2 = this.notifications.indexOf(notification);
29633
+ if (index2 !== -1) {
29634
+ this.notifications.splice(index2, 1);
29635
+ }
29636
+ };
29637
+ Notyf2.prototype.normalizeOptions = function(type2, payload) {
29638
+ var options = { type: type2 };
29639
+ if (typeof payload === "string") {
29640
+ options.message = payload;
29641
+ } else if (typeof payload === "object") {
29642
+ options = __assign(__assign({}, options), payload);
29643
+ }
29644
+ return options;
29645
+ };
29646
+ Notyf2.prototype.registerTypes = function(opts) {
29647
+ var incomingTypes = (opts && opts.types || []).slice();
29648
+ var finalDefaultTypes = DEFAULT_OPTIONS.types.map(function(defaultType) {
29649
+ var userTypeIdx = -1;
29650
+ incomingTypes.forEach(function(t2, idx) {
29651
+ if (t2.type === defaultType.type)
29652
+ userTypeIdx = idx;
29653
+ });
29654
+ var userType = userTypeIdx !== -1 ? incomingTypes.splice(userTypeIdx, 1)[0] : {};
29655
+ return __assign(__assign({}, defaultType), userType);
29656
+ });
29657
+ return finalDefaultTypes.concat(incomingTypes);
29658
+ };
29659
+ return Notyf2;
29660
+ })()
29661
+ );
29370
29662
  const DefaultDomOptions = { topbar: true };
29371
29663
  const _Dom = class _Dom {
29372
29664
  constructor(_options = DefaultDomOptions) {
@@ -29375,8 +29667,10 @@ const _Dom = class _Dom {
29375
29667
  __publicField(this, "_window", globalThis.window);
29376
29668
  __publicField(this, "_topbarEnabled", false);
29377
29669
  __publicField(this, "_topbarShow", false);
29670
+ __publicField(this, "_toast");
29378
29671
  const options = { ...DefaultDomOptions, ..._options };
29379
29672
  this._topbarEnabled = options.topbar ?? true;
29673
+ this._toast = new Notyf(options.toast);
29380
29674
  }
29381
29675
  get document() {
29382
29676
  return this._document;
@@ -29387,6 +29681,9 @@ const _Dom = class _Dom {
29387
29681
  get window() {
29388
29682
  return this._window;
29389
29683
  }
29684
+ get toast() {
29685
+ return this._toast;
29686
+ }
29390
29687
  async topbar(show) {
29391
29688
  if (!this._topbarEnabled) return;
29392
29689
  this._topbarShow = show ?? !this._topbarShow;
@@ -29401,6 +29698,26 @@ const _Dom = class _Dom {
29401
29698
  if (!this._topbarEnabled) return;
29402
29699
  topbar.progress(value);
29403
29700
  }
29701
+ /**
29702
+ * Shows a quick flash indicator for the TTY number in the top-right corner
29703
+ * @param ttyNumber - TTY number to display
29704
+ */
29705
+ showTtyIndicator(ttyNumber) {
29706
+ const existingIndicator = this._document.getElementById("tty-indicator");
29707
+ if (existingIndicator) existingIndicator.remove();
29708
+ const indicator = this._document.createElement("div");
29709
+ indicator.id = "tty-indicator";
29710
+ indicator.className = "tty-indicator";
29711
+ indicator.textContent = `TTY ${ttyNumber}`;
29712
+ this._document.body.appendChild(indicator);
29713
+ requestAnimationFrame(() => indicator.classList.add("show"));
29714
+ setTimeout(() => {
29715
+ indicator.classList.remove("show");
29716
+ setTimeout(() => {
29717
+ if (indicator.parentNode) indicator.remove();
29718
+ }, 300);
29719
+ }, 1500);
29720
+ }
29404
29721
  };
29405
29722
  __name(_Dom, "Dom");
29406
29723
  let Dom = _Dom;
@@ -81555,7 +81872,7 @@ function createCommand$1b(kernel, shell, terminal) {
81555
81872
  if (!clientConfig.accessToken) {
81556
81873
  throw new Error("client configuration must include accessToken");
81557
81874
  }
81558
- const dropboxModule = await import("./index-BJ4HPRTi.js");
81875
+ const dropboxModule = await import("./index-9M8pZtzV.js");
81559
81876
  const DropboxClient = dropboxModule.Dropbox;
81560
81877
  const client = new DropboxClient(clientConfig);
81561
81878
  const cacheTTL = mountOptions.cacheTTL ? parseInt(mountOptions.cacheTTL, 10) : void 0;
@@ -81895,7 +82212,7 @@ Mount summary: ${successCount} succeeded, ${failCount} failed`);
81895
82212
  await writelnStderr(process2, terminal, chalk$1.red("mount: client configuration must include accessToken"));
81896
82213
  return 1;
81897
82214
  }
81898
- const dropboxModule = await import("./index-BJ4HPRTi.js");
82215
+ const dropboxModule = await import("./index-9M8pZtzV.js");
81899
82216
  const DropboxClient = dropboxModule.Dropbox;
81900
82217
  const client = new DropboxClient(clientConfig);
81901
82218
  const cacheTTL = mountOptions.cacheTTL ? parseInt(mountOptions.cacheTTL, 10) : void 0;
@@ -96172,12 +96489,12 @@ function createCommand$E(kernel, shell, terminal) {
96172
96489
  }
96173
96490
  break;
96174
96491
  }
96175
- let data = buffer2.subarray(0, bytesRead);
96492
+ let data = buffer2.slice(0, bytesRead);
96176
96493
  if (skipBytes > 0) {
96177
96494
  const toSkip = Math.min(data.length, skipBytes - skipped);
96178
96495
  skipped += toSkip;
96179
96496
  if (toSkip < data.length) {
96180
- data = data.subarray(toSkip);
96497
+ data = data.slice(toSkip);
96181
96498
  } else {
96182
96499
  continue;
96183
96500
  }
@@ -124989,7 +125306,7 @@ const TerminalCommands = /* @__PURE__ */ __name((kernel, shell, terminal) => {
124989
125306
  { name: "reinstall", type: Boolean, description: "Reinstall the package if it is already installed" }
124990
125307
  ],
124991
125308
  run: /* @__PURE__ */ __name(async (argv) => {
124992
- const { default: install } = await import("./install-CYHZu4La.js");
125309
+ const { default: install } = await import("./install-C78wAcrD.js");
124993
125310
  return await install({ kernel, shell, terminal, args: [argv.package, argv.registry, argv.reinstall] });
124994
125311
  }, "run")
124995
125312
  }),
@@ -125004,7 +125321,7 @@ const TerminalCommands = /* @__PURE__ */ __name((kernel, shell, terminal) => {
125004
125321
  { name: "package", type: String, typeLabel: "{underline package}", defaultOption: true, description: "The package name and optional version (e.g. package@1.0.0). If no version is specified, all versions will be uninstalled." }
125005
125322
  ],
125006
125323
  run: /* @__PURE__ */ __name(async (argv) => {
125007
- const { default: uninstall } = await import("./uninstall-CGDotg6T.js");
125324
+ const { default: uninstall } = await import("./uninstall-qEkzPbxE.js");
125008
125325
  return await uninstall({ kernel, shell, terminal, args: [argv.package] });
125009
125326
  }, "run")
125010
125327
  }),
@@ -126377,10 +126694,11 @@ const _Terminal = class _Terminal extends Dl {
126377
126694
  try {
126378
126695
  this.events.dispatch(TerminalEvents.EXECUTE, { terminal: this, command: cmdToExecute });
126379
126696
  await this._shell.execute(cmdToExecute);
126380
- this._cursorPosition = 0;
126381
- this.write(ansi$6.erase.inLine(2) + this.prompt());
126382
126697
  } catch (error2) {
126383
126698
  this.writeln(chalk$2.red(`${error2}`));
126699
+ } finally {
126700
+ this._cursorPosition = 0;
126701
+ this.write(ansi$6.erase.inLine(2) + this.prompt());
126384
126702
  }
126385
126703
  } else {
126386
126704
  this._cmd = "";
@@ -142785,7 +143103,7 @@ async function createWasiPreview2Bindings({
142785
143103
  const stdinReader = streams2.stdin.getReader();
142786
143104
  const stdoutWriter = streams2.stdout.getWriter();
142787
143105
  const stderrWriter = streams2.stderr.getWriter();
142788
- const jco = await import("./browser-97JnRk6A.js");
143106
+ const jco = await import("./browser-BjnxDyrD.js");
142789
143107
  const { transpile: transpileComponent } = jco;
142790
143108
  const wasiCli = await Promise.resolve().then(() => cli);
142791
143109
  const wasiCliAny = wasiCli;
@@ -144974,10 +145292,10 @@ function parseFstabFile(content) {
144974
145292
  return entries2;
144975
145293
  }
144976
145294
  __name(parseFstabFile, "parseFstabFile");
144977
- const __vite_import_meta_env__ = { "AUTHOR": { "name": "Jay Mathis", "email": "code@mathis.network", "url": "https://github.com/mathiscode" }, "BASE_URL": "/", "DESCRIPTION": "ecmaOS: Micro-kernel and framework for web technologies", "DEV": false, "ECMAOS_APP_SHOW_DEFAULT_LOGIN": "true", "ECMAOS_BOOT_DISABLE_ISSUES": "true", "ECMAOS_BOOT_DISABLE_LOGO_CONSOLE": "false", "ECMAOS_BOOT_DISABLE_LOGO_FIGLET": "false", "ECMAOS_BOOT_DISABLE_TIPS": "false", "ECMAOS_INITFS": "/initfs.tar.gz", "ECMAOS_KERNEL_INTERVALS_PROC": "1000", "ECMAOS_KERNEL_MODULES": "@ecmaos-modules/boilerplate@0.1.0", "ECMAOS_METAL_SOCKET": "ws://localhost:30445/socket", "ECMAOS_OPENTELEMETRY_ENDPOINT": "http://localhost:4318/v1/traces", "ECMAOS_PORT": "30443", "ECMAOS_RECOMMENDED_APPS": "@ecmaos-apps/code,@ecmaos-apps/edit,@ecmaos-apps/ai,@ecmaos-apps/webamp,@ecmaos-apps/news", "HOMEPAGE": "https://ecmaos.sh", "KNOWN_ISSUES": ["It's best to stick to Chromium-based browsers for the most features", "Keyboard is broken on mobile; ecmaOS is not mobile-friendly at this time", "Don't expect any sort of POSIX compliance at this stage", "Most commands/devices are very basic implementations, not complete reproductions", "stdin/stdout/stderr streams and redirection can be wonky and don't work everywhere, but are coming along", "CTRL-C will return you to a prompt, but doesn't currently interrupt a process", "Lots of unfinished work; watch your step"], "MODE": "production", "NAME": "@ecmaos/kernel", "PROD": true, "REPOSITORY": "https://github.com/ecmaos/ecmaos", "SSR": false, "TIPS": ["ecmaos.sh has no backend server; all data is stored and processed entirely in your browser", "If it ever fails to boot, check your logs, try clearing all data, try incognito mode, or try another browser", "You can switch between TTYs using CTRL+SHIFT+<0-9>", "You can run some devices that offer a CLI - e.g. '/dev/battery --help'", "Use the 'install' command to install packages - e.g. 'install @ecmaos-apps/news'", "You can install any NPM package - e.g. 'install jquery'", "You can use the 'mount' command to view and mount filesystems (/etc/fstab supported)", "Use the 'news' command to see the latest news about ecmaOS", "Type 'ls /bin' to see all built-in commands", "Type 'ls /usr/bin' to see all installed commands", "Type 'ls /dev' to see all available devices", "You can set your environment variables in ~/.env (try setting PROMPT to a PS1-like format)", "You can register and login with a passkey: 'passkey register' and 'passkey list'", "The 'man' command can be used to view the manual pages for packages: 'man @ecmaos/kernel'", "Try 'fetch /xkcd-os.sixel'"], "VERSION": "0.10.1", "XTERM_VERSION": "6.0.0", "ZENFS_VERSION": "2.4.4" };
145295
+ const __vite_import_meta_env__ = { "AUTHOR": { "name": "Jay Mathis", "email": "code@mathis.network", "url": "https://github.com/mathiscode" }, "BASE_URL": "/", "DESCRIPTION": "ecmaOS: A web-native operating system and framework for web technologies", "DEV": false, "ECMAOS_APP_SHOW_DEFAULT_LOGIN": "true", "ECMAOS_AUTOLOGIN_PASSWORD": "root", "ECMAOS_AUTOLOGIN_USERNAME": "root", "ECMAOS_BOOT_DISABLE_ISSUES": "true", "ECMAOS_BOOT_DISABLE_LOGO_CONSOLE": "false", "ECMAOS_BOOT_DISABLE_LOGO_FIGLET": "false", "ECMAOS_BOOT_DISABLE_TIPS": "false", "ECMAOS_INITFS": "/initfs.tar.gz", "ECMAOS_KERNEL_INTERVALS_PROC": "1000", "ECMAOS_KERNEL_MODULES": "@ecmaos-modules/boilerplate@0.1.0", "ECMAOS_METAL_SOCKET": "ws://localhost:30445/socket", "ECMAOS_OPENTELEMETRY_ENDPOINT": "http://localhost:4318/v1/traces", "ECMAOS_PORT": "30443", "ECMAOS_RECOMMENDED_APPS": "@ecmaos-apps/code,@ecmaos-apps/edit,@ecmaos-apps/ai,@ecmaos-apps/webamp,@ecmaos-apps/news", "HOMEPAGE": "https://ecmaos.sh", "KNOWN_ISSUES": ["To disable known issues, type `touch /etc/noissues`", "It's best to stick to Chromium-based browsers for the most features", "Keyboard is broken on mobile; ecmaOS is not mobile-friendly at this time", "Don't expect any sort of POSIX compliance at this stage", "Most commands/devices are very basic implementations, not complete reproductions", "CTRL-C will return you to a prompt, but doesn't currently interrupt a process", "Lots of unfinished work; watch your step"], "MODE": "production", "NAME": "@ecmaos/kernel", "PROD": true, "REPOSITORY": "https://github.com/ecmaos/ecmaos", "SSR": false, "TIPS": ["To disable tips, type `touch /etc/notips`", "ecmaos.sh has no backend server; all data is stored and processed entirely in your browser", "If it ever fails to boot, check your logs, try clearing all data, try incognito mode, or try another browser", "You can switch between TTYs using CTRL+SHIFT+<0-9>", "You can run some devices that offer a CLI - e.g. '/dev/battery --help'", "Use the 'install' command to install packages - e.g. 'install @ecmaos-apps/news'", "You can install any NPM package - e.g. 'install jquery'", "You can use the 'mount' command to view and mount filesystems (/etc/fstab supported)", "Use the 'news' command to see the latest news about ecmaOS", "Type 'ls /bin' to see all built-in commands", "Type 'ls /usr/bin' to see all installed commands", "Type 'ls /dev' to see all available devices", "You can set your environment variables in ~/.env (try setting PROMPT to a PS1-like format)", "You can register and login with a passkey: 'passkey register' and 'passkey list'", "The 'man' command can be used to view the manual pages for packages: 'man @ecmaos/kernel'", "Try 'fetch /xkcd-os.sixel'"], "VERSION": "0.10.3", "XTERM_VERSION": "6.0.0", "ZENFS_VERSION": "2.4.4" };
144978
145296
  var define_import_meta_env_AUTHOR_default = { name: "Jay Mathis", email: "code@mathis.network", url: "https://github.com/mathiscode" };
144979
- var define_import_meta_env_KNOWN_ISSUES_default = ["It's best to stick to Chromium-based browsers for the most features", "Keyboard is broken on mobile; ecmaOS is not mobile-friendly at this time", "Don't expect any sort of POSIX compliance at this stage", "Most commands/devices are very basic implementations, not complete reproductions", "stdin/stdout/stderr streams and redirection can be wonky and don't work everywhere, but are coming along", "CTRL-C will return you to a prompt, but doesn't currently interrupt a process", "Lots of unfinished work; watch your step"];
144980
- var define_import_meta_env_TIPS_default = ["ecmaos.sh has no backend server; all data is stored and processed entirely in your browser", "If it ever fails to boot, check your logs, try clearing all data, try incognito mode, or try another browser", "You can switch between TTYs using CTRL+SHIFT+<0-9>", "You can run some devices that offer a CLI - e.g. '/dev/battery --help'", "Use the 'install' command to install packages - e.g. 'install @ecmaos-apps/news'", "You can install any NPM package - e.g. 'install jquery'", "You can use the 'mount' command to view and mount filesystems (/etc/fstab supported)", "Use the 'news' command to see the latest news about ecmaOS", "Type 'ls /bin' to see all built-in commands", "Type 'ls /usr/bin' to see all installed commands", "Type 'ls /dev' to see all available devices", "You can set your environment variables in ~/.env (try setting PROMPT to a PS1-like format)", "You can register and login with a passkey: 'passkey register' and 'passkey list'", "The 'man' command can be used to view the manual pages for packages: 'man @ecmaos/kernel'", "Try 'fetch /xkcd-os.sixel'"];
145297
+ var define_import_meta_env_KNOWN_ISSUES_default = ["To disable known issues, type `touch /etc/noissues`", "It's best to stick to Chromium-based browsers for the most features", "Keyboard is broken on mobile; ecmaOS is not mobile-friendly at this time", "Don't expect any sort of POSIX compliance at this stage", "Most commands/devices are very basic implementations, not complete reproductions", "CTRL-C will return you to a prompt, but doesn't currently interrupt a process", "Lots of unfinished work; watch your step"];
145298
+ var define_import_meta_env_TIPS_default = ["To disable tips, type `touch /etc/notips`", "ecmaos.sh has no backend server; all data is stored and processed entirely in your browser", "If it ever fails to boot, check your logs, try clearing all data, try incognito mode, or try another browser", "You can switch between TTYs using CTRL+SHIFT+<0-9>", "You can run some devices that offer a CLI - e.g. '/dev/battery --help'", "Use the 'install' command to install packages - e.g. 'install @ecmaos-apps/news'", "You can install any NPM package - e.g. 'install jquery'", "You can use the 'mount' command to view and mount filesystems (/etc/fstab supported)", "Use the 'news' command to see the latest news about ecmaOS", "Type 'ls /bin' to see all built-in commands", "Type 'ls /usr/bin' to see all installed commands", "Type 'ls /dev' to see all available devices", "You can set your environment variables in ~/.env (try setting PROMPT to a PS1-like format)", "You can register and login with a passkey: 'passkey register' and 'passkey list'", "The 'man' command can be used to view the manual pages for packages: 'man @ecmaos/kernel'", "Try 'fetch /xkcd-os.sixel'"];
144981
145299
  const DefaultKernelOptions = {
144982
145300
  devices: DefaultDevices,
144983
145301
  dom: DefaultDomOptions,
@@ -145019,7 +145337,7 @@ const _Kernel = class _Kernel {
145019
145337
  /** Name of the kernel */
145020
145338
  __publicField(this, "name", "@ecmaos/kernel");
145021
145339
  /** Version string of the kernel */
145022
- __publicField(this, "version", "0.10.1");
145340
+ __publicField(this, "version", "0.10.3");
145023
145341
  /** Authentication and authorization service */
145024
145342
  __publicField(this, "auth");
145025
145343
  /** BIOS module providing low-level functionality */
@@ -145072,8 +145390,6 @@ const _Kernel = class _Kernel {
145072
145390
  __publicField(this, "telemetry");
145073
145391
  /** Terminal interface for user interaction */
145074
145392
  __publicField(this, "terminal");
145075
- /** Toast notification service */
145076
- __publicField(this, "toast");
145077
145393
  /** User management service */
145078
145394
  __publicField(this, "users");
145079
145395
  /** WebAssembly service */
@@ -145111,7 +145427,6 @@ const _Kernel = class _Kernel {
145111
145427
  this.storage = new Storage({ kernel: this });
145112
145428
  this.telemetry = new Telemetry({ kernel: this });
145113
145429
  this.terminal = new Terminal({ kernel: this, socket: this.options.socket, tty: 0 });
145114
- this.toast = new Notyf(this.options.toast);
145115
145430
  this.users = new Users({ kernel: this });
145116
145431
  this.windows = new Windows();
145117
145432
  this.wasm = new Wasm({ kernel: this });
@@ -145317,7 +145632,7 @@ const _Kernel = class _Kernel {
145317
145632
  ];
145318
145633
  this.terminal.writeln(chalk$2.red.bold(`🐉 ${this.i18n.ns.kernel("experimental")} 🐉`));
145319
145634
  this.terminal.writeln(
145320
- `${this.terminal.createSpecialLink("https://ecmaos.sh", "@ecmaos/kernel")}@${"0.10.1"}` + chalk$2.cyan(` [${dependencyLinks.map((link2) => link2.link).join(", ")}]`)
145635
+ `${this.terminal.createSpecialLink("https://ecmaos.sh", "@ecmaos/kernel")}@${"0.10.3"}` + chalk$2.cyan(` [${dependencyLinks.map((link2) => link2.link).join(", ")}]`)
145321
145636
  );
145322
145637
  this.terminal.writeln(`${this.i18n.ns.kernel("madeBy")} ${this.terminal.createSpecialLink(
145323
145638
  define_import_meta_env_AUTHOR_default?.url || "https://github.com/mathiscode",
@@ -145325,7 +145640,7 @@ const _Kernel = class _Kernel {
145325
145640
  )}`);
145326
145641
  this.terminal.writeln("https://github.com/ecmaos/ecmaos\n");
145327
145642
  if (define_import_meta_env_KNOWN_ISSUES_default && false) ;
145328
- if (true) {
145643
+ if (!this.filesystem.fsSync.existsSync("/etc/notips")) {
145329
145644
  const tipsList = this.i18n.ns.kernel("tipsList", { returnObjects: true });
145330
145645
  if (Array.isArray(tipsList) && tipsList.length > 0) {
145331
145646
  this.terminal.writeln(chalk$2.green.bold(this.i18n.ns.kernel("tips")));
@@ -145340,15 +145655,15 @@ const _Kernel = class _Kernel {
145340
145655
  if (logoFiglet && true) {
145341
145656
  console.log(`%c${logoFiglet}`, "color: green");
145342
145657
  console.log(`%c${"https://github.com/ecmaos/ecmaos"}`, "color: blue; text-decoration: underline; font-size: 16px");
145343
- this.log.info(`${"@ecmaos/kernel"} v${"0.10.1"}`);
145658
+ this.log.info(`${"@ecmaos/kernel"} v${"0.10.3"}`);
145344
145659
  }
145345
145660
  if (Notification?.permission === "default") Notification.requestPermission();
145346
145661
  if (Notification?.permission === "denied") this.log.warn(t2("kernel.permissionNotificationDenied", "Notification permission denied"));
145347
145662
  this.intervals.set("title-blink", () => {
145348
145663
  globalThis.document.title = globalThis.document.title.includes("_") ? "ecmaos# " : "ecmaos# _";
145349
145664
  }, 600);
145350
- this.toast.success(`${"@ecmaos/kernel"} v${"0.10.1"}`);
145351
- this._showTtyIndicator(this._activeTty);
145665
+ this.dom.toast.success(`${"@ecmaos/kernel"} v${"0.10.3"}`);
145666
+ this.dom.showTtyIndicator(this._activeTty);
145352
145667
  }
145353
145668
  if (await this.filesystem.fs.exists("/run")) {
145354
145669
  const entries2 = await this.filesystem.fs.readdir("/run");
@@ -145490,7 +145805,7 @@ const _Kernel = class _Kernel {
145490
145805
  this.shell.cwd = localStorage.getItem(`cwd:${this.shell.credentials.uid}`) ?? (user.uid === 0 ? "/" : user.home || "/");
145491
145806
  const userCrontabPath = path$2.join(user.home || "/root", ".config", "crontab");
145492
145807
  await this.loadCrontab(userCrontabPath, "user");
145493
- const screensavers = /* @__PURE__ */ Object.assign({ "./lib/screensavers/blank.ts": __vite_glob_0_0, "./lib/screensavers/matrix.ts": __vite_glob_0_1 });
145808
+ const screensavers = /* @__PURE__ */ Object.assign({ "./lib/screensavers/blank.ts": __vite_glob_0_0, "./lib/screensavers/matrix.ts": __vite_glob_0_1, "./lib/screensavers/toasters.ts": __vite_glob_0_2 });
145494
145809
  for (const [key, saver] of Object.entries(screensavers)) {
145495
145810
  this.screensavers.set(
145496
145811
  key.replace("./lib/screensavers/", "").replace(".ts", ""),
@@ -145560,7 +145875,7 @@ const _Kernel = class _Kernel {
145560
145875
  this.log.error(error2);
145561
145876
  this._state = KernelState.PANIC;
145562
145877
  this.events.dispatch(KernelEvents.PANIC, { error: error2 });
145563
- this.toast.error({
145878
+ this.dom.toast.error({
145564
145879
  message: this.i18n.ns.kernel("panic"),
145565
145880
  duration: 0,
145566
145881
  dismissible: false
@@ -146291,7 +146606,7 @@ const _Kernel = class _Kernel {
146291
146606
  memory: "?",
146292
146607
  platform: navigator.userAgentData?.platform || navigator?.platform || navigator.userAgent,
146293
146608
  querystring: location.search,
146294
- version: `${"@ecmaos/kernel"} ${"0.10.1"}`,
146609
+ version: `${"@ecmaos/kernel"} ${"0.10.3"}`,
146295
146610
  language: navigator.language,
146296
146611
  host: location.host,
146297
146612
  userAgent: navigator.userAgent,
@@ -146709,7 +147024,7 @@ const _Kernel = class _Kernel {
146709
147024
  }
146710
147025
  const targetContainer = document.getElementById(`terminal-tty${ttyNumber}`);
146711
147026
  if (targetContainer) targetContainer.classList.add("active");
146712
- this._showTtyIndicator(ttyNumber);
147027
+ this.dom.showTtyIndicator(ttyNumber);
146713
147028
  let targetShell = this._shells.get(ttyNumber);
146714
147029
  if (!targetShell) targetShell = await this.createShell(ttyNumber);
146715
147030
  requestAnimationFrame(() => {
@@ -146718,26 +147033,6 @@ const _Kernel = class _Kernel {
146718
147033
  targetShell.terminal.listen();
146719
147034
  });
146720
147035
  }
146721
- /**
146722
- * Shows a quick flash indicator for the TTY number in the top-right corner
146723
- * @param ttyNumber - TTY number to display
146724
- */
146725
- _showTtyIndicator(ttyNumber) {
146726
- const existingIndicator = document.getElementById("tty-indicator");
146727
- if (existingIndicator) existingIndicator.remove();
146728
- const indicator = document.createElement("div");
146729
- indicator.id = "tty-indicator";
146730
- indicator.className = "tty-indicator";
146731
- indicator.textContent = `TTY ${ttyNumber}`;
146732
- document.body.appendChild(indicator);
146733
- requestAnimationFrame(() => indicator.classList.add("show"));
146734
- setTimeout(() => {
146735
- indicator.classList.remove("show");
146736
- setTimeout(() => {
146737
- if (indicator.parentNode) indicator.remove();
146738
- }, 300);
146739
- }, 1500);
146740
- }
146741
147036
  /**
146742
147037
  * Executes an operation with root (or other) privileges
146743
147038
  * @param {() => Promise<T>} operation - Operation to execute
@@ -146845,4 +147140,4 @@ export {
146845
147140
  semver as s,
146846
147141
  types$1 as t
146847
147142
  };
146848
- //# sourceMappingURL=kernel-CBc_SGe6.js.map
147143
+ //# sourceMappingURL=kernel-C3PA_-lt.js.map