boo-flash 0.1.7 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/app.js CHANGED
@@ -1,10 +1,10 @@
1
- // node_modules/@opentui/solid/index.js
1
+ // ../../node_modules/@opentui/solid/index.js
2
2
  import { CliRenderer, createCliRenderer, engine as engine2 } from "@opentui/core";
3
3
  import { createTestRenderer } from "@opentui/core/testing";
4
4
  import { ASCIIFontRenderable, BoxRenderable, CodeRenderable, DiffRenderable, ImageRenderable, InputRenderable, LineNumberRenderable, MarkdownRenderable, ScrollBoxRenderable, SelectRenderable, TabSelectRenderable, TextareaRenderable, TextAttributes, TextNodeRenderable, TextRenderable } from "@opentui/core";
5
5
  import { engine, Timeline } from "@opentui/core";
6
6
 
7
- // node_modules/solid-js/dist/solid.js
7
+ // ../../node_modules/solid-js/dist/solid.js
8
8
  var sharedConfig = {
9
9
  context: void 0,
10
10
  registry: void 0,
@@ -837,10 +837,10 @@ function Show(props) {
837
837
  }, void 0, void 0);
838
838
  }
839
839
 
840
- // node_modules/@opentui/solid/index.js
840
+ // ../../node_modules/@opentui/solid/index.js
841
841
  import { BaseRenderable, createTextAttributes, ImageRenderable as ImageRenderable2, InputRenderable as InputRenderable2, InputRenderableEvents, isTextNodeRenderable, isEditBufferRenderable, parseColor, Renderable, RootTextNodeRenderable, ScrollBoxRenderable as ScrollBoxRenderable2, SelectRenderable as SelectRenderable2, SelectRenderableEvents, TabSelectRenderable as TabSelectRenderable2, TabSelectRenderableEvents, TextNodeRenderable as TextNodeRenderable2, TextRenderable as TextRenderable2 } from "@opentui/core";
842
842
 
843
- // node_modules/entities/dist/esm/decode-codepoint.js
843
+ // ../../node_modules/entities/dist/esm/decode-codepoint.js
844
844
  var _a;
845
845
  var decodeMap = /* @__PURE__ */ new Map([
846
846
  [0, 65533],
@@ -894,7 +894,7 @@ function replaceCodePoint(codePoint) {
894
894
  return (_a2 = decodeMap.get(codePoint)) !== null && _a2 !== void 0 ? _a2 : codePoint;
895
895
  }
896
896
 
897
- // node_modules/entities/dist/esm/internal/decode-shared.js
897
+ // ../../node_modules/entities/dist/esm/internal/decode-shared.js
898
898
  function decodeBase64(input) {
899
899
  const binary = (
900
900
  // eslint-disable-next-line n/no-unsupported-features/node-builtins
@@ -924,10 +924,10 @@ function decodeBase64(input) {
924
924
  return out;
925
925
  }
926
926
 
927
- // node_modules/entities/dist/esm/generated/decode-data-html.js
927
+ // ../../node_modules/entities/dist/esm/generated/decode-data-html.js
928
928
  var htmlDecodeTree = /* @__PURE__ */ decodeBase64("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");
929
929
 
930
- // node_modules/entities/dist/esm/internal/bin-trie-flags.js
930
+ // ../../node_modules/entities/dist/esm/internal/bin-trie-flags.js
931
931
  var BinTrieFlags;
932
932
  (function(BinTrieFlags2) {
933
933
  BinTrieFlags2[BinTrieFlags2["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
@@ -936,7 +936,7 @@ var BinTrieFlags;
936
936
  BinTrieFlags2[BinTrieFlags2["JUMP_TABLE"] = 127] = "JUMP_TABLE";
937
937
  })(BinTrieFlags || (BinTrieFlags = {}));
938
938
 
939
- // node_modules/entities/dist/esm/decode.js
939
+ // ../../node_modules/entities/dist/esm/decode.js
940
940
  var CharCodes;
941
941
  (function(CharCodes2) {
942
942
  CharCodes2[CharCodes2["NUM"] = 35] = "NUM";
@@ -1331,7 +1331,7 @@ function decodeHTMLStrict(htmlString) {
1331
1331
  return htmlDecoder(htmlString, DecodingMode.Strict);
1332
1332
  }
1333
1333
 
1334
- // node_modules/entities/dist/esm/escape.js
1334
+ // ../../node_modules/entities/dist/esm/escape.js
1335
1335
  var getCodePoint = (
1336
1336
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
1337
1337
  String.prototype.codePointAt == null ? (c, index) => (c.charCodeAt(index) & 64512) === 55296 ? (c.charCodeAt(index) - 55296) * 1024 + c.charCodeAt(index + 1) - 56320 + 65536 : c.charCodeAt(index) : (
@@ -1340,7 +1340,7 @@ var getCodePoint = (
1340
1340
  )
1341
1341
  );
1342
1342
 
1343
- // node_modules/entities/dist/esm/index.js
1343
+ // ../../node_modules/entities/dist/esm/index.js
1344
1344
  var EntityLevel;
1345
1345
  (function(EntityLevel2) {
1346
1346
  EntityLevel2[EntityLevel2["XML"] = 0] = "XML";
@@ -1355,7 +1355,7 @@ var EncodingMode;
1355
1355
  EncodingMode2[EncodingMode2["Text"] = 4] = "Text";
1356
1356
  })(EncodingMode || (EncodingMode = {}));
1357
1357
 
1358
- // node_modules/@opentui/solid/index.js
1358
+ // ../../node_modules/@opentui/solid/index.js
1359
1359
  import { BaseRenderable as BaseRenderable2, isTextNodeRenderable as isTextNodeRenderable2, TextNodeRenderable as TextNodeRenderable3, TextRenderable as TextRenderable3, Yoga } from "@opentui/core";
1360
1360
  import { BoxRenderable as BoxRenderable2, RootRenderable } from "@opentui/core";
1361
1361
  import { TimeToFirstDrawRenderable } from "@opentui/core";
@@ -2464,15 +2464,15 @@ var render = async (node, rendererOrConfig = {}) => {
2464
2464
  // src/index.tsx
2465
2465
  import { createCliRenderer as createCliRenderer2 } from "@opentui/core";
2466
2466
 
2467
- // ../../apps/shared/theme.ts
2467
+ // ../../packages/tui-shared/src/theme.ts
2468
2468
  import { lstatSync, readFileSync } from "node:fs";
2469
2469
  import { homedir } from "node:os";
2470
2470
  import { join } from "node:path";
2471
2471
 
2472
- // ../../apps/shared/Boo.ghostty
2472
+ // ../../packages/tui-shared/src/Boo.ghostty
2473
2473
  var Boo_default = "# Boo: the default terminal palette, matching the native installer.\nbackground = #08080E\nforeground = #F5ECD8\ncursor-color = #25D9E8\ncursor-text = #071014\nselection-background = #0E5965\nselection-foreground = #F5ECD8\npalette = 0=#171522\npalette = 1=#FF577D\npalette = 2=#2BE566\npalette = 3=#FFD51A\npalette = 4=#5355C9\npalette = 5=#FF2A8A\npalette = 6=#25D9E8\npalette = 7=#B7AB9A\npalette = 8=#686379\npalette = 9=#FF839D\npalette = 10=#80F5A4\npalette = 11=#FFE873\npalette = 12=#9698FF\npalette = 13=#FF83BB\npalette = 14=#8CEEF5\npalette = 15=#F5ECD8\n# Extended terminal slots retain Boo's existing UI surface colors.\npalette = 16=#111018\npalette = 17=#171522\npalette = 18=#211D2C\npalette = 19=#071014\n";
2474
2474
 
2475
- // ../../apps/shared/theme.ts
2475
+ // ../../packages/tui-shared/src/theme.ts
2476
2476
  var selectionPath = join(process.env.XDG_CONFIG_HOME || join(homedir(), ".config"), "ghostty/auto/theme.ghostty");
2477
2477
  var resources = process.env.GHOSTTY_RESOURCES_DIR || "/usr/share/ghostty";
2478
2478
  function colors(source) {
@@ -2547,6 +2547,271 @@ var palette = (() => {
2547
2547
  // src/App.tsx
2548
2548
  import { TextAttributes as TextAttributes2 } from "@opentui/core";
2549
2549
 
2550
+ // ../../packages/tui-shared/src/AnimatedBooLogoRenderable.ts
2551
+ import { OptimizedBuffer, Renderable as Renderable2, RGBA } from "@opentui/core";
2552
+ import { setImmediate as yieldToLoop } from "node:timers/promises";
2553
+
2554
+ // ../../packages/tui-shared/src/BooLogoAnimation.ts
2555
+ var BLINK_PERIOD = 4.6;
2556
+ var clips = {
2557
+ blink: { duration: 0.22 },
2558
+ boo: {
2559
+ duration: 1.65,
2560
+ frames: [
2561
+ { at: 0, x: 1, y: 1 },
2562
+ { at: 0.12, x: 1.1, y: 0.9 },
2563
+ { at: 0.28, x: 0.94, y: 1.09 },
2564
+ { at: 0.48, x: 1.03, y: 0.98 },
2565
+ { at: 0.72, x: 1, y: 1 }
2566
+ ]
2567
+ }
2568
+ };
2569
+ var clamp = (value, min, max) => Math.max(min, Math.min(max, value));
2570
+ function createMotion() {
2571
+ return { time: 0, boo: null };
2572
+ }
2573
+ function sayBoo(motion) {
2574
+ motion.boo = 0;
2575
+ }
2576
+ function advanceMotion(motion, deltaSeconds) {
2577
+ const delta = clamp(Number.isFinite(deltaSeconds) ? deltaSeconds : 0, 0, 0.1);
2578
+ motion.time += delta;
2579
+ if (motion.boo !== null) {
2580
+ motion.boo += delta;
2581
+ if (motion.boo >= clips.boo.duration) motion.boo = null;
2582
+ }
2583
+ }
2584
+ function pose(motion) {
2585
+ let x = 1;
2586
+ let y = 1;
2587
+ if (motion.boo !== null) {
2588
+ for (let index = 1; index < clips.boo.frames.length; index++) {
2589
+ if (motion.boo > clips.boo.frames[index].at) continue;
2590
+ const previous = clips.boo.frames[index - 1];
2591
+ const next = clips.boo.frames[index];
2592
+ const progress = clamp((motion.boo - previous.at) / (next.at - previous.at), 0, 1);
2593
+ x = previous.x + (next.x - previous.x) * progress;
2594
+ y = previous.y + (next.y - previous.y) * progress;
2595
+ break;
2596
+ }
2597
+ }
2598
+ const blink = (motion.time + 1.7) % BLINK_PERIOD;
2599
+ const eyes = blink < clips.blink.duration ? Math.max(0.1, Math.abs(blink / clips.blink.duration * 2 - 1)) : 1;
2600
+ return { x, y, eyes, bob: Math.sin(motion.time * 2.1) * 0.24 };
2601
+ }
2602
+ function wordmarkLayout(age = null) {
2603
+ const progress = age === null ? 0 : clamp(age / clips.boo.duration, 0, 1);
2604
+ const gap = 1 + Math.sin(progress * Math.PI) * 0.45;
2605
+ const letters2 = [];
2606
+ let x = 0;
2607
+ for (let index = 0; index < 5; index++) {
2608
+ const reveal = index < 3 || age === null ? index < 3 ? 1 : 0 : clamp((age - 0.14 - (index - 3) * 0.1) / 0.22, 0, 1) * clamp((1.58 - age) / 0.42, 0, 1);
2609
+ if (reveal <= 0) continue;
2610
+ const wave = age === null ? 0 : Math.sin(Math.PI * clamp((age - index * 0.045) / (1.65 - index * 0.045), 0, 1));
2611
+ const base = index < 2 ? 7 : 8 + Math.max(0, index - 2);
2612
+ const height = (base + wave * (index === 0 ? 0.5 : index === 1 ? 1.6 : 3)) * reveal;
2613
+ if (index > 0) x += gap * reveal;
2614
+ letters2.push({ glyph: Math.min(index, 2), x, width: 3 * reveal, height, faded: index >= 3 && progress > 0.8, wave, reveal });
2615
+ x += 3 * reveal;
2616
+ }
2617
+ return { width: x, letters: letters2 };
2618
+ }
2619
+
2620
+ // ../../packages/tui-shared/src/BooLogoData.ts
2621
+ var LIGHT_COLORS = { inkColor: "#002B8F", accentColor: "#00E5FF", highlightColor: "#D0FAFF" };
2622
+ var DARK_COLORS = { inkColor: "#8EEDFC", accentColor: "#235664", highlightColor: "#173D4B" };
2623
+
2624
+ // ../../packages/tui-shared/src/BooLogoTerminal.ts
2625
+ var LOGO_WIDTH = 34;
2626
+ var LOGO_HEIGHT = 18;
2627
+ var ghosts = {
2628
+ idle: [
2629
+ "..AAAAAA..",
2630
+ ".ACD....A.",
2631
+ "ACD......A",
2632
+ "ACCD.....A",
2633
+ "AACD.....A",
2634
+ ".ACD.....A",
2635
+ ".ACD.....A",
2636
+ ".ACD.....A",
2637
+ ".ACD.....A",
2638
+ ".ACD.....A",
2639
+ ".ACA.A.A.A",
2640
+ "..A.A.A.A."
2641
+ ],
2642
+ squash: [
2643
+ "..AAAAAAA..",
2644
+ ".ACD.....A.",
2645
+ "ACD.......A",
2646
+ "ACCD......A",
2647
+ "AACD......A",
2648
+ ".ACD......A",
2649
+ ".ACD......A",
2650
+ ".ACD......A",
2651
+ ".ACD......A",
2652
+ ".ACA.A.A.AA",
2653
+ "..A.A.A.A.."
2654
+ ],
2655
+ stretch: [
2656
+ "..AAAAA..",
2657
+ ".ACD...A.",
2658
+ "ACD.....A",
2659
+ "ACCD....A",
2660
+ "AACD....A",
2661
+ ".ACD....A",
2662
+ ".ACD....A",
2663
+ ".ACD....A",
2664
+ ".ACD....A",
2665
+ ".ACD....A",
2666
+ ".ACD....A",
2667
+ ".ACA.A.AA",
2668
+ "..A.A.A.."
2669
+ ]
2670
+ };
2671
+ var letters = [
2672
+ ["A..", "AAA", "A.A", "ACA", "ACA", "ACA", "AAA"],
2673
+ ["AAA", "A.A", "ACA", "ACA", "ACA", "ACA", "AAA"],
2674
+ ["AAA", "A.A", "ACA", "ACA", "ACA", "ACA", "ACA", "AAA"]
2675
+ ];
2676
+ var inks = { ".": 0, A: 1, C: 2, D: 3 };
2677
+ function terminalPortrait(motion) {
2678
+ const pixels = new Uint8Array(LOGO_WIDTH * LOGO_HEIGHT);
2679
+ const stamp = (rows, left, top2) => {
2680
+ for (let y = 0; y < rows.length; y++) {
2681
+ for (let x = 0; x < rows[y].length; x++) pixels[(top2 + y) * LOGO_WIDTH + left + x] = inks[rows[y][x]];
2682
+ }
2683
+ };
2684
+ const state = pose(motion);
2685
+ const ghost = state.y < 0.97 ? ghosts.squash : state.y > 1.04 ? ghosts.stretch : ghosts.idle;
2686
+ const top = 15 - ghost.length + Math.round(state.bob * 4);
2687
+ stamp(ghost, 11 - ghost[0].length, top);
2688
+ const eyeHeight = Math.max(1, Math.round(state.eyes * 3));
2689
+ const eyeTop = top + 4 + Math.floor((3 - eyeHeight) / 2);
2690
+ for (let y = eyeTop; y < eyeTop + eyeHeight; y++) {
2691
+ pixels[y * LOGO_WIDTH + 6] = 1;
2692
+ pixels[y * LOGO_WIDTH + 8] = 1;
2693
+ }
2694
+ if (motion.boo !== null && motion.boo > 0.12 && motion.boo < 0.85) pixels[(top + 8) * LOGO_WIDTH + 7] = 1;
2695
+ for (const [index, letter] of wordmarkLayout(motion.boo).letters.entries()) {
2696
+ if (letter.reveal < 0.5) continue;
2697
+ const glyph = letters[letter.glyph];
2698
+ const lift = Math.round(letter.wave * (index === 0 ? 1 : 2));
2699
+ stamp(glyph, 13 + index * 4, 13 - glyph.length - lift);
2700
+ }
2701
+ return pixels;
2702
+ }
2703
+
2704
+ // ../../packages/tui-shared/src/AnimatedBooLogoRenderable.ts
2705
+ var transparent = RGBA.fromInts(0, 0, 0, 0);
2706
+ var frameRate = 20;
2707
+ var AnimatedBooLogoRenderable = class extends Renderable2 {
2708
+ ready;
2709
+ initialized = false;
2710
+ motion = createMotion();
2711
+ idleFrames = [];
2712
+ booFrames = [];
2713
+ buffers = [];
2714
+ contextDestroyed = () => this.destroy();
2715
+ constructor(ctx, options = {}, signal) {
2716
+ signal?.throwIfAborted();
2717
+ if ("isDestroyed" in ctx && ctx.isDestroyed === true) throw new Error("Cannot prepare a logo for a destroyed renderer");
2718
+ const theme = options.theme ?? "dark";
2719
+ const scale = options.scale ?? 1;
2720
+ if (theme !== "light" && theme !== "dark") throw new TypeError("AnimatedBooLogoRenderable theme must be light or dark");
2721
+ if (scale !== 1 && scale !== 2) throw new TypeError("AnimatedBooLogoRenderable scale must be 1 or 2");
2722
+ super(ctx, { ...options, width: options.width ?? LOGO_WIDTH * scale, height: options.height ?? LOGO_HEIGHT * scale / 2, flexShrink: options.flexShrink ?? 0, live: options.live ?? true });
2723
+ ctx.once("destroy", this.contextDestroyed);
2724
+ this.ready = this.prepare(options, signal).then(() => {
2725
+ signal?.throwIfAborted();
2726
+ if (this.isDestroyed) throw new Error("Logo preparation stopped because its renderer was destroyed");
2727
+ this.initialized = true;
2728
+ this.requestRender();
2729
+ });
2730
+ void this.ready.catch((error) => {
2731
+ if (this.isDestroyed) return;
2732
+ this.destroy();
2733
+ if (!signal?.aborted) ctx.emit("render:error", { error, renderable: this });
2734
+ });
2735
+ }
2736
+ async prepare(options, signal) {
2737
+ const theme = options.theme ?? "dark", scale = options.scale ?? 1;
2738
+ const palette2 = theme === "light" ? LIGHT_COLORS : DARK_COLORS;
2739
+ const colors2 = [transparent, ...[palette2.inkColor, palette2.accentColor, palette2.highlightColor].map((color) => RGBA.fromHex(color))];
2740
+ const columns = LOGO_WIDTH * scale, rows = LOGO_HEIGHT * scale / 2;
2741
+ const cache = /* @__PURE__ */ new Map();
2742
+ const prepare = async (motion) => {
2743
+ await yieldToLoop(void 0, { signal });
2744
+ if (this.isDestroyed) throw new Error("Logo preparation stopped because its renderer was destroyed");
2745
+ const pixels = terminalPortrait(motion);
2746
+ const key = pixels.join("");
2747
+ const cached = cache.get(key);
2748
+ if (cached) return cached;
2749
+ const buffer = OptimizedBuffer.create(columns, rows, this.ctx.widthMethod, { respectAlpha: true });
2750
+ this.buffers.push(buffer);
2751
+ for (let y = 0; y < rows; y++) {
2752
+ for (let x = 0; x < columns; x++) {
2753
+ const column = Math.floor(x / scale);
2754
+ const top = pixels[Math.floor(y * 2 / scale) * LOGO_WIDTH + column];
2755
+ const bottom = pixels[Math.floor((y * 2 + 1) / scale) * LOGO_WIDTH + column];
2756
+ const char = top === bottom ? " " : top === 0 ? "\u2584" : "\u2580";
2757
+ buffer.setCell(x, y, char, colors2[top || bottom], colors2[top === 0 ? 0 : bottom]);
2758
+ }
2759
+ }
2760
+ cache.set(key, buffer);
2761
+ return buffer;
2762
+ };
2763
+ const idle = createMotion();
2764
+ for (let i = 0; i < Math.round(2 * BLINK_PERIOD * frameRate); i++) {
2765
+ this.idleFrames.push(await prepare(idle));
2766
+ advanceMotion(idle, 1 / frameRate);
2767
+ }
2768
+ const clip = createMotion();
2769
+ sayBoo(clip);
2770
+ while (clip.boo !== null) {
2771
+ this.booFrames.push(await prepare(clip));
2772
+ advanceMotion(clip, 1 / frameRate);
2773
+ }
2774
+ }
2775
+ sayBoo() {
2776
+ if (this.motion.boo !== null || this.isDestroyed) return;
2777
+ sayBoo(this.motion);
2778
+ this.requestRender();
2779
+ }
2780
+ onMouseEvent(event) {
2781
+ if (event.type === "up" && event.button === 0 && !event.isDragging) this.sayBoo();
2782
+ }
2783
+ onUpdate(deltaTime) {
2784
+ if (!this.initialized || !this.live) return;
2785
+ advanceMotion(this.motion, deltaTime / 1e3);
2786
+ }
2787
+ render(buffer, deltaTime) {
2788
+ if (!this.initialized) return;
2789
+ const width = this.width, height = this.height;
2790
+ if (!Number.isFinite(width) || !Number.isFinite(height) || width < 1 || height < 1) return;
2791
+ super.render(buffer, deltaTime);
2792
+ }
2793
+ renderSelf(buffer) {
2794
+ const width = this.width, height = this.height;
2795
+ const frame = this.motion.boo === null ? this.idleFrames[Math.floor(this.motion.time * frameRate) % this.idleFrames.length] : this.booFrames[Math.min(this.booFrames.length - 1, Math.floor(this.motion.boo * frameRate))];
2796
+ if (this.buffered) buffer.clear(transparent);
2797
+ buffer.drawFrameBuffer(
2798
+ this.buffered ? 0 : this.screenX,
2799
+ this.buffered ? 0 : this.screenY,
2800
+ frame,
2801
+ 0,
2802
+ 0,
2803
+ Math.min(width, frame.width),
2804
+ Math.min(height, frame.height)
2805
+ );
2806
+ }
2807
+ destroySelf() {
2808
+ this.ctx.off("destroy", this.contextDestroyed);
2809
+ for (const buffer of this.buffers) buffer.destroy();
2810
+ this.buffers.length = this.idleFrames.length = this.booFrames.length = 0;
2811
+ super.destroySelf();
2812
+ }
2813
+ };
2814
+
2550
2815
  // src/backend.ts
2551
2816
  import { createHash as createHash2 } from "node:crypto";
2552
2817
  import { chmod as chmod2, mkdtemp, open as open2, rm } from "node:fs/promises";
@@ -3729,7 +3994,39 @@ var FlashBackend = class {
3729
3994
  }
3730
3995
  };
3731
3996
 
3997
+ // package.json
3998
+ var version = "0.1.9";
3999
+
3732
4000
  // src/App.tsx
4001
+ function FlashLogo() {
4002
+ const renderer = useRenderer();
4003
+ let host;
4004
+ let logo;
4005
+ onMount(() => {
4006
+ const theme = themes.find((entry) => entry.ui === palette && !entry.error)?.kind === "Light" ? "light" : "dark";
4007
+ logo = new AnimatedBooLogoRenderable(renderer, {
4008
+ id: "flash-logo",
4009
+ theme
4010
+ });
4011
+ host.add(logo);
4012
+ });
4013
+ onCleanup(() => {
4014
+ if (logo) {
4015
+ if (!host.isDestroyed) host.remove(logo);
4016
+ logo.destroy();
4017
+ }
4018
+ });
4019
+ return (() => {
4020
+ var _el$ = createElement("box");
4021
+ var _ref$ = host;
4022
+ typeof _ref$ === "function" ? use(_ref$, _el$) : host = _el$;
4023
+ setProp(_el$, "width", 34);
4024
+ setProp(_el$, "height", 9);
4025
+ setProp(_el$, "flexShrink", 0);
4026
+ setProp(_el$, "marginBottom", 1);
4027
+ return _el$;
4028
+ })();
4029
+ }
3733
4030
  function App(props) {
3734
4031
  const renderer = useRenderer();
3735
4032
  const dimensions = useTerminalDimensions();
@@ -4002,31 +4299,31 @@ ${selection()}
4002
4299
  if (key.name === "return" && !key.repeated) activate();
4003
4300
  });
4004
4301
  const row = (label, detail, index, danger = false, detailWhenTight = false) => (() => {
4005
- var _el$ = createElement("box"), _el$2 = createElement("text");
4006
- insertNode(_el$, _el$2);
4007
- setProp(_el$, "paddingX", 1);
4008
- setProp(_el$, "flexShrink", 0);
4009
- setProp(_el$2, "wrapMode", "none");
4010
- insert(_el$2, () => cursor() === index ? "> " : " ", null);
4011
- insert(_el$2, label, null);
4012
- insert(_el$, createComponent2(Show, {
4302
+ var _el$2 = createElement("box"), _el$3 = createElement("text");
4303
+ insertNode(_el$2, _el$3);
4304
+ setProp(_el$2, "paddingX", 1);
4305
+ setProp(_el$2, "flexShrink", 0);
4306
+ setProp(_el$3, "wrapMode", "none");
4307
+ insert(_el$3, () => cursor() === index ? "> " : " ", null);
4308
+ insert(_el$3, label, null);
4309
+ insert(_el$2, createComponent2(Show, {
4013
4310
  get when() {
4014
4311
  return detail && (!tight() || detailWhenTight);
4015
4312
  },
4016
4313
  get children() {
4017
- var _el$3 = createElement("text");
4018
- setProp(_el$3, "wrapMode", "none");
4019
- insert(_el$3, ` ${detail}`);
4020
- effect((_$p) => setProp(_el$3, "fg", palette.muted, _$p));
4021
- return _el$3;
4314
+ var _el$4 = createElement("text");
4315
+ setProp(_el$4, "wrapMode", "none");
4316
+ insert(_el$4, ` ${detail}`);
4317
+ effect((_$p) => setProp(_el$4, "fg", palette.muted, _$p));
4318
+ return _el$4;
4022
4319
  }
4023
4320
  }), null);
4024
4321
  effect((_p$) => {
4025
4322
  var _v$ = detail && (!tight() || detailWhenTight) ? compact() ? 2 : 3 : 1, _v$2 = cursor() === index ? palette.selected : palette.panel, _v$3 = danger ? palette.warning : cursor() === index ? palette.accent : palette.foreground, _v$4 = TextAttributes2.BOLD;
4026
- _v$ !== _p$.e && (_p$.e = setProp(_el$, "height", _v$, _p$.e));
4027
- _v$2 !== _p$.t && (_p$.t = setProp(_el$, "backgroundColor", _v$2, _p$.t));
4028
- _v$3 !== _p$.a && (_p$.a = setProp(_el$2, "fg", _v$3, _p$.a));
4029
- _v$4 !== _p$.o && (_p$.o = setProp(_el$2, "attributes", _v$4, _p$.o));
4323
+ _v$ !== _p$.e && (_p$.e = setProp(_el$2, "height", _v$, _p$.e));
4324
+ _v$2 !== _p$.t && (_p$.t = setProp(_el$2, "backgroundColor", _v$2, _p$.t));
4325
+ _v$3 !== _p$.a && (_p$.a = setProp(_el$3, "fg", _v$3, _p$.a));
4326
+ _v$4 !== _p$.o && (_p$.o = setProp(_el$3, "attributes", _v$4, _p$.o));
4030
4327
  return _p$;
4031
4328
  }, {
4032
4329
  e: void 0,
@@ -4034,46 +4331,55 @@ ${selection()}
4034
4331
  a: void 0,
4035
4332
  o: void 0
4036
4333
  });
4037
- return _el$;
4334
+ return _el$2;
4038
4335
  })();
4039
4336
  return (() => {
4040
- var _el$4 = createElement("box"), _el$5 = createElement("box"), _el$6 = createElement("box"), _el$7 = createElement("text"), _el$9 = createElement("text"), _el$0 = createElement("box"), _el$1 = createElement("box"), _el$80 = createElement("text");
4041
- insertNode(_el$4, _el$5);
4042
- setProp(_el$4, "width", "100%");
4043
- setProp(_el$4, "height", "100%");
4044
- setProp(_el$4, "justifyContent", "center");
4045
- setProp(_el$4, "alignItems", "center");
4337
+ var _el$5 = createElement("box"), _el$6 = createElement("box"), _el$7 = createElement("box"), _el$8 = createElement("text"), _el$0 = createElement("text"), _el$1 = createElement("box"), _el$10 = createElement("box"), _el$81 = createElement("box"), _el$82 = createElement("text"), _el$83 = createElement("text"), _el$84 = createTextNode(`v`);
4046
4338
  insertNode(_el$5, _el$6);
4047
- insertNode(_el$5, _el$0);
4048
- insertNode(_el$5, _el$1);
4049
- insertNode(_el$5, _el$80);
4050
- setProp(_el$5, "border", true);
4051
- setProp(_el$5, "borderStyle", "single");
4052
- setProp(_el$5, "flexDirection", "column");
4053
- setProp(_el$5, "paddingX", 1);
4339
+ setProp(_el$5, "width", "100%");
4340
+ setProp(_el$5, "height", "100%");
4341
+ setProp(_el$5, "justifyContent", "center");
4342
+ setProp(_el$5, "alignItems", "center");
4343
+ insert(_el$5, createComponent2(Show, {
4344
+ get when() {
4345
+ return memo2(() => dimensions().width >= 34)() && dimensions().height >= 34;
4346
+ },
4347
+ get children() {
4348
+ return createComponent2(FlashLogo, {});
4349
+ }
4350
+ }), _el$6);
4054
4351
  insertNode(_el$6, _el$7);
4055
- insertNode(_el$6, _el$9);
4056
- setProp(_el$6, "height", 1);
4057
- setProp(_el$6, "flexDirection", "row");
4058
- setProp(_el$6, "justifyContent", "space-between");
4059
- setProp(_el$6, "flexShrink", 0);
4060
- insertNode(_el$7, createTextNode(`BOO FLASH`));
4061
- insert(_el$9, () => props.backend.platformLabel);
4062
- setProp(_el$0, "height", 1);
4063
- setProp(_el$0, "flexShrink", 0);
4064
- setProp(_el$1, "flexGrow", 1);
4065
- setProp(_el$1, "minHeight", 0);
4066
- setProp(_el$1, "overflow", "hidden");
4067
- insert(_el$1, createComponent2(Show, {
4352
+ insertNode(_el$6, _el$1);
4353
+ insertNode(_el$6, _el$10);
4354
+ insertNode(_el$6, _el$81);
4355
+ setProp(_el$6, "id", "flash-card");
4356
+ setProp(_el$6, "border", true);
4357
+ setProp(_el$6, "borderStyle", "single");
4358
+ setProp(_el$6, "flexDirection", "column");
4359
+ setProp(_el$6, "paddingX", 1);
4360
+ insertNode(_el$7, _el$8);
4361
+ insertNode(_el$7, _el$0);
4362
+ setProp(_el$7, "height", 1);
4363
+ setProp(_el$7, "flexDirection", "row");
4364
+ setProp(_el$7, "justifyContent", "space-between");
4365
+ setProp(_el$7, "flexShrink", 0);
4366
+ insertNode(_el$8, createTextNode(`BOO FLASH`));
4367
+ insert(_el$0, () => props.backend.platformLabel);
4368
+ setProp(_el$1, "height", 1);
4369
+ setProp(_el$1, "flexShrink", 0);
4370
+ setProp(_el$10, "flexGrow", 1);
4371
+ setProp(_el$10, "minHeight", 0);
4372
+ setProp(_el$10, "overflow", "hidden");
4373
+ insert(_el$10, createComponent2(Show, {
4068
4374
  get when() {
4069
4375
  return visible();
4070
4376
  },
4071
4377
  get fallback() {
4072
4378
  return (() => {
4073
- var _el$81 = createElement("text");
4074
- insertNode(_el$81, createTextNode(`Enlarge the terminal to show the full choices and erase warning. Q quits.`));
4075
- effect((_$p) => setProp(_el$81, "fg", palette.warning, _$p));
4076
- return _el$81;
4379
+ var _el$85 = createElement("text");
4380
+ insertNode(_el$85, createTextNode(`Enlarge the terminal to show the full choices and erase warning. Q quits.`));
4381
+ effect((_$p) => setProp(_el$85, "fg", palette.warning, _$p));
4382
+ return _el$85;
4077
4383
  })();
4078
4384
  },
4079
4385
  get children() {
@@ -4082,11 +4388,11 @@ ${selection()}
4082
4388
  return selection();
4083
4389
  },
4084
4390
  get children() {
4085
- var _el$10 = createElement("text");
4086
- setProp(_el$10, "flexShrink", 0);
4087
- insert(_el$10, selection);
4088
- effect((_$p) => setProp(_el$10, "fg", palette.foreground, _$p));
4089
- return _el$10;
4391
+ var _el$11 = createElement("text");
4392
+ setProp(_el$11, "flexShrink", 0);
4393
+ insert(_el$11, selection);
4394
+ effect((_$p) => setProp(_el$11, "fg", palette.foreground, _$p));
4395
+ return _el$11;
4090
4396
  }
4091
4397
  }), createComponent2(Show, {
4092
4398
  get when() {
@@ -4094,43 +4400,43 @@ ${selection()}
4094
4400
  },
4095
4401
  get children() {
4096
4402
  return [(() => {
4097
- var _el$11 = createElement("text");
4098
- insertNode(_el$11, createTextNode(`Choose the target computer's GPU`));
4403
+ var _el$12 = createElement("text");
4404
+ insertNode(_el$12, createTextNode(`Choose the target computer's GPU`));
4099
4405
  effect((_p$) => {
4100
4406
  var _v$5 = palette.foreground, _v$6 = TextAttributes2.BOLD;
4101
- _v$5 !== _p$.e && (_p$.e = setProp(_el$11, "fg", _v$5, _p$.e));
4102
- _v$6 !== _p$.t && (_p$.t = setProp(_el$11, "attributes", _v$6, _p$.t));
4407
+ _v$5 !== _p$.e && (_p$.e = setProp(_el$12, "fg", _v$5, _p$.e));
4408
+ _v$6 !== _p$.t && (_p$.t = setProp(_el$12, "attributes", _v$6, _p$.t));
4103
4409
  return _p$;
4104
4410
  }, {
4105
4411
  e: void 0,
4106
4412
  t: void 0
4107
4413
  });
4108
- return _el$11;
4414
+ return _el$12;
4109
4415
  })(), (() => {
4110
- var _el$13 = createElement("text");
4111
- insert(_el$13, (() => {
4416
+ var _el$14 = createElement("text");
4417
+ insert(_el$14, (() => {
4112
4418
  var _c$ = memo2(() => !!loading());
4113
4419
  return () => _c$() ? `${spinner()} Finding latest Boo release...` : memo2(() => !!catalog())() ? `Boo ${catalog().version} / ${catalog().revision.slice(0, 7)} / ${imageTime(catalog().timestamp, now())}` : "Dependencies needed. Enter to set up.";
4114
4420
  })());
4115
- effect((_$p) => setProp(_el$13, "fg", palette.muted, _$p));
4116
- return _el$13;
4421
+ effect((_$p) => setProp(_el$14, "fg", palette.muted, _$p));
4422
+ return _el$14;
4117
4423
  })(), (() => {
4118
- var _el$14 = createElement("box");
4119
- setProp(_el$14, "gap", 0);
4120
- setProp(_el$14, "marginBottom", 1);
4121
- setProp(_el$14, "flexShrink", 0);
4122
- insert(_el$14, createComponent2(For, {
4424
+ var _el$15 = createElement("box");
4425
+ setProp(_el$15, "gap", 0);
4426
+ setProp(_el$15, "marginBottom", 1);
4427
+ setProp(_el$15, "flexShrink", 0);
4428
+ insert(_el$15, createComponent2(For, {
4123
4429
  each: profiles,
4124
4430
  children: (profile, index) => row(profile.toUpperCase(), profile === "nvidia" ? "NVIDIA graphics" : `${profile === "intel" ? "Intel" : "AMD Radeon"} graphics`, index())
4125
4431
  }), null);
4126
- insert(_el$14, () => row("Candidates", "", 3), null);
4127
- insert(_el$14, () => row("Clear cached images", "", 4), null);
4128
- return _el$14;
4129
- })(), (() => {
4130
- var _el$15 = createElement("text");
4131
- insertNode(_el$15, createTextNode(`All images support Intel and AMD x86_64 CPUs.`));
4132
- effect((_$p) => setProp(_el$15, "fg", palette.muted, _$p));
4432
+ insert(_el$15, () => row("Candidates", "", 3), null);
4433
+ insert(_el$15, () => row("Clear cached images", "", 4), null);
4133
4434
  return _el$15;
4435
+ })(), (() => {
4436
+ var _el$16 = createElement("text");
4437
+ insertNode(_el$16, createTextNode(`All images support Intel and AMD x86_64 CPUs.`));
4438
+ effect((_$p) => setProp(_el$16, "fg", palette.muted, _$p));
4439
+ return _el$16;
4134
4440
  })()];
4135
4441
  }
4136
4442
  }), createComponent2(Show, {
@@ -4139,34 +4445,34 @@ ${selection()}
4139
4445
  },
4140
4446
  get children() {
4141
4447
  return [(() => {
4142
- var _el$17 = createElement("text");
4143
- insertNode(_el$17, createTextNode(`Clear cached images?`));
4448
+ var _el$18 = createElement("text");
4449
+ insertNode(_el$18, createTextNode(`Clear cached images?`));
4144
4450
  effect((_p$) => {
4145
4451
  var _v$7 = palette.warning, _v$8 = TextAttributes2.BOLD;
4146
- _v$7 !== _p$.e && (_p$.e = setProp(_el$17, "fg", _v$7, _p$.e));
4147
- _v$8 !== _p$.t && (_p$.t = setProp(_el$17, "attributes", _v$8, _p$.t));
4452
+ _v$7 !== _p$.e && (_p$.e = setProp(_el$18, "fg", _v$7, _p$.e));
4453
+ _v$8 !== _p$.t && (_p$.t = setProp(_el$18, "attributes", _v$8, _p$.t));
4148
4454
  return _p$;
4149
4455
  }, {
4150
4456
  e: void 0,
4151
4457
  t: void 0
4152
4458
  });
4153
- return _el$17;
4459
+ return _el$18;
4154
4460
  })(), (() => {
4155
- var _el$19 = createElement("text");
4156
- insertNode(_el$19, createTextNode(`Removes downloaded archives only, NOT USB contents. Active flashes are unaffected.`));
4157
- effect((_$p) => setProp(_el$19, "fg", palette.foreground, _$p));
4158
- return _el$19;
4461
+ var _el$20 = createElement("text");
4462
+ insertNode(_el$20, createTextNode(`Removes downloaded archives only, NOT USB contents. Active flashes are unaffected.`));
4463
+ effect((_$p) => setProp(_el$20, "fg", palette.foreground, _$p));
4464
+ return _el$20;
4159
4465
  })(), (() => {
4160
- var _el$21 = createElement("text");
4161
- insertNode(_el$21, createTextNode(`Images will download again when needed. Pending downloads may still finish and be cached.`));
4162
- effect((_$p) => setProp(_el$21, "fg", palette.muted, _$p));
4163
- return _el$21;
4466
+ var _el$22 = createElement("text");
4467
+ insertNode(_el$22, createTextNode(`Images will download again when needed. Pending downloads may still finish and be cached.`));
4468
+ effect((_$p) => setProp(_el$22, "fg", palette.muted, _$p));
4469
+ return _el$22;
4164
4470
  })(), (() => {
4165
- var _el$23 = createElement("box");
4166
- insert(_el$23, () => row("Go back", "", 0), null);
4167
- insert(_el$23, () => row(loading() ? "Clearing..." : "Clear cached images", "", 1, true), null);
4168
- effect((_$p) => setProp(_el$23, "gap", tight() ? 0 : 1, _$p));
4169
- return _el$23;
4471
+ var _el$24 = createElement("box");
4472
+ insert(_el$24, () => row("Go back", "", 0), null);
4473
+ insert(_el$24, () => row(loading() ? "Clearing..." : "Clear cached images", "", 1, true), null);
4474
+ effect((_$p) => setProp(_el$24, "gap", tight() ? 0 : 1, _$p));
4475
+ return _el$24;
4170
4476
  })()];
4171
4477
  }
4172
4478
  }), createComponent2(Show, {
@@ -4175,23 +4481,23 @@ ${selection()}
4175
4481
  },
4176
4482
  get children() {
4177
4483
  return [(() => {
4178
- var _el$24 = createElement("text");
4179
- insertNode(_el$24, createTextNode(`Cache cleared`));
4484
+ var _el$25 = createElement("text");
4485
+ insertNode(_el$25, createTextNode(`Cache cleared`));
4180
4486
  effect((_p$) => {
4181
4487
  var _v$9 = palette.success, _v$0 = TextAttributes2.BOLD;
4182
- _v$9 !== _p$.e && (_p$.e = setProp(_el$24, "fg", _v$9, _p$.e));
4183
- _v$0 !== _p$.t && (_p$.t = setProp(_el$24, "attributes", _v$0, _p$.t));
4488
+ _v$9 !== _p$.e && (_p$.e = setProp(_el$25, "fg", _v$9, _p$.e));
4489
+ _v$0 !== _p$.t && (_p$.t = setProp(_el$25, "attributes", _v$0, _p$.t));
4184
4490
  return _p$;
4185
4491
  }, {
4186
4492
  e: void 0,
4187
4493
  t: void 0
4188
4494
  });
4189
- return _el$24;
4495
+ return _el$25;
4190
4496
  })(), (() => {
4191
- var _el$26 = createElement("text");
4192
- insert(_el$26, notice);
4193
- effect((_$p) => setProp(_el$26, "fg", palette.foreground, _$p));
4194
- return _el$26;
4497
+ var _el$27 = createElement("text");
4498
+ insert(_el$27, notice);
4499
+ effect((_$p) => setProp(_el$27, "fg", palette.foreground, _$p));
4500
+ return _el$27;
4195
4501
  })(), memo2(() => row("Go back", "", 0))];
4196
4502
  }
4197
4503
  }), createComponent2(Show, {
@@ -4200,29 +4506,29 @@ ${selection()}
4200
4506
  },
4201
4507
  get children() {
4202
4508
  return [(() => {
4203
- var _el$27 = createElement("text");
4204
- insertNode(_el$27, createTextNode(`Candidates`));
4509
+ var _el$28 = createElement("text");
4510
+ insertNode(_el$28, createTextNode(`Candidates`));
4205
4511
  effect((_p$) => {
4206
4512
  var _v$1 = palette.foreground, _v$10 = TextAttributes2.BOLD;
4207
- _v$1 !== _p$.e && (_p$.e = setProp(_el$27, "fg", _v$1, _p$.e));
4208
- _v$10 !== _p$.t && (_p$.t = setProp(_el$27, "attributes", _v$10, _p$.t));
4513
+ _v$1 !== _p$.e && (_p$.e = setProp(_el$28, "fg", _v$1, _p$.e));
4514
+ _v$10 !== _p$.t && (_p$.t = setProp(_el$28, "attributes", _v$10, _p$.t));
4209
4515
  return _p$;
4210
4516
  }, {
4211
4517
  e: void 0,
4212
4518
  t: void 0
4213
4519
  });
4214
- return _el$27;
4520
+ return _el$28;
4215
4521
  })(), createComponent2(Show, {
4216
4522
  get when() {
4217
4523
  return !loading();
4218
4524
  },
4219
4525
  get fallback() {
4220
4526
  return (() => {
4221
- var _el$83 = createElement("text"), _el$84 = createTextNode(` Finding completed candidates...`);
4222
- insertNode(_el$83, _el$84);
4223
- insert(_el$83, spinner, _el$84);
4224
- effect((_$p) => setProp(_el$83, "fg", palette.muted, _$p));
4225
- return _el$83;
4527
+ var _el$87 = createElement("text"), _el$88 = createTextNode(` Finding completed candidates...`);
4528
+ insertNode(_el$87, _el$88);
4529
+ insert(_el$87, spinner, _el$88);
4530
+ effect((_$p) => setProp(_el$87, "fg", palette.muted, _$p));
4531
+ return _el$87;
4226
4532
  })();
4227
4533
  },
4228
4534
  get children() {
@@ -4232,31 +4538,31 @@ ${selection()}
4232
4538
  },
4233
4539
  get fallback() {
4234
4540
  return [(() => {
4235
- var _el$85 = createElement("text");
4236
- insertNode(_el$85, createTextNode(`No completed candidates available`));
4237
- effect((_$p) => setProp(_el$85, "fg", palette.muted, _$p));
4238
- return _el$85;
4541
+ var _el$89 = createElement("text");
4542
+ insertNode(_el$89, createTextNode(`No completed candidates available`));
4543
+ effect((_$p) => setProp(_el$89, "fg", palette.muted, _$p));
4544
+ return _el$89;
4239
4545
  })(), memo2(() => row("Go back", "", 0))];
4240
4546
  },
4241
4547
  get children() {
4242
4548
  return [(() => {
4243
- var _el$29 = createElement("box");
4244
- setProp(_el$29, "gap", 0);
4245
- insert(_el$29, createComponent2(For, {
4549
+ var _el$30 = createElement("box");
4550
+ setProp(_el$30, "gap", 0);
4551
+ insert(_el$30, createComponent2(For, {
4246
4552
  get each() {
4247
4553
  return candidates().slice(Math.max(0, cursor() - 2), Math.max(3, cursor() + 1));
4248
4554
  },
4249
4555
  children: (c, index) => row(`${c.images[0].profile.toUpperCase()} ${c.revision.slice(0, 7)} #${c.candidate.number}`, imageTime(c.timestamp, now()), index() + Math.max(0, cursor() - 2), false, true)
4250
4556
  }));
4251
- return _el$29;
4252
- })(), (() => {
4253
- var _el$30 = createElement("text"), _el$31 = createTextNode(` of `), _el$32 = createTextNode(` candidates / Enter to choose`);
4254
- insertNode(_el$30, _el$31);
4255
- insertNode(_el$30, _el$32);
4256
- insert(_el$30, () => cursor() + 1, _el$31);
4257
- insert(_el$30, () => candidates().length, _el$32);
4258
- effect((_$p) => setProp(_el$30, "fg", palette.muted, _$p));
4259
4557
  return _el$30;
4558
+ })(), (() => {
4559
+ var _el$31 = createElement("text"), _el$32 = createTextNode(` of `), _el$33 = createTextNode(` candidates / Enter to choose`);
4560
+ insertNode(_el$31, _el$32);
4561
+ insertNode(_el$31, _el$33);
4562
+ insert(_el$31, () => cursor() + 1, _el$32);
4563
+ insert(_el$31, () => candidates().length, _el$33);
4564
+ effect((_$p) => setProp(_el$31, "fg", palette.muted, _$p));
4565
+ return _el$31;
4260
4566
  })()];
4261
4567
  }
4262
4568
  });
@@ -4269,61 +4575,61 @@ ${selection()}
4269
4575
  },
4270
4576
  get children() {
4271
4577
  return [(() => {
4272
- var _el$33 = createElement("text");
4273
- insertNode(_el$33, createTextNode(`Set up required tools`));
4578
+ var _el$34 = createElement("text");
4579
+ insertNode(_el$34, createTextNode(`Set up required tools`));
4274
4580
  effect((_p$) => {
4275
4581
  var _v$11 = palette.accent, _v$12 = TextAttributes2.BOLD;
4276
- _v$11 !== _p$.e && (_p$.e = setProp(_el$33, "fg", _v$11, _p$.e));
4277
- _v$12 !== _p$.t && (_p$.t = setProp(_el$33, "attributes", _v$12, _p$.t));
4582
+ _v$11 !== _p$.e && (_p$.e = setProp(_el$34, "fg", _v$11, _p$.e));
4583
+ _v$12 !== _p$.t && (_p$.t = setProp(_el$34, "attributes", _v$12, _p$.t));
4278
4584
  return _p$;
4279
4585
  }, {
4280
4586
  e: void 0,
4281
4587
  t: void 0
4282
4588
  });
4283
- return _el$33;
4589
+ return _el$34;
4284
4590
  })(), (() => {
4285
- var _el$35 = createElement("text"), _el$36 = createTextNode(`Missing: `);
4286
- insertNode(_el$35, _el$36);
4287
- insert(_el$35, () => dependencies3().missing.join(", "), null);
4288
- effect((_$p) => setProp(_el$35, "fg", palette.foreground, _$p));
4289
- return _el$35;
4591
+ var _el$36 = createElement("text"), _el$37 = createTextNode(`Missing: `);
4592
+ insertNode(_el$36, _el$37);
4593
+ insert(_el$36, () => dependencies3().missing.join(", "), null);
4594
+ effect((_$p) => setProp(_el$36, "fg", palette.foreground, _$p));
4595
+ return _el$36;
4290
4596
  })(), createComponent2(Show, {
4291
4597
  get when() {
4292
4598
  return !error();
4293
4599
  },
4294
4600
  get fallback() {
4295
4601
  return (() => {
4296
- var _el$87 = createElement("text");
4297
- insert(_el$87, error);
4298
- effect((_$p) => setProp(_el$87, "fg", palette.warning, _$p));
4299
- return _el$87;
4602
+ var _el$91 = createElement("text");
4603
+ insert(_el$91, error);
4604
+ effect((_$p) => setProp(_el$91, "fg", palette.warning, _$p));
4605
+ return _el$91;
4300
4606
  })();
4301
4607
  },
4302
4608
  get children() {
4303
- var _el$37 = createElement("text");
4304
- insert(_el$37, (() => {
4609
+ var _el$38 = createElement("text");
4610
+ insert(_el$38, (() => {
4305
4611
  var _c$2 = memo2(() => !!dependencies3().installer);
4306
4612
  return () => _c$2() ? `${dependencies3().installer} will install ${dependencies3().missing.join(" and ")} and required dependencies, then continue.` : dependencies3().guidance;
4307
4613
  })());
4308
- effect((_$p) => setProp(_el$37, "fg", palette.muted, _$p));
4309
- return _el$37;
4614
+ effect((_$p) => setProp(_el$38, "fg", palette.muted, _$p));
4615
+ return _el$38;
4310
4616
  }
4311
4617
  }), createComponent2(Show, {
4312
4618
  get when() {
4313
4619
  return !tight();
4314
4620
  },
4315
4621
  get children() {
4316
- var _el$38 = createElement("text");
4317
- insert(_el$38, () => dependencies3().installer ? "Uses the ordinary terminal. Ctrl-C cancels and quits." : "Boo Flash will not change system packages on this platform.");
4318
- effect((_$p) => setProp(_el$38, "fg", palette.muted, _$p));
4319
- return _el$38;
4622
+ var _el$39 = createElement("text");
4623
+ insert(_el$39, () => dependencies3().installer ? "Uses the ordinary terminal. Ctrl-C cancels and quits." : "Boo Flash will not change system packages on this platform.");
4624
+ effect((_$p) => setProp(_el$39, "fg", palette.muted, _$p));
4625
+ return _el$39;
4320
4626
  }
4321
4627
  }), (() => {
4322
- var _el$39 = createElement("box");
4323
- insert(_el$39, () => row("Go back", "", 0), null);
4324
- insert(_el$39, () => row(dependencies3().installer ? `Install ${dependencies3().missing.join(" + ")}` : "Refresh", "", 1), null);
4325
- effect((_$p) => setProp(_el$39, "gap", tight() ? 0 : 1, _$p));
4326
- return _el$39;
4628
+ var _el$40 = createElement("box");
4629
+ insert(_el$40, () => row("Go back", "", 0), null);
4630
+ insert(_el$40, () => row(dependencies3().installer ? `Install ${dependencies3().missing.join(" + ")}` : "Refresh", "", 1), null);
4631
+ effect((_$p) => setProp(_el$40, "gap", tight() ? 0 : 1, _$p));
4632
+ return _el$40;
4327
4633
  })()];
4328
4634
  }
4329
4635
  }), createComponent2(Show, {
@@ -4332,33 +4638,33 @@ ${selection()}
4332
4638
  },
4333
4639
  get children() {
4334
4640
  return [(() => {
4335
- var _el$40 = createElement("text"), _el$41 = createTextNode(` `);
4336
- insertNode(_el$40, _el$41);
4337
- insert(_el$40, spinner, _el$41);
4338
- insert(_el$40, () => stopping() ? "Waiting for setup to stop..." : "Installing required tools", null);
4641
+ var _el$41 = createElement("text"), _el$42 = createTextNode(` `);
4642
+ insertNode(_el$41, _el$42);
4643
+ insert(_el$41, spinner, _el$42);
4644
+ insert(_el$41, () => stopping() ? "Waiting for setup to stop..." : "Installing required tools", null);
4339
4645
  effect((_p$) => {
4340
4646
  var _v$13 = palette.accent, _v$14 = TextAttributes2.BOLD;
4341
- _v$13 !== _p$.e && (_p$.e = setProp(_el$40, "fg", _v$13, _p$.e));
4342
- _v$14 !== _p$.t && (_p$.t = setProp(_el$40, "attributes", _v$14, _p$.t));
4647
+ _v$13 !== _p$.e && (_p$.e = setProp(_el$41, "fg", _v$13, _p$.e));
4648
+ _v$14 !== _p$.t && (_p$.t = setProp(_el$41, "attributes", _v$14, _p$.t));
4343
4649
  return _p$;
4344
4650
  }, {
4345
4651
  e: void 0,
4346
4652
  t: void 0
4347
4653
  });
4348
- return _el$40;
4654
+ return _el$41;
4349
4655
  })(), (() => {
4350
- var _el$42 = createElement("text"), _el$43 = createTextNode(` via `);
4351
- insertNode(_el$42, _el$43);
4352
- insert(_el$42, () => dependencies3().missing.join(" + "), _el$43);
4353
- insert(_el$42, () => dependencies3().installer, null);
4354
- effect((_$p) => setProp(_el$42, "fg", palette.foreground, _$p));
4355
- return _el$42;
4656
+ var _el$43 = createElement("text"), _el$44 = createTextNode(` via `);
4657
+ insertNode(_el$43, _el$44);
4658
+ insert(_el$43, () => dependencies3().missing.join(" + "), _el$44);
4659
+ insert(_el$43, () => dependencies3().installer, null);
4660
+ effect((_$p) => setProp(_el$43, "fg", palette.foreground, _$p));
4661
+ return _el$43;
4356
4662
  })(), (() => {
4357
- var _el$44 = createElement("text"), _el$45 = createTextNode(` uses the ordinary terminal. Ctrl-C cancels and quits; wait for cleanup.`);
4358
- insertNode(_el$44, _el$45);
4359
- insert(_el$44, () => dependencies3().installer, _el$45);
4360
- effect((_$p) => setProp(_el$44, "fg", palette.muted, _$p));
4361
- return _el$44;
4663
+ var _el$45 = createElement("text"), _el$46 = createTextNode(` uses the ordinary terminal. Ctrl-C cancels and quits; wait for cleanup.`);
4664
+ insertNode(_el$45, _el$46);
4665
+ insert(_el$45, () => dependencies3().installer, _el$46);
4666
+ effect((_$p) => setProp(_el$45, "fg", palette.muted, _$p));
4667
+ return _el$45;
4362
4668
  })()];
4363
4669
  }
4364
4670
  }), createComponent2(Show, {
@@ -4367,26 +4673,26 @@ ${selection()}
4367
4673
  },
4368
4674
  get children() {
4369
4675
  return [(() => {
4370
- var _el$46 = createElement("text");
4371
- insertNode(_el$46, createTextNode(`Choose a USB drive`));
4676
+ var _el$47 = createElement("text");
4677
+ insertNode(_el$47, createTextNode(`Choose a USB drive`));
4372
4678
  effect((_p$) => {
4373
4679
  var _v$15 = palette.foreground, _v$16 = TextAttributes2.BOLD;
4374
- _v$15 !== _p$.e && (_p$.e = setProp(_el$46, "fg", _v$15, _p$.e));
4375
- _v$16 !== _p$.t && (_p$.t = setProp(_el$46, "attributes", _v$16, _p$.t));
4680
+ _v$15 !== _p$.e && (_p$.e = setProp(_el$47, "fg", _v$15, _p$.e));
4681
+ _v$16 !== _p$.t && (_p$.t = setProp(_el$47, "attributes", _v$16, _p$.t));
4376
4682
  return _p$;
4377
4683
  }, {
4378
4684
  e: void 0,
4379
4685
  t: void 0
4380
4686
  });
4381
- return _el$46;
4687
+ return _el$47;
4382
4688
  })(), (() => {
4383
- var _el$48 = createElement("text");
4384
- insert(_el$48, (() => {
4689
+ var _el$49 = createElement("text");
4690
+ insert(_el$49, (() => {
4385
4691
  var _c$3 = memo2(() => !!loading());
4386
4692
  return () => _c$3() ? `${spinner()} Checking disks and protected storage...` : "System, home and app storage are excluded.";
4387
4693
  })());
4388
- effect((_$p) => setProp(_el$48, "fg", palette.muted, _$p));
4389
- return _el$48;
4694
+ effect((_$p) => setProp(_el$49, "fg", palette.muted, _$p));
4695
+ return _el$49;
4390
4696
  })(), createComponent2(Show, {
4391
4697
  get when() {
4392
4698
  return !loading();
@@ -4398,31 +4704,31 @@ ${selection()}
4398
4704
  },
4399
4705
  get fallback() {
4400
4706
  return (() => {
4401
- var _el$88 = createElement("text");
4402
- insertNode(_el$88, createTextNode(`No eligible USB drives. Connect a writable external USB drive, then press R to refresh.`));
4403
- effect((_$p) => setProp(_el$88, "fg", palette.warning, _$p));
4404
- return _el$88;
4707
+ var _el$92 = createElement("text");
4708
+ insertNode(_el$92, createTextNode(`No eligible USB drives. Connect a writable external USB drive, then press R to refresh.`));
4709
+ effect((_$p) => setProp(_el$92, "fg", palette.warning, _$p));
4710
+ return _el$92;
4405
4711
  })();
4406
4712
  },
4407
4713
  get children() {
4408
4714
  return [(() => {
4409
- var _el$49 = createElement("box");
4410
- setProp(_el$49, "gap", 0);
4411
- insert(_el$49, createComponent2(For, {
4715
+ var _el$50 = createElement("box");
4716
+ setProp(_el$50, "gap", 0);
4717
+ insert(_el$50, createComponent2(For, {
4412
4718
  get each() {
4413
4719
  return disks3().slice(Math.max(0, cursor() - 2), Math.max(3, cursor() + 1));
4414
4720
  },
4415
4721
  children: (d, index) => row(d.name, `${path(d)} / ${bytes(d.bytes)} / USB`, index() + Math.max(0, cursor() - 2))
4416
4722
  }));
4417
- return _el$49;
4723
+ return _el$50;
4418
4724
  })(), (() => {
4419
- var _el$50 = createElement("text");
4420
- insert(_el$50, (() => {
4725
+ var _el$51 = createElement("text");
4726
+ insert(_el$51, (() => {
4421
4727
  var _c$4 = memo2(() => cursor() < 0);
4422
4728
  return () => _c$4() ? "Use arrows to select a drive. Nothing is selected yet." : `${cursor() + 1} of ${disks3().length} drives / Enter to review`;
4423
4729
  })());
4424
- effect((_$p) => setProp(_el$50, "fg", palette.muted, _$p));
4425
- return _el$50;
4730
+ effect((_$p) => setProp(_el$51, "fg", palette.muted, _$p));
4731
+ return _el$51;
4426
4732
  })()];
4427
4733
  }
4428
4734
  });
@@ -4435,36 +4741,36 @@ ${selection()}
4435
4741
  },
4436
4742
  get children() {
4437
4743
  return [(() => {
4438
- var _el$51 = createElement("text");
4439
- insertNode(_el$51, createTextNode(`Erase this entire USB drive?`));
4744
+ var _el$52 = createElement("text");
4745
+ insertNode(_el$52, createTextNode(`Erase this entire USB drive?`));
4440
4746
  effect((_p$) => {
4441
4747
  var _v$17 = palette.warning, _v$18 = TextAttributes2.BOLD;
4442
- _v$17 !== _p$.e && (_p$.e = setProp(_el$51, "fg", _v$17, _p$.e));
4443
- _v$18 !== _p$.t && (_p$.t = setProp(_el$51, "attributes", _v$18, _p$.t));
4748
+ _v$17 !== _p$.e && (_p$.e = setProp(_el$52, "fg", _v$17, _p$.e));
4749
+ _v$18 !== _p$.t && (_p$.t = setProp(_el$52, "attributes", _v$18, _p$.t));
4444
4750
  return _p$;
4445
4751
  }, {
4446
4752
  e: void 0,
4447
4753
  t: void 0
4448
4754
  });
4449
- return _el$51;
4755
+ return _el$52;
4450
4756
  })(), (() => {
4451
- var _el$53 = createElement("box"), _el$54 = createElement("text"), _el$55 = createElement("text");
4452
- insertNode(_el$53, _el$54);
4453
- insertNode(_el$53, _el$55);
4454
- setProp(_el$53, "paddingX", 1);
4455
- setProp(_el$54, "height", 1);
4456
- setProp(_el$54, "wrapMode", "none");
4457
- insert(_el$54, () => disk()?.name);
4458
- insert(_el$55, (() => {
4757
+ var _el$54 = createElement("box"), _el$55 = createElement("text"), _el$56 = createElement("text");
4758
+ insertNode(_el$54, _el$55);
4759
+ insertNode(_el$54, _el$56);
4760
+ setProp(_el$54, "paddingX", 1);
4761
+ setProp(_el$55, "height", 1);
4762
+ setProp(_el$55, "wrapMode", "none");
4763
+ insert(_el$55, () => disk()?.name);
4764
+ insert(_el$56, (() => {
4459
4765
  var _c$5 = memo2(() => !!disk());
4460
4766
  return () => _c$5() ? `${path(disk())} / ${bytes(disk().bytes)}` : "";
4461
4767
  })());
4462
4768
  effect((_p$) => {
4463
4769
  var _v$19 = palette.panelAlt, _v$20 = palette.foreground, _v$21 = TextAttributes2.BOLD, _v$22 = palette.accent;
4464
- _v$19 !== _p$.e && (_p$.e = setProp(_el$53, "backgroundColor", _v$19, _p$.e));
4465
- _v$20 !== _p$.t && (_p$.t = setProp(_el$54, "fg", _v$20, _p$.t));
4466
- _v$21 !== _p$.a && (_p$.a = setProp(_el$54, "attributes", _v$21, _p$.a));
4467
- _v$22 !== _p$.o && (_p$.o = setProp(_el$55, "fg", _v$22, _p$.o));
4770
+ _v$19 !== _p$.e && (_p$.e = setProp(_el$54, "backgroundColor", _v$19, _p$.e));
4771
+ _v$20 !== _p$.t && (_p$.t = setProp(_el$55, "fg", _v$20, _p$.t));
4772
+ _v$21 !== _p$.a && (_p$.a = setProp(_el$55, "attributes", _v$21, _p$.a));
4773
+ _v$22 !== _p$.o && (_p$.o = setProp(_el$56, "fg", _v$22, _p$.o));
4468
4774
  return _p$;
4469
4775
  }, {
4470
4776
  e: void 0,
@@ -4472,18 +4778,18 @@ ${selection()}
4472
4778
  a: void 0,
4473
4779
  o: void 0
4474
4780
  });
4475
- return _el$53;
4781
+ return _el$54;
4476
4782
  })(), (() => {
4477
- var _el$56 = createElement("text");
4478
- insertNode(_el$56, createTextNode(`ALL data and partitions on this drive will be lost. Back up anything you need before continuing.`));
4479
- effect((_$p) => setProp(_el$56, "fg", palette.warning, _$p));
4480
- return _el$56;
4783
+ var _el$57 = createElement("text");
4784
+ insertNode(_el$57, createTextNode(`ALL data and partitions on this drive will be lost. Back up anything you need before continuing.`));
4785
+ effect((_$p) => setProp(_el$57, "fg", palette.warning, _$p));
4786
+ return _el$57;
4481
4787
  })(), (() => {
4482
- var _el$58 = createElement("box");
4483
- insert(_el$58, () => row("Go back", "", 0), null);
4484
- insert(_el$58, () => row("Erase & flash", "", 1, true), null);
4485
- effect((_$p) => setProp(_el$58, "gap", tight() ? 0 : 1, _$p));
4486
- return _el$58;
4788
+ var _el$59 = createElement("box");
4789
+ insert(_el$59, () => row("Go back", "", 0), null);
4790
+ insert(_el$59, () => row("Erase & flash", "", 1, true), null);
4791
+ effect((_$p) => setProp(_el$59, "gap", tight() ? 0 : 1, _$p));
4792
+ return _el$59;
4487
4793
  })()];
4488
4794
  }
4489
4795
  }), createComponent2(Show, {
@@ -4492,69 +4798,69 @@ ${selection()}
4492
4798
  },
4493
4799
  get children() {
4494
4800
  return [(() => {
4495
- var _el$59 = createElement("text"), _el$60 = createTextNode(` `);
4496
- insertNode(_el$59, _el$60);
4497
- insert(_el$59, spinner, _el$60);
4498
- insert(_el$59, (() => {
4801
+ var _el$60 = createElement("text"), _el$61 = createTextNode(` `);
4802
+ insertNode(_el$60, _el$61);
4803
+ insert(_el$60, spinner, _el$61);
4804
+ insert(_el$60, (() => {
4499
4805
  var _c$6 = memo2(() => !!stopping());
4500
4806
  return () => _c$6() ? "Stopping safely..." : progress().stage;
4501
4807
  })(), null);
4502
4808
  effect((_p$) => {
4503
4809
  var _v$23 = palette.accent, _v$24 = TextAttributes2.BOLD;
4504
- _v$23 !== _p$.e && (_p$.e = setProp(_el$59, "fg", _v$23, _p$.e));
4505
- _v$24 !== _p$.t && (_p$.t = setProp(_el$59, "attributes", _v$24, _p$.t));
4810
+ _v$23 !== _p$.e && (_p$.e = setProp(_el$60, "fg", _v$23, _p$.e));
4811
+ _v$24 !== _p$.t && (_p$.t = setProp(_el$60, "attributes", _v$24, _p$.t));
4506
4812
  return _p$;
4507
4813
  }, {
4508
4814
  e: void 0,
4509
4815
  t: void 0
4510
4816
  });
4511
- return _el$59;
4512
- })(), (() => {
4513
- var _el$61 = createElement("text");
4514
- insert(_el$61, () => disk()?.name);
4515
- effect((_$p) => setProp(_el$61, "fg", palette.foreground, _$p));
4516
- return _el$61;
4817
+ return _el$60;
4517
4818
  })(), (() => {
4518
4819
  var _el$62 = createElement("text");
4519
- insert(_el$62, (() => {
4820
+ insert(_el$62, () => disk()?.name);
4821
+ effect((_$p) => setProp(_el$62, "fg", palette.foreground, _$p));
4822
+ return _el$62;
4823
+ })(), (() => {
4824
+ var _el$63 = createElement("text");
4825
+ insert(_el$63, (() => {
4520
4826
  var _c$7 = memo2(() => !!stopping());
4521
4827
  return () => _c$7() ? "Waiting for all child processes to stop. Keep the USB connected." : progress().detail;
4522
4828
  })());
4523
- effect((_$p) => setProp(_el$62, "fg", palette.muted, _$p));
4524
- return _el$62;
4829
+ effect((_$p) => setProp(_el$63, "fg", palette.muted, _$p));
4830
+ return _el$63;
4525
4831
  })(), createComponent2(Show, {
4526
4832
  get when() {
4527
4833
  return percent() !== void 0;
4528
4834
  },
4529
4835
  get children() {
4530
4836
  return [(() => {
4531
- var _el$63 = createElement("box");
4532
- setProp(_el$63, "flexShrink", 0);
4533
- insert(_el$63, createComponent2(Show, {
4837
+ var _el$64 = createElement("box");
4838
+ setProp(_el$64, "flexShrink", 0);
4839
+ insert(_el$64, createComponent2(Show, {
4534
4840
  get when() {
4535
4841
  return percent() > 0;
4536
4842
  },
4537
4843
  get children() {
4538
- var _el$64 = createElement("box");
4539
- setProp(_el$64, "height", 1);
4844
+ var _el$65 = createElement("box");
4845
+ setProp(_el$65, "height", 1);
4540
4846
  effect((_p$) => {
4541
4847
  var _v$25 = `${percent() ?? 0}%`, _v$26 = palette.accent;
4542
- _v$25 !== _p$.e && (_p$.e = setProp(_el$64, "width", _v$25, _p$.e));
4543
- _v$26 !== _p$.t && (_p$.t = setProp(_el$64, "backgroundColor", _v$26, _p$.t));
4848
+ _v$25 !== _p$.e && (_p$.e = setProp(_el$65, "width", _v$25, _p$.e));
4849
+ _v$26 !== _p$.t && (_p$.t = setProp(_el$65, "backgroundColor", _v$26, _p$.t));
4544
4850
  return _p$;
4545
4851
  }, {
4546
4852
  e: void 0,
4547
4853
  t: void 0
4548
4854
  });
4549
- return _el$64;
4855
+ return _el$65;
4550
4856
  }
4551
4857
  }));
4552
4858
  effect((_p$) => {
4553
4859
  var _v$27 = !tight(), _v$28 = palette.accent, _v$29 = tight() ? 1 : 3, _v$30 = palette.panelAlt;
4554
- _v$27 !== _p$.e && (_p$.e = setProp(_el$63, "border", _v$27, _p$.e));
4555
- _v$28 !== _p$.t && (_p$.t = setProp(_el$63, "borderColor", _v$28, _p$.t));
4556
- _v$29 !== _p$.a && (_p$.a = setProp(_el$63, "height", _v$29, _p$.a));
4557
- _v$30 !== _p$.o && (_p$.o = setProp(_el$63, "backgroundColor", _v$30, _p$.o));
4860
+ _v$27 !== _p$.e && (_p$.e = setProp(_el$64, "border", _v$27, _p$.e));
4861
+ _v$28 !== _p$.t && (_p$.t = setProp(_el$64, "borderColor", _v$28, _p$.t));
4862
+ _v$29 !== _p$.a && (_p$.a = setProp(_el$64, "height", _v$29, _p$.a));
4863
+ _v$30 !== _p$.o && (_p$.o = setProp(_el$64, "backgroundColor", _v$30, _p$.o));
4558
4864
  return _p$;
4559
4865
  }, {
4560
4866
  e: void 0,
@@ -4562,44 +4868,44 @@ ${selection()}
4562
4868
  a: void 0,
4563
4869
  o: void 0
4564
4870
  });
4565
- return _el$63;
4871
+ return _el$64;
4566
4872
  })(), (() => {
4567
- var _el$65 = createElement("text"), _el$66 = createTextNode(`% `), _el$67 = createTextNode(` / `);
4568
- insertNode(_el$65, _el$66);
4569
- insertNode(_el$65, _el$67);
4570
- insert(_el$65, percent, _el$66);
4571
- insert(_el$65, () => bytes(progress().bytes ?? 0), _el$67);
4572
- insert(_el$65, () => bytes(progress().total ?? 0), null);
4873
+ var _el$66 = createElement("text"), _el$67 = createTextNode(`% `), _el$68 = createTextNode(` / `);
4874
+ insertNode(_el$66, _el$67);
4875
+ insertNode(_el$66, _el$68);
4876
+ insert(_el$66, percent, _el$67);
4877
+ insert(_el$66, () => bytes(progress().bytes ?? 0), _el$68);
4878
+ insert(_el$66, () => bytes(progress().total ?? 0), null);
4573
4879
  effect((_p$) => {
4574
4880
  var _v$31 = palette.foreground, _v$32 = TextAttributes2.BOLD;
4575
- _v$31 !== _p$.e && (_p$.e = setProp(_el$65, "fg", _v$31, _p$.e));
4576
- _v$32 !== _p$.t && (_p$.t = setProp(_el$65, "attributes", _v$32, _p$.t));
4881
+ _v$31 !== _p$.e && (_p$.e = setProp(_el$66, "fg", _v$31, _p$.e));
4882
+ _v$32 !== _p$.t && (_p$.t = setProp(_el$66, "attributes", _v$32, _p$.t));
4577
4883
  return _p$;
4578
4884
  }, {
4579
4885
  e: void 0,
4580
4886
  t: void 0
4581
4887
  });
4582
- return _el$65;
4888
+ return _el$66;
4583
4889
  })(), createComponent2(Show, {
4584
4890
  get when() {
4585
4891
  return !tight();
4586
4892
  },
4587
4893
  get children() {
4588
- var _el$68 = createElement("text");
4589
- insert(_el$68, (() => {
4894
+ var _el$69 = createElement("text");
4895
+ insert(_el$69, (() => {
4590
4896
  var _c$8 = memo2(() => !!progress().speed);
4591
4897
  return () => _c$8() ? `${bytes(progress().speed)} / s` : "";
4592
4898
  })());
4593
- effect((_$p) => setProp(_el$68, "fg", palette.muted, _$p));
4594
- return _el$68;
4899
+ effect((_$p) => setProp(_el$69, "fg", palette.muted, _$p));
4900
+ return _el$69;
4595
4901
  }
4596
4902
  })];
4597
4903
  }
4598
4904
  }), (() => {
4599
- var _el$69 = createElement("text");
4600
- insertNode(_el$69, createTextNode(`Keep the USB connected until safe removal succeeds.`));
4601
- effect((_$p) => setProp(_el$69, "fg", palette.warning, _$p));
4602
- return _el$69;
4905
+ var _el$70 = createElement("text");
4906
+ insertNode(_el$70, createTextNode(`Keep the USB connected until safe removal succeeds.`));
4907
+ effect((_$p) => setProp(_el$70, "fg", palette.warning, _$p));
4908
+ return _el$70;
4603
4909
  })()];
4604
4910
  }
4605
4911
  }), createComponent2(Show, {
@@ -4608,34 +4914,34 @@ ${selection()}
4608
4914
  },
4609
4915
  get children() {
4610
4916
  return [(() => {
4611
- var _el$71 = createElement("text");
4612
- insert(_el$71, () => props.backend.successTitle);
4917
+ var _el$72 = createElement("text");
4918
+ insert(_el$72, () => props.backend.successTitle);
4613
4919
  effect((_p$) => {
4614
4920
  var _v$33 = palette.success, _v$34 = TextAttributes2.BOLD;
4615
- _v$33 !== _p$.e && (_p$.e = setProp(_el$71, "fg", _v$33, _p$.e));
4616
- _v$34 !== _p$.t && (_p$.t = setProp(_el$71, "attributes", _v$34, _p$.t));
4921
+ _v$33 !== _p$.e && (_p$.e = setProp(_el$72, "fg", _v$33, _p$.e));
4922
+ _v$34 !== _p$.t && (_p$.t = setProp(_el$72, "attributes", _v$34, _p$.t));
4617
4923
  return _p$;
4618
4924
  }, {
4619
4925
  e: void 0,
4620
4926
  t: void 0
4621
4927
  });
4622
- return _el$71;
4623
- })(), (() => {
4624
- var _el$72 = createElement("text");
4625
- insert(_el$72, () => props.backend.successDetail);
4626
- effect((_$p) => setProp(_el$72, "fg", palette.foreground, _$p));
4627
4928
  return _el$72;
4628
4929
  })(), (() => {
4629
4930
  var _el$73 = createElement("text");
4630
- insertNode(_el$73, createTextNode(`Compressed image and raw stream verified. Not a device read-back.`));
4631
- effect((_$p) => setProp(_el$73, "fg", palette.muted, _$p));
4931
+ insert(_el$73, () => props.backend.successDetail);
4932
+ effect((_$p) => setProp(_el$73, "fg", palette.foreground, _$p));
4632
4933
  return _el$73;
4633
4934
  })(), (() => {
4634
- var _el$75 = createElement("box");
4635
- setProp(_el$75, "gap", 1);
4636
- insert(_el$75, () => row("Choose another image", "", 0), null);
4637
- insert(_el$75, () => row("Quit", "", 1), null);
4638
- return _el$75;
4935
+ var _el$74 = createElement("text");
4936
+ insertNode(_el$74, createTextNode(`Compressed image and raw stream verified. Not a device read-back.`));
4937
+ effect((_$p) => setProp(_el$74, "fg", palette.muted, _$p));
4938
+ return _el$74;
4939
+ })(), (() => {
4940
+ var _el$76 = createElement("box");
4941
+ setProp(_el$76, "gap", 1);
4942
+ insert(_el$76, () => row("Choose another image", "", 0), null);
4943
+ insert(_el$76, () => row("Quit", "", 1), null);
4944
+ return _el$76;
4639
4945
  })()];
4640
4946
  }
4641
4947
  }), createComponent2(Show, {
@@ -4644,56 +4950,67 @@ ${selection()}
4644
4950
  },
4645
4951
  get children() {
4646
4952
  return [(() => {
4647
- var _el$76 = createElement("text");
4648
- insertNode(_el$76, createTextNode(`Flash not completed`));
4953
+ var _el$77 = createElement("text");
4954
+ insertNode(_el$77, createTextNode(`Flash not completed`));
4649
4955
  effect((_p$) => {
4650
4956
  var _v$35 = palette.danger, _v$36 = TextAttributes2.BOLD;
4651
- _v$35 !== _p$.e && (_p$.e = setProp(_el$76, "fg", _v$35, _p$.e));
4652
- _v$36 !== _p$.t && (_p$.t = setProp(_el$76, "attributes", _v$36, _p$.t));
4957
+ _v$35 !== _p$.e && (_p$.e = setProp(_el$77, "fg", _v$35, _p$.e));
4958
+ _v$36 !== _p$.t && (_p$.t = setProp(_el$77, "attributes", _v$36, _p$.t));
4653
4959
  return _p$;
4654
4960
  }, {
4655
4961
  e: void 0,
4656
4962
  t: void 0
4657
4963
  });
4658
- return _el$76;
4964
+ return _el$77;
4659
4965
  })(), (() => {
4660
- var _el$78 = createElement("text");
4661
- insert(_el$78, error);
4662
- effect((_$p) => setProp(_el$78, "fg", palette.foreground, _$p));
4663
- return _el$78;
4664
- })(), (() => {
4665
- var _el$79 = createElement("box");
4666
- setProp(_el$79, "gap", 1);
4667
- insert(_el$79, () => row("Refresh & try again", "", 0), null);
4668
- insert(_el$79, () => row("Quit", "", 1), null);
4966
+ var _el$79 = createElement("text");
4967
+ insert(_el$79, error);
4968
+ effect((_$p) => setProp(_el$79, "fg", palette.foreground, _$p));
4669
4969
  return _el$79;
4970
+ })(), (() => {
4971
+ var _el$80 = createElement("box");
4972
+ setProp(_el$80, "gap", 1);
4973
+ insert(_el$80, () => row("Refresh & try again", "", 0), null);
4974
+ insert(_el$80, () => row("Quit", "", 1), null);
4975
+ return _el$80;
4670
4976
  })()];
4671
4977
  }
4672
4978
  })];
4673
4979
  }
4674
4980
  }));
4675
- setProp(_el$80, "height", 1);
4676
- setProp(_el$80, "flexShrink", 0);
4677
- setProp(_el$80, "wrapMode", "none");
4678
- insert(_el$80, (() => {
4981
+ insertNode(_el$81, _el$82);
4982
+ insertNode(_el$81, _el$83);
4983
+ setProp(_el$81, "height", 1);
4984
+ setProp(_el$81, "flexShrink", 0);
4985
+ setProp(_el$81, "flexDirection", "row");
4986
+ setProp(_el$81, "gap", 1);
4987
+ setProp(_el$82, "flexGrow", 1);
4988
+ setProp(_el$82, "minWidth", 0);
4989
+ setProp(_el$82, "wrapMode", "none");
4990
+ insert(_el$82, (() => {
4679
4991
  var _c$9 = memo2(() => !!busy());
4680
- return () => _c$9() ? "Esc cancel / Q stop & quit" : dimensions().width < 56 ? "Arrows / Enter / Esc / R / Q quit" : "Arrows / Enter / Esc back / R refresh / Q quit";
4992
+ return () => _c$9() ? "Esc cancel / Q stop & quit" : dimensions().width < 56 ? "\u2191\u2193 Enter / Esc / R / Q quit" : "Arrows / Enter / Esc back / R refresh / Q quit";
4681
4993
  })());
4994
+ insertNode(_el$83, _el$84);
4995
+ setProp(_el$83, "flexShrink", 0);
4996
+ setProp(_el$83, "wrapMode", "none");
4997
+ insert(_el$83, version, null);
4682
4998
  effect((_p$) => {
4683
- var _v$37 = palette.background, _v$38 = dimensions().width <= 80 ? "100%" : 80, _v$39 = dimensions().height <= 24 ? "100%" : 24, _v$40 = palette.border, _v$41 = palette.card, _v$42 = palette.accent, _v$43 = TextAttributes2.BOLD, _v$44 = palette.muted, _v$45 = palette.danger, _v$46 = tight() ? 0 : 1, _v$47 = tight() ? 0 : 1, _v$48 = tight() || (compact() || dimensions().width < 56) && (screen() === "setup" || !!image()) ? 0 : 1, _v$49 = palette.muted;
4684
- _v$37 !== _p$.e && (_p$.e = setProp(_el$4, "backgroundColor", _v$37, _p$.e));
4685
- _v$38 !== _p$.t && (_p$.t = setProp(_el$5, "width", _v$38, _p$.t));
4686
- _v$39 !== _p$.a && (_p$.a = setProp(_el$5, "height", _v$39, _p$.a));
4687
- _v$40 !== _p$.o && (_p$.o = setProp(_el$5, "borderColor", _v$40, _p$.o));
4688
- _v$41 !== _p$.i && (_p$.i = setProp(_el$5, "backgroundColor", _v$41, _p$.i));
4689
- _v$42 !== _p$.n && (_p$.n = setProp(_el$7, "fg", _v$42, _p$.n));
4690
- _v$43 !== _p$.s && (_p$.s = setProp(_el$7, "attributes", _v$43, _p$.s));
4691
- _v$44 !== _p$.h && (_p$.h = setProp(_el$9, "fg", _v$44, _p$.h));
4692
- _v$45 !== _p$.r && (_p$.r = setProp(_el$0, "backgroundColor", _v$45, _p$.r));
4693
- _v$46 !== _p$.d && (_p$.d = setProp(_el$0, "marginTop", _v$46, _p$.d));
4694
- _v$47 !== _p$.l && (_p$.l = setProp(_el$1, "paddingTop", _v$47, _p$.l));
4695
- _v$48 !== _p$.u && (_p$.u = setProp(_el$1, "gap", _v$48, _p$.u));
4696
- _v$49 !== _p$.c && (_p$.c = setProp(_el$80, "fg", _v$49, _p$.c));
4999
+ var _v$37 = palette.background, _v$38 = dimensions().width <= 80 ? "100%" : 80, _v$39 = dimensions().height <= 24 ? "100%" : 24, _v$40 = palette.border, _v$41 = palette.card, _v$42 = palette.accent, _v$43 = TextAttributes2.BOLD, _v$44 = palette.muted, _v$45 = palette.danger, _v$46 = tight() ? 0 : 1, _v$47 = tight() ? 0 : 1, _v$48 = tight() || (compact() || dimensions().width < 56) && (screen() === "setup" || !!image()) ? 0 : 1, _v$49 = palette.muted, _v$50 = palette.muted;
5000
+ _v$37 !== _p$.e && (_p$.e = setProp(_el$5, "backgroundColor", _v$37, _p$.e));
5001
+ _v$38 !== _p$.t && (_p$.t = setProp(_el$6, "width", _v$38, _p$.t));
5002
+ _v$39 !== _p$.a && (_p$.a = setProp(_el$6, "height", _v$39, _p$.a));
5003
+ _v$40 !== _p$.o && (_p$.o = setProp(_el$6, "borderColor", _v$40, _p$.o));
5004
+ _v$41 !== _p$.i && (_p$.i = setProp(_el$6, "backgroundColor", _v$41, _p$.i));
5005
+ _v$42 !== _p$.n && (_p$.n = setProp(_el$8, "fg", _v$42, _p$.n));
5006
+ _v$43 !== _p$.s && (_p$.s = setProp(_el$8, "attributes", _v$43, _p$.s));
5007
+ _v$44 !== _p$.h && (_p$.h = setProp(_el$0, "fg", _v$44, _p$.h));
5008
+ _v$45 !== _p$.r && (_p$.r = setProp(_el$1, "backgroundColor", _v$45, _p$.r));
5009
+ _v$46 !== _p$.d && (_p$.d = setProp(_el$1, "marginTop", _v$46, _p$.d));
5010
+ _v$47 !== _p$.l && (_p$.l = setProp(_el$10, "paddingTop", _v$47, _p$.l));
5011
+ _v$48 !== _p$.u && (_p$.u = setProp(_el$10, "gap", _v$48, _p$.u));
5012
+ _v$49 !== _p$.c && (_p$.c = setProp(_el$82, "fg", _v$49, _p$.c));
5013
+ _v$50 !== _p$.w && (_p$.w = setProp(_el$83, "fg", _v$50, _p$.w));
4697
5014
  return _p$;
4698
5015
  }, {
4699
5016
  e: void 0,
@@ -4708,9 +5025,10 @@ ${selection()}
4708
5025
  d: void 0,
4709
5026
  l: void 0,
4710
5027
  u: void 0,
4711
- c: void 0
5028
+ c: void 0,
5029
+ w: void 0
4712
5030
  });
4713
- return _el$4;
5031
+ return _el$5;
4714
5032
  })();
4715
5033
  }
4716
5034
 
@@ -4778,3 +5096,56 @@ if (args.length > 1 || args.some((arg) => !["--list-images", "--clear-cache"].in
4778
5096
  for (const signal of signals) process.off(signal, quit);
4779
5097
  }
4780
5098
  }
5099
+ /*!
5100
+ * Boo artwork derived from @simonklee/bigfeelings@0.2.1; motion and scene shared
5101
+ * with the Boo website (originally website/src/lib/boo-animation.ts).
5102
+ *
5103
+ * MIT License
5104
+ * Copyright (c) 2026 Simon Klee
5105
+ *
5106
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
5107
+ * of this software and associated documentation files (the "Software"), to deal
5108
+ * in the Software without restriction, including without limitation the rights
5109
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
5110
+ * copies of the Software, and to permit persons to whom the Software is
5111
+ * furnished to do so, subject to the following conditions:
5112
+ *
5113
+ * The above copyright notice and this permission notice shall be included in all
5114
+ * copies or substantial portions of the Software.
5115
+ *
5116
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
5117
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
5118
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
5119
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
5120
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
5121
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
5122
+ * SOFTWARE.
5123
+ */
5124
+ /*!
5125
+ * Artwork derived from @simonklee/bigfeelings@0.2.1, original octant painter,
5126
+ * scale 4, time 0, right-facing ghost at (0,0), wordmark at (48,0).
5127
+ * Frozen 92x48 samples / 46x12 cells, unchanged from BooLogoRenderable.ts.
5128
+ * Source tarball SHA-256:
5129
+ * 5a82909d19c9eb94e28c7407f5d220f7ff8051a1e3cdcdb11a6eb8870c4e30b0
5130
+ *
5131
+ * MIT License
5132
+ * Copyright (c) 2026 Simon Klee
5133
+ *
5134
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
5135
+ * of this software and associated documentation files (the "Software"), to deal
5136
+ * in the Software without restriction, including without limitation the rights
5137
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
5138
+ * copies of the Software, and to permit persons to whom the Software is
5139
+ * furnished to do so, subject to the following conditions:
5140
+ *
5141
+ * The above copyright notice and this permission notice shall be included in all
5142
+ * copies or substantial portions of the Software.
5143
+ *
5144
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
5145
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
5146
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
5147
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
5148
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
5149
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
5150
+ * SOFTWARE.
5151
+ */