Build log
nerves_system_rpi4
vibe 0.2.4 · fail · run vibe-0.2.4-1791151171447
1419 of 1419 lines
1Resolving Hex dependencies...2Resolution completed in 0.74s3Unchanged:4 abacus 2.2.05 abnf_parsec 2.1.06 boxart 0.3.37 castore 1.0.218 cc_precompiler 0.1.119 circular_buffer 1.1.010 cowboy 2.19.011 cowboy_telemetry 0.4.012 cowlib 2.20.0 VULNERABLE!13 EEF-CVE-2026-43966 (MEDIUM)14 aka: CVE-2026-43966, GHSA-w4f7-4cxr-rv3c15 HTTP Response Splitting via Non-VCHAR Bytes in cow_http_struct_hd:escape_string/216 https://osv.dev/vulnerability/EEF-CVE-2026-439661718 EEF-CVE-2026-43969 (LOW)19 aka: CVE-2026-43969, GHSA-g2wm-735q-3f5620 Cookie Request Header Injection via Unvalidated Encoder in cow_cookie:cookie/121 https://osv.dev/vulnerability/EEF-CVE-2026-4396922 cringe 0.2.023 crontab 1.2.024 db_connection 2.10.225 decimal 3.1.126 dotenvy 1.2.127 ecto 3.14.228 ecto_sql 3.14.029 ecto_sqlite3 0.25.030 elixir_make 0.10.031 ex_ast 0.12.1032 ex_gram 0.67.033 exqlite 0.42.034 file_system 1.1.135 finch 0.22.036 floki 0.38.437 fsmx 0.5.038 fuse 2.5.039 ghostty 0.4.940 glob_ex 0.1.1241 hex_solver 0.3.042 hpax 1.1.043 iconify 0.3.144 idna 7.1.045 interactive_cmd 0.1.446 jason 1.4.547 jido 2.3.348 jido_action 2.3.049 jido_ai 2.3.050 jido_signal 2.3.151 json_codec 0.3.152 json_spec 1.2.053 jsv 0.26.054 libgraph 0.16.055 llm_db 2026.9.856 lua 0.4.057 luerl 1.5.158 mdex 0.14.259 mdex_native 0.2.1160 mime 2.0.761 mint 1.11.062 mint_web_socket 1.0.663 multigraph 0.16.1-mg.564 nerves 2.0.0-pre.265 nerves_discovery 0.1.566 nerves_logging 0.2.467 nerves_runtime 0.13.1368 nerves_system_bbb 2.30.269 nerves_system_br 1.34.470 nerves_system_mangopi_mq_pro 0.17.271 nerves_system_qemu_aarch64 0.4.272 nerves_system_rpi0 2.1.273 nerves_system_rpi4 2.1.274 nerves_system_rpi5 2.1.275 nerves_system_trellis 0.5.076 nerves_system_x86_64 1.34.277 nerves_toolchain_aarch64_nerves_linux_gnu 15.3.178 nerves_toolchain_armv6_nerves_linux_gnueabihf 15.3.179 nerves_toolchain_armv7_nerves_linux_gnueabihf 15.3.180 nerves_toolchain_riscv64_nerves_linux_gnu 15.3.181 nerves_toolchain_x86_64_nerves_linux_musl 15.3.182 nerves_uevent 0.1.783 nimble_options 1.1.184 nimble_ownership 1.0.285 nimble_parsec 1.4.286 nimble_pool 1.1.087 npm 0.7.688 npm_semver 0.1.089 opentelemetry 1.7.090 opentelemetry_api 1.5.091 opentelemetry_telemetry 1.1.292 oxc 0.17.893 oxide_ex 0.2.294 phoenix 1.8.1595 phoenix_html 4.3.096 phoenix_iconify 0.3.797 phoenix_live_view 1.2.1298 phoenix_pubsub 2.3.099 phoenix_streamdown 1.0.0-beta.4100 phoenix_template 1.1.0101 plug 1.20.3102 plug_cowboy 2.9.0103 plug_crypto 2.2.0104 poolboy 1.5.2105 private 0.1.2106 property_table 0.3.4107 quickbeam 0.10.20108 ranch 2.3.0109 reach 2.6.1110 req 0.5.18 VULNERABLE!111 EEF-CVE-2026-49755 (HIGH)112 aka: CVE-2026-49755, GHSA-655f-mp8p-96gv113 Decompression bomb DoS in Req via auto-decoded archive and compressed response bodies114 https://osv.dev/vulnerability/EEF-CVE-2026-49755115116 EEF-CVE-2026-49756 (LOW)117 aka: CVE-2026-49756, GHSA-px9f-whj3-246m118 Multipart form-data header injection in Req via unescaped name/filename/content_type119 https://osv.dev/vulnerability/EEF-CVE-2026-49756120 req_llm 1.25.0121 ring_logger 0.11.7122 rustler_precompiled 0.10.0123 server_sent_events 1.1.0124 sourceror 1.12.3125 splode 0.3.2126 tablet 0.3.3127 telemetry 1.4.2128 telemetry_metrics 1.2.0129 texture 2.0.0130 time_zone_info 0.8.0131 toml 0.7.0132 toolshed 0.5.0133 ttycast 0.1.0134 uboot_env 1.0.2135 uniq 0.6.3136 vibe 0.2.4137 vize 0.13.1138 volt 0.14.6139 websock 0.5.3140 websock_adapter 0.6.0141 websockex 0.5.1142 yamerl 0.10.0143 yaml_elixir 2.12.2144 zigler_precompiled 0.1.6145 zoi 0.18.11146* Getting vibe (Hex package)147* Getting nerves (Hex package)148* Getting ring_logger (Hex package)149* Getting toolshed (Hex package)150* Getting nerves_runtime (Hex package)151* Getting nerves_system_bbb (Hex package)152* Getting nerves_system_mangopi_mq_pro (Hex package)153* Getting nerves_system_qemu_aarch64 (Hex package)154* Getting nerves_system_rpi0 (Hex package)155* Getting nerves_system_rpi4 (Hex package)156* Getting nerves_system_rpi5 (Hex package)157* Getting nerves_system_trellis (Hex package)158* Getting nerves_system_x86_64 (Hex package)159* Getting nerves_system_br (Hex package)160* Getting nerves_toolchain_x86_64_nerves_linux_musl (Hex package)161* Getting nerves_toolchain_armv7_nerves_linux_gnueabihf (Hex package)162* Getting nerves_toolchain_aarch64_nerves_linux_gnu (Hex package)163* Getting nerves_toolchain_armv6_nerves_linux_gnueabihf (Hex package)164* Getting nerves_toolchain_riscv64_nerves_linux_gnu (Hex package)165* Getting nerves_logging (Hex package)166* Getting nerves_uevent (Hex package)167* Getting uboot_env (Hex package)168* Getting elixir_make (Hex package)169* Getting property_table (Hex package)170* Getting circular_buffer (Hex package)171* Getting interactive_cmd (Hex package)172* Getting nerves_discovery (Hex package)173* Getting tablet (Hex package)174* Getting abnf_parsec (Hex package)175* Getting boxart (Hex package)176* Getting cringe (Hex package)177* Getting ecto_sql (Hex package)178* Getting ecto_sqlite3 (Hex package)179* Getting ex_ast (Hex package)180* Getting ex_gram (Hex package)181* Getting floki (Hex package)182* Getting ghostty (Hex package)183* Getting glob_ex (Hex package)184* Getting jason (Hex package)185* Getting jido (Hex package)186* Getting jido_ai (Hex package)187* Getting json_spec (Hex package)188* Getting mdex (Hex package)189* Getting opentelemetry (Hex package)190* Getting opentelemetry_api (Hex package)191* Getting opentelemetry_telemetry (Hex package)192* Getting phoenix (Hex package)193* Getting phoenix_iconify (Hex package)194* Getting phoenix_live_view (Hex package)195* Getting phoenix_streamdown (Hex package)196* Getting plug_cowboy (Hex package)197* Getting reach (Hex package)198* Getting req (Hex package)199* Getting req_llm (Hex package)200* Getting toml (Hex package)201* Getting ttycast (Hex package)202* Getting volt (Hex package)203* Getting yaml_elixir (Hex package)204* Getting yamerl (Hex package)205* Getting dotenvy (Hex package)206* Getting file_system (Hex package)207* Getting npm (Hex package)208* Getting oxc (Hex package)209* Getting oxide_ex (Hex package)210* Getting plug (Hex package)211* Getting quickbeam (Hex package)212* Getting vize (Hex package)213* Getting websock_adapter (Hex package)214* Getting websock (Hex package)215* Getting rustler_precompiled (Hex package)216* Getting mint_web_socket (Hex package)217* Getting nimble_pool (Hex package)218* Getting zigler_precompiled (Hex package)219* Getting castore (Hex package)220* Getting mint (Hex package)221* Getting hpax (Hex package)222* Getting mime (Hex package)223* Getting plug_crypto (Hex package)224* Getting telemetry (Hex package)225* Getting hex_solver (Hex package)226* Getting npm_semver (Hex package)227* Getting nimble_parsec (Hex package)228* Getting jsv (Hex package)229* Getting llm_db (Hex package)230* Getting nimble_options (Hex package)231* Getting server_sent_events (Hex package)232* Getting splode (Hex package)233* Getting websockex (Hex package)234* Getting zoi (Hex package)235* Getting idna (Hex package)236* Getting texture (Hex package)237* Getting finch (Hex package)238* Getting libgraph (Hex package)239* Getting cowboy (Hex package)240* Getting cowboy_telemetry (Hex package)241* Getting cowlib (Hex package)242* Getting ranch (Hex package)243* Getting phoenix_html (Hex package)244* Getting phoenix_template (Hex package)245* Getting iconify (Hex package)246* Getting json_codec (Hex package)247* Getting phoenix_pubsub (Hex package)248* Getting mdex_native (Hex package)249* Getting fsmx (Hex package)250* Getting jido_action (Hex package)251* Getting abacus (Hex package)252* Getting lua (Hex package)253* Getting multigraph (Hex package)254* Getting private (Hex package)255* Getting telemetry_metrics (Hex package)256* Getting uniq (Hex package)257* Getting luerl (Hex package)258* Getting crontab (Hex package)259* Getting jido_signal (Hex package)260* Getting poolboy (Hex package)261* Getting time_zone_info (Hex package)262* Getting fuse (Hex package)263* Getting nimble_ownership (Hex package)264* Getting sourceror (Hex package)265* Getting decimal (Hex package)266* Getting ecto (Hex package)267* Getting exqlite (Hex package)268* Getting cc_precompiler (Hex package)269* Getting db_connection (Hex package)270Found packages with security advisories, see above for details271You have added/upgraded packages you could sponsor, run `mix hex.sponsor` to learn more272==> nerves_system_br273Generated nerves_system_br app274==> file_system275Compiling 7 files (.ex)276Generated file_system app277==> floki278Compiling 1 file (.xrl)279Compiling 2 files (.erl)280Compiling 30 files (.ex)281Generated floki app282==> hex_solver283Compiling 21 files (.ex)284Generated hex_solver app285==> mime286Compiling 1 file (.ex)287Generated mime app288==> toml289Compiling 10 files (.ex)290 warning: using single-quoted strings to represent charlists is deprecated.291 Use ~c"" if you indeed want a charlist or use "" instead.292 You may run "mix format --migrate" to change all single-quoted293 strings to use the ~c sigil and fix this warning.294 │295 264 │ defp handle_token(lexer, original, doc, type, skip, _data, lines) when type in '-_' do296 │ ~297 │298 └─ lib/decoder.ex:264:82299300 warning: using single-quoted strings to represent charlists is deprecated.301 Use ~c"" if you indeed want a charlist or use "" instead.302 You may run "mix format --migrate" to change all single-quoted303 strings to use the ~c sigil and fix this warning.304 │305 371 │ {:ok, {type, _skip, _data, _lines}} when type in '-+' ->306 │ ~307 │308 └─ lib/decoder.ex:371:56309310 warning: using single-quoted strings to represent charlists is deprecated.311 Use ~c"" if you indeed want a charlist or use "" instead.312 You may run "mix format --migrate" to change all single-quoted313 strings to use the ~c sigil and fix this warning.314 │315 419 │ {:ok, {:alpha, _, <<c::utf8>>, _}} when c in 'eE' ->316 │ ~317 │318 └─ lib/decoder.ex:419:56319320 warning: using single-quoted strings to represent charlists is deprecated.321 Use ~c"" if you indeed want a charlist or use "" instead.322 You may run "mix format --migrate" to change all single-quoted323 strings to use the ~c sigil and fix this warning.324 │325 474 │ {:ok, {:alpha, _, <<c::utf8>>, _}} when c in 'eE' ->326 │ ~327 │328 └─ lib/decoder.ex:474:52329330 warning: using single-quoted strings to represent charlists is deprecated.331 Use ~c"" if you indeed want a charlist or use "" instead.332 You may run "mix format --migrate" to change all single-quoted333 strings to use the ~c sigil and fix this warning.334 │335 514 │ {:ok, {sign, _, _, _}} when sign in '-+' and last == ?e ->336 │ ~337 │338 └─ lib/decoder.ex:514:43339340 warning: using single-quoted strings to represent charlists is deprecated.341 Use ~c"" if you indeed want a charlist or use "" instead.342 You may run "mix format --migrate" to change all single-quoted343 strings to use the ~c sigil and fix this warning.344 │345 518 │ {:ok, {:alpha, _, <<c::utf8>>, _}} when c in 'eE' and signal == ?. ->346 │ ~347 │348 └─ lib/decoder.ex:518:52349350 warning: using single-quoted strings to represent charlists is deprecated.351 Use ~c"" if you indeed want a charlist or use "" instead.352 You may run "mix format --migrate" to change all single-quoted353 strings to use the ~c sigil and fix this warning.354 │355 522 │ {:ok, {?_, skip, _, lines}} when last not in '_e.' ->356 │ ~357 │358 └─ lib/decoder.ex:522:52359360 warning: using single-quoted strings to represent charlists is deprecated.361 Use ~c"" if you indeed want a charlist or use "" instead.362 You may run "mix format --migrate" to change all single-quoted363 strings to use the ~c sigil and fix this warning.364 │365 538 │ {:ok, {type, skip, data, lines}} when last in 'e.' ->366 │ ~367 │368 └─ lib/decoder.ex:538:53369370 warning: using single-quoted strings to represent charlists is deprecated.371 Use ~c"" if you indeed want a charlist or use "" instead.372 You may run "mix format --migrate" to change all single-quoted373 strings to use the ~c sigil and fix this warning.374 │375 542 │ {:ok, {_type, skip, _data, lines} = token} when last not in '_e.' ->376 │ ~377 │378 └─ lib/decoder.ex:542:67379380 warning: using single-quoted strings to represent charlists is deprecated.381 Use ~c"" if you indeed want a charlist or use "" instead.382 You may run "mix format --migrate" to change all single-quoted383 strings to use the ~c sigil and fix this warning.384 │385 682 │ {:ok, {sign, _, _, _}} when sign in '-+' ->386 │ ~387 │388 └─ lib/decoder.ex:682:45389390 warning: using single-quoted strings to represent charlists is deprecated.391 Use ~c"" if you indeed want a charlist or use "" instead.392 You may run "mix format --migrate" to change all single-quoted393 strings to use the ~c sigil and fix this warning.394 │395 796 │ {:ok, {sign, _, _, _}} when sign in '-+' ->396 │ ~397 │398 └─ lib/decoder.ex:796:43399400 warning: using single-quoted strings to represent charlists is deprecated.401 Use ~c"" if you indeed want a charlist or use "" instead.402 You may run "mix format --migrate" to change all single-quoted403 strings to use the ~c sigil and fix this warning.404 │405 916 │ {:ok, {type, skip, _, lines}} when type in '-_' ->406 │ ~407 │408 └─ lib/decoder.ex:916:52409410 warning: using single-quoted strings to represent charlists is deprecated.411 Use ~c"" if you indeed want a charlist or use "" instead.412 You may run "mix format --migrate" to change all single-quoted413 strings to use the ~c sigil and fix this warning.414 │415 954 │ {:ok, {type, _, _, _}} when type in '-_' ->416 │ ~417 │418 └─ lib/decoder.ex:954:51419420 warning: using single-quoted strings to represent charlists is deprecated.421 Use ~c"" if you indeed want a charlist or use "" instead.422 You may run "mix format --migrate" to change all single-quoted423 strings to use the ~c sigil and fix this warning.424 │425 969 │ {:ok, {type, _, _, _}} when type in '-_' ->426 │ ~427 │428 └─ lib/decoder.ex:969:43429430 warning: using single-quoted strings to represent charlists is deprecated.431 Use ~c"" if you indeed want a charlist or use "" instead.432 You may run "mix format --migrate" to change all single-quoted433 strings to use the ~c sigil and fix this warning.434 │435 983 │ {:ok, {type, _, _, _}} when type in '-_' ->436 │ ~437 │438 └─ lib/decoder.ex:983:47439440 warning: the following clause will never match:441442 {:datetime, {:error, :invalid_date}} ->443444 it is expected to match on type:445446 dynamic(447 {:date,448 ({:error, :invalid_date} and not {:ok, {integer(), integer(), integer()}}) or449 {:error, :incompatible_calendars or :invalid_format} or {:ok, %Date{}}} and450 not {:date, {:ok, %Date{}}}451 )452453 type warning found at:454 │455 722 │ {:datetime, {:error, :invalid_date}} ->456 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~457 │458 └─ lib/decoder.ex:722: Toml.Decoder.datetime/3459460 warning: the following clause will never match:461462 {:datetime, {:error, reason}} ->463464 it is expected to match on type:465466 dynamic(467 {:date,468 ({:error, :invalid_date} and not {:ok, {integer(), integer(), integer()}}) or469 {:error, :incompatible_calendars or :invalid_format} or {:ok, %Date{}}} and470 not {:date, {:ok, %Date{}}}471 )472473 type warning found at:474 │475 725 │ {:datetime, {:error, reason}} ->476 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~477 │478 └─ lib/decoder.ex:725: Toml.Decoder.datetime/3479480 warning: the following clause will never match:481482 {:error, _, _, _} = err ->483484 it is expected to match on type:485486 dynamic(487 {:date,488 ({:error, :invalid_date} and not {:ok, {integer(), integer(), integer()}}) or489 {:error, :incompatible_calendars or :invalid_format} or {:ok, %Date{}}} and490 not {:date, {:ok, %Date{}}}491 )492493 type warning found at:494 │495 728 │ {:error, _, _, _} = err ->496 │ ~497 │498 └─ lib/decoder.ex:728:25: Toml.Decoder.datetime/3499500 warning: the following clause will never match:501502 {:ok, {type, skip, data, lines}} ->503504 it is expected to match on type:505506 dynamic(507 {:date,508 ({:error, :invalid_date} and not {:ok, {integer(), integer(), integer()}}) or509 {:error, :incompatible_calendars or :invalid_format} or {:ok, %Date{}}} and510 not {:date, {:ok, %Date{}}}511 )512513 type warning found at:514 │515 731 │ {:ok, {type, skip, data, lines}} ->516 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~517 │518 └─ lib/decoder.ex:731: Toml.Decoder.datetime/3519520Generated toml app521==> circular_buffer522Compiling 1 file (.ex)523Generated circular_buffer app524==> nimble_options525Compiling 3 files (.ex)526Generated nimble_options app527==> multigraph528Compiling 16 files (.ex)529 warning: the following clause is redundant:530531 defp include_edge_for_filtered_partitions?(edge, _edge_partition, _partitions, where_fun)532 when is_function(where_fun)533534 it has type:535536 dynamic(), dynamic(), dynamic(), dynamic(fun())537538 previous clauses have already matched on the following types:539540 term(), term(), term(), nil541 term(), term(), term(), fun()542543 │544 2902 │ defp include_edge_for_filtered_partitions?(edge, _edge_partition, _partitions, where_fun)545 │ ~546 │547 └─ lib/multigraph.ex:2902:8: Multigraph.include_edge_for_filtered_partitions?/4548549Generated multigraph app550==> plug_crypto551Compiling 5 files (.ex)552Generated plug_crypto app553==> hpax554Compiling 4 files (.ex)555Generated hpax app556==> nerves_compatibility_test557===> Analyzing applications...558===> Compiling yamerl559/work/proj/deps_rpi4/yamerl/src/yamerl_node_binary.erl:65:9: Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.560Compile directive 'nowarn_deprecated_catch' can be used to suppress561warnings in selected modules.562% 65| case catch base64:decode(Text) of563% | ^564565/work/proj/deps_rpi4/yamerl/src/yamerl_node_binary.erl:72:9: Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.566Compile directive 'nowarn_deprecated_catch' can be used to suppress567warnings in selected modules.568% 72| case catch base64:decode(Text) of569% | ^570571 ┌─ src/yamerl_node_binary.erl:572 │573 65 │ case catch base64:decode(Text) of574 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.575Compile directive 'nowarn_deprecated_catch' can be used to suppress576warnings in selected modules.577578 ┌─ src/yamerl_node_binary.erl:579 │580 72 │ case catch base64:decode(Text) of581 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.582Compile directive 'nowarn_deprecated_catch' can be used to suppress583warnings in selected modules.584585586/work/proj/deps_rpi4/yamerl/src/yamerl_constr.erl:801:5: Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.587Compile directive 'nowarn_deprecated_catch' can be used to suppress588warnings in selected modules.589% 801| catch Mod:module_info(),590% | ^591592 ┌─ src/yamerl_constr.erl:593 │594 801 │ catch Mod:module_info(),595 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.596Compile directive 'nowarn_deprecated_catch' can be used to suppress597warnings in selected modules.598599600===> Analyzing applications...601===> Compiling luerl602 ┌─ src/luerl_lib_string.erl:603 │604 483 │ case catch seq(Cs0, 0, 1, []) of605 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.606Compile directive 'nowarn_deprecated_catch' can be used to suppress607warnings in selected modules.608609610 ┌─ src/luerl_heap.erl:611 │612 137 │ true when I >= 1 -> {D,array:set(I, V, A)};613 │ ╰── Warning: variable 'I' exported from '==' (line 136, column 39).614Exporting bindings from subexpressions other than block expressions is615deprecated and may yield an error in a future version of Erlang/OTP.616Please move the binding of 'I' out of the '=='.617Compile directive 'nowarn_export_var_subexpr' can be used to suppress618warnings in selected modules.619620 ┌─ src/luerl_heap.erl:621 │622 211 │ true when I >= 1 -> set_table_key_int(Tref, Key, I, Val, St);623 │ ╰── Warning: variable 'I' exported from '==' (line 210, column 24).624Exporting bindings from subexpressions other than block expressions is625deprecated and may yield an error in a future version of Erlang/OTP.626Please move the binding of 'I' out of the '=='.627Compile directive 'nowarn_export_var_subexpr' can be used to suppress628warnings in selected modules.629630 ┌─ src/luerl_heap.erl:631 │632 293 │ true when I >= 1 -> get_table_key_int(Tref, Key, I, St);633 │ ╰── Warning: variable 'I' exported from '==' (line 292, column 24).634Exporting bindings from subexpressions other than block expressions is635deprecated and may yield an error in a future version of Erlang/OTP.636Please move the binding of 'I' out of the '=='.637Compile directive 'nowarn_export_var_subexpr' can be used to suppress638warnings in selected modules.639640 ┌─ src/luerl_heap.erl:641 │642 348 │ true when I >= 1 ->643 │ ╰── Warning: variable 'I' exported from '==' (line 347, column 24).644Exporting bindings from subexpressions other than block expressions is645deprecated and may yield an error in a future version of Erlang/OTP.646Please move the binding of 'I' out of the '=='.647Compile directive 'nowarn_export_var_subexpr' can be used to suppress648warnings in selected modules.649650 ┌─ src/luerl_heap.erl:651 │652 374 │ true when I >= 1 ->653 │ ╰── Warning: variable 'I' exported from '==' (line 373, column 31).654Exporting bindings from subexpressions other than block expressions is655deprecated and may yield an error in a future version of Erlang/OTP.656Please move the binding of 'I' out of the '=='.657Compile directive 'nowarn_export_var_subexpr' can be used to suppress658warnings in selected modules.659660661../../../Users/rv/luerl/luerl/src/luerl_scan.xrl:171:10: Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.662Compile directive 'nowarn_deprecated_catch' can be used to suppress663warnings in selected modules.664665 ┌─ src/luerl_lib_basic.erl:666 │667 164 │ true when I >= 1 ->668 │ ╰── Warning: variable 'I' exported from '==' (line 163, column 25).669Exporting bindings from subexpressions other than block expressions is670deprecated and may yield an error in a future version of Erlang/OTP.671Please move the binding of 'I' out of the '=='.672Compile directive 'nowarn_export_var_subexpr' can be used to suppress673warnings in selected modules.674675676 ┌─ src/luerl_lib.erl:677 │678 243 │ case catch begin [N1] = string:tokens(N0, [9,10,11,12,13,32,160]),679 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.680Compile directive 'nowarn_deprecated_catch' can be used to suppress681warnings in selected modules.682683684===> Analyzing applications...685===> Compiling fuse686===> Analyzing applications...687===> Compiling ranch688==> abacus689Compiling 3 files (.erl)690Compiling 5 files (.ex)691 warning: the following clause is redundant:692693 def typeof(b) when is_boolean(b)694695 it has type:696697 dynamic(boolean())698699 previous clauses have already matched on the following types:700701 atom()702 binary()703 integer()704 float()705706 │707 31 │ def typeof(b) when is_boolean(b), do: :boolean708 │ ~709 │710 └─ lib/runtime/helpers.ex:31:7: Abacus.Runtime.Helpers.typeof/1711712 warning: Abacus.parse/1 is undefined or private713 │714 36 │ Abacus.parse(without_parantheses),715 │ ~716 │717 └─ lib/format.ex:36:14: Abacus.Format.format/1718 └─ lib/format.ex:37:14: Abacus.Format.format/1719 └─ lib/format.ex:38:14: Abacus.Format.format/1720 └─ lib/format.ex:39:14: Abacus.Format.format/1721 └─ lib/format.ex:64:14: Abacus.Format.format/1722 └─ lib/format.ex:65:14: Abacus.Format.format/1723 └─ lib/format.ex:81:14: Abacus.Format.format/1724 └─ lib/format.ex:82:14: Abacus.Format.format/1725 └─ lib/format.ex:100:28: Abacus.Format.format/1726727Generated abacus app728==> tablet729Compiling 2 files (.ex)730Generated tablet app731==> server_sent_events732Compiling 2 files (.ex)733Generated server_sent_events app734==> private735Compiling 1 file (.ex)736Generated private app737==> elixir_make738Compiling 8 files (.ex)739Generated elixir_make app740==> nerves_logging741 CC kmsg_tailer.o742 LD kmsg_tailer743Compiling 5 files (.ex)744Generated nerves_logging app745==> castore746Compiling 1 file (.ex)747Generated castore app748==> mint749Compiling 1 file (.erl)750Compiling 21 files (.ex)751Generated mint app752==> mint_web_socket753Compiling 7 files (.ex)754Generated mint_web_socket app755==> nerves_compatibility_test756===> Analyzing applications...757===> Compiling cowlib758==> sourceror759Compiling 20 files (.ex)760Generated sourceror app761==> nerves_discovery762Compiling 5 files (.ex)763Generated nerves_discovery app764==> ring_logger765Compiling 7 files (.ex)766Generated ring_logger app767==> json_spec768Compiling 2 files (.ex)769Generated json_spec app770==> nerves_compatibility_test771===> Analyzing applications...772===> Compiling poolboy773==> decimal774Compiling 4 files (.ex)775Generated decimal app776==> jason777Compiling 10 files (.ex)778Generated jason app779==> ex_ast780Compiling 36 files (.ex)781Generated ex_ast app782==> json_codec783Compiling 6 files (.ex)784Generated json_codec app785==> yaml_elixir786Compiling 6 files (.ex)787Generated yaml_elixir app788==> interactive_cmd789Compiling 1 file (.ex)790Generated interactive_cmd app791==> nerves792Compiling 65 files (.ex)793 warning: redefining module Mix.Tasks.Nerves.Init (current version loaded from /work/proj/_build/rpi4/lib/nerves/ebin/Elixir.Mix.Tasks.Nerves.Init.beam)794 │795 6 │ defmodule Mix.Tasks.Nerves.Init do796 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~797 │798 └─ lib/mix/tasks/nerves.init.ex:6: Mix.Tasks.Nerves.Init (module)799800 warning: redefining module Nerves (current version loaded from /work/proj/_build/rpi4/lib/nerves/ebin/Elixir.Nerves.beam)801 │802 6 │ defmodule Nerves do803 │ ~~~~~~~~~~~~~~~~~~~804 │805 └─ lib/nerves.ex:6: Nerves (module)806807 warning: redefining module Nerves.ArtifactResolver (current version loaded from /work/proj/_build/rpi4/lib/nerves/ebin/Elixir.Nerves.ArtifactResolver.beam)808 │809 5 │ defmodule Nerves.ArtifactResolver do810 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~811 │812 └─ lib/nerves/artifact_resolver.ex:5: Nerves.ArtifactResolver (module)813814 warning: redefining module Nerves.BuildAction.AppModes (current version loaded from /work/proj/_build/rpi4/lib/nerves/ebin/Elixir.Nerves.BuildAction.AppModes.beam)815 │816 6 │ defmodule Nerves.BuildAction.AppModes do817 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~818 │819 └─ lib/nerves/build_action/app_modes.ex:6: Nerves.BuildAction.AppModes (module)820821 warning: redefining module Nerves.BuildAction.CheckExecutables (current version loaded from /work/proj/_build/rpi4/lib/nerves/ebin/Elixir.Nerves.BuildAction.CheckExecutables.beam)822 │823 5 │ defmodule Nerves.BuildAction.CheckExecutables do824 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~825 │826 └─ lib/nerves/build_action/check_executables.ex:5: Nerves.BuildAction.CheckExecutables (module)827828 warning: redefining module Nerves.BuildAction.Erlinit (current version loaded from /work/proj/_build/rpi4/lib/nerves/ebin/Elixir.Nerves.BuildAction.Erlinit.beam)829 │830 8 │ defmodule Nerves.BuildAction.Erlinit do831 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~832 │833 └─ lib/nerves/build_action/erlinit.ex:8: Nerves.BuildAction.Erlinit (module)834835 warning: redefining module Nerves.BuildAction.Firmware (current version loaded from /work/proj/_build/rpi4/lib/nerves/ebin/Elixir.Nerves.BuildAction.Firmware.beam)836 │837 5 │ defmodule Nerves.BuildAction.Firmware do838 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~839 │840 └─ lib/nerves/build_action/firmware.ex:5: Nerves.BuildAction.Firmware (module)841842 warning: redefining module Nerves.BuildAction.IExStartupCheck (current version loaded from /work/proj/_build/rpi4/lib/nerves/ebin/Elixir.Nerves.BuildAction.IExStartupCheck.beam)843 │844 7 │ defmodule Nerves.BuildAction.IExStartupCheck do845 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~846 │847 └─ lib/nerves/build_action/iex_startup_check.ex:7: Nerves.BuildAction.IExStartupCheck (module)848849 warning: redefining module Nerves.BuildAction.NervesV1System (current version loaded from /work/proj/_build/rpi4/lib/nerves/ebin/Elixir.Nerves.BuildAction.NervesV1System.beam)850 │851 5 │ defmodule Nerves.BuildAction.NervesV1System do852 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~853 │854 └─ lib/nerves/build_action/nerves_v1_system.ex:5: Nerves.BuildAction.NervesV1System (module)855856 warning: redefining module Nerves.BuildAction.NervesV1Toolchain (current version loaded from /work/proj/_build/rpi4/lib/nerves/ebin/Elixir.Nerves.BuildAction.NervesV1Toolchain.beam)857 │858 5 │ defmodule Nerves.BuildAction.NervesV1Toolchain do859 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~860 │861 └─ lib/nerves/build_action/nerves_v1_toolchain.ex:5: Nerves.BuildAction.NervesV1Toolchain (module)862863 warning: redefining module Nerves.BuildAction.Rootfs (current version loaded from /work/proj/_build/rpi4/lib/nerves/ebin/Elixir.Nerves.BuildAction.Rootfs.beam)864 │865 5 │ defmodule Nerves.BuildAction.Rootfs do866 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~867 │868 └─ lib/nerves/build_action/rootfs.ex:5: Nerves.BuildAction.Rootfs (module)869870 warning: redefining module Nerves.BuildAction.SortApps (current version loaded from /work/proj/_build/rpi4/lib/nerves/ebin/Elixir.Nerves.BuildAction.SortApps.beam)871 │872 6 │ defmodule Nerves.BuildAction.SortApps do873 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~874 │875 └─ lib/nerves/build_action/sort_apps.ex:6: Nerves.BuildAction.SortApps (module)876877 warning: redefining module Nerves.BuildAction.StripAll (current version loaded from /work/proj/_build/rpi4/lib/nerves/ebin/Elixir.Nerves.BuildAction.StripAll.beam)878 │879 5 │ defmodule Nerves.BuildAction.StripAll do880 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~881 │882 └─ lib/nerves/build_action/strip_all.ex:5: Nerves.BuildAction.StripAll (module)883884 warning: redefining module Nerves.BuildAction.Trimmer (current version loaded from /work/proj/_build/rpi4/lib/nerves/ebin/Elixir.Nerves.BuildAction.Trimmer.beam)885 │886 5 │ defmodule Nerves.BuildAction.Trimmer do887 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~888 │889 └─ lib/nerves/build_action/trimmer.ex:5: Nerves.BuildAction.Trimmer (module)890891 warning: redefining module Nerves.BuildPlan (current version loaded from /work/proj/_build/rpi4/lib/nerves/ebin/Elixir.Nerves.BuildPlan.beam)892 │893 5 │ defmodule Nerves.BuildPlan do894 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~895 │896 └─ lib/nerves/build_plan.ex:5: Nerves.BuildPlan (module)897898 warning: redefining module Nerves.BuildPlan.Checks (current version loaded from /work/proj/_build/rpi4/lib/nerves/ebin/Elixir.Nerves.BuildPlan.Checks.beam)899 │900 5 │ defmodule Nerves.BuildPlan.Checks do901 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~902 │903 └─ lib/nerves/build_plan/checks.ex:5: Nerves.BuildPlan.Checks (module)904905 warning: redefining module Nerves.Container (current version loaded from /work/proj/_build/rpi4/lib/nerves/ebin/Elixir.Nerves.Container.beam)906 │907 6 │ defmodule Nerves.Container do908 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~909 │910 └─ lib/nerves/container.ex:6: Nerves.Container (module)911912 warning: redefining module Nerves.Fingerprint (current version loaded from /work/proj/_build/rpi4/lib/nerves/ebin/Elixir.Nerves.Fingerprint.beam)913 │914 5 │ defmodule Nerves.Fingerprint do915 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~916 │917 └─ lib/nerves/fingerprint.ex:5: Nerves.Fingerprint (module)918919 warning: redefining module Nerves.MixPackage (current version loaded from /work/proj/_build/rpi4/lib/nerves/ebin/Elixir.Nerves.MixPackage.beam)920 │921 5 │ defmodule Nerves.MixPackage do922 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~923 │924 └─ lib/nerves/mix_package.ex:5: Nerves.MixPackage (module)925926 warning: redefining module Nerves.Paths (current version loaded from /work/proj/_build/rpi4/lib/nerves/ebin/Elixir.Nerves.Paths.beam)927 │928 5 │ defmodule Nerves.Paths do929 │ ~~~~~~~~~~~~~~~~~~~~~~~~~930 │931 └─ lib/nerves/paths.ex:5: Nerves.Paths (module)932933 warning: redefining module Nerves.TargetTuple (current version loaded from /work/proj/_build/rpi4/lib/nerves/ebin/Elixir.Nerves.TargetTuple.beam)934 │935 5 │ defmodule Nerves.TargetTuple do936 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~937 │938 └─ lib/nerves/target_tuple.ex:5: Nerves.TargetTuple (module)939940Generated nerves app941==> nerves_toolchain_aarch64_nerves_linux_gnu942Compiling 1 file (.ex)943Generated nerves_toolchain_aarch64_nerves_linux_gnu app944==> nerves_system_rpi4945Generated nerves_system_rpi4 app946==> nerves_compatibility_test947===> Analyzing applications...948===> Compiling idna949==> libgraph950Compiling 15 files (.ex)951Generated libgraph app952==> boxart953Compiling 24 files (.ex)954Generated boxart app955==> nimble_parsec956Compiling 4 files (.ex)957Generated nimble_parsec app958==> time_zone_info959Compiling 29 files (.ex)960Generated time_zone_info app961==> nerves_compatibility_test962===> Analyzing applications...963===> Compiling telemetry964==> websockex965Compiling 6 files (.ex)966 warning: the variable "size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator967 │968 109 │ <<payload::bytes-size(size), rest::bitstring>> = remaining969 │ ~970 │971 └─ lib/websockex/frame.ex:109:27: WebSockex.Frame.parse_frame/1972973 warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator974 │975 125 │ <<payload::bytes-size(len), rest::bitstring>> = remaining976 │ ~977 │978 └─ lib/websockex/frame.ex:125:29: WebSockex.Frame.parse_frame/1979980 warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator981 │982 125 │ <<payload::bytes-size(len), rest::bitstring>> = remaining983 │ ~984 │985 └─ lib/websockex/frame.ex:125:29: WebSockex.Frame.parse_frame/1986987 warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator988 │989 145 │ <<payload::bytes-size(len), rest::bitstring>> = remaining990 │ ~991 │992 └─ lib/websockex/frame.ex:145:27: WebSockex.Frame.parse_frame/1993994 warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator995 │996 150 │ <<payload::bytes-size(len), rest::bitstring>> = remaining997 │ ~998 │999 └─ lib/websockex/frame.ex:150:27: WebSockex.Frame.parse_frame/110001001 warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1002 │1003 155 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1004 │ ~1005 │1006 └─ lib/websockex/frame.ex:155:27: WebSockex.Frame.parse_frame/110071008 warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1009 │1010 164 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1011 │ ~1012 │1013 └─ lib/websockex/frame.ex:164:29: WebSockex.Frame.parse_frame/110141015 warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1016 │1017 171 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1018 │ ~1019 │1020 └─ lib/websockex/frame.ex:171:29: WebSockex.Frame.parse_frame/110211022 warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1023 │1024 176 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1025 │ ~1026 │1027 └─ lib/websockex/frame.ex:176:29: WebSockex.Frame.parse_frame/110281029 warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1030 │1031 164 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1032 │ ~1033 │1034 └─ lib/websockex/frame.ex:164:29: WebSockex.Frame.parse_frame/110351036 warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1037 │1038 171 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1039 │ ~1040 │1041 └─ lib/websockex/frame.ex:171:29: WebSockex.Frame.parse_frame/110421043 warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1044 │1045 176 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1046 │ ~1047 │1048 └─ lib/websockex/frame.ex:176:29: WebSockex.Frame.parse_frame/110491050 warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1051 │1052 183 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1053 │ ~1054 │1055 └─ lib/websockex/frame.ex:183:27: WebSockex.Frame.parse_frame/110561057 warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1058 │1059 188 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1060 │ ~1061 │1062 └─ lib/websockex/frame.ex:188:27: WebSockex.Frame.parse_frame/110631064 warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1065 │1066 193 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1067 │ ~1068 │1069 └─ lib/websockex/frame.ex:193:27: WebSockex.Frame.parse_frame/110701071 warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1072 │1073 199 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1074 │ ~1075 │1076 └─ lib/websockex/frame.ex:199:27: WebSockex.Frame.parse_frame/110771078 warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1079 │1080 204 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1081 │ ~1082 │1083 └─ lib/websockex/frame.ex:204:27: WebSockex.Frame.parse_frame/110841085 warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1086 │1087 209 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1088 │ ~1089 │1090 └─ lib/websockex/frame.ex:209:27: WebSockex.Frame.parse_frame/110911092 warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1093 │1094 358 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1095 │ ~1096 │1097 └─ lib/websockex/frame.ex:358:27: WebSockex.Frame.parse_text_payload/310981099Generated websockex app1100==> telemetry_metrics1101Compiling 7 files (.ex)1102Generated telemetry_metrics app1103==> ecto1104Compiling 56 files (.ex)1105Generated ecto app1106==> uniq1107Compiling 5 files (.ex)1108 warning: the variable "clock_hi_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1109 │1110 547 │ <<clock_hi::bits(clock_hi_size), clock_lo::bits(8), node::bits(48)>> <-1111 │ ~1112 │1113 └─ lib/uuid.ex:547:29: Uniq.UUID.parse_raw/511141115 warning: the variable "clock_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1116 │1117 549 │ <<clock::uint(clock_size)>> <-1118 │ ~1119 │1120 └─ lib/uuid.ex:549:26: Uniq.UUID.parse_raw/511211122 warning: the variable "clock_hi_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1123 │1124 547 │ <<clock_hi::bits(clock_hi_size), clock_lo::bits(8), node::bits(48)>> <-1125 │ ~1126 │1127 └─ lib/uuid.ex:547:29: Uniq.UUID.parse_raw/511281129 warning: the variable "clock_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1130 │1131 549 │ <<clock::uint(clock_size)>> <-1132 │ ~1133 │1134 └─ lib/uuid.ex:549:26: Uniq.UUID.parse_raw/511351136 warning: the variable "clock_hi_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1137 │1138 547 │ <<clock_hi::bits(clock_hi_size), clock_lo::bits(8), node::bits(48)>> <-1139 │ ~1140 │1141 └─ lib/uuid.ex:547:29: Uniq.UUID.parse_raw/511421143 warning: the variable "clock_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1144 │1145 549 │ <<clock::uint(clock_size)>> <-1146 │ ~1147 │1148 └─ lib/uuid.ex:549:26: Uniq.UUID.parse_raw/511491150 warning: the variable "clock_hi_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1151 │1152 547 │ <<clock_hi::bits(clock_hi_size), clock_lo::bits(8), node::bits(48)>> <-1153 │ ~1154 │1155 └─ lib/uuid.ex:547:29: Uniq.UUID.parse_raw/511561157 warning: the variable "clock_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1158 │1159 549 │ <<clock::uint(clock_size)>> <-1160 │ ~1161 │1162 └─ lib/uuid.ex:549:26: Uniq.UUID.parse_raw/511631164Generated uniq app1165==> crontab1166Compiling 7 files (.ex)1167 warning: this clause of defp get_interval_value/2 is never used (or it will always fail/warn when invoked)1168 │1169 255 │ defp get_interval_value(:ambiguity_opts, %{ambiguity_opts: ambiguity_opts}), do: ambiguity_opts1170 │ ~1171 │1172 └─ lib/crontab/date_checker.ex:255:8: Crontab.DateChecker.get_interval_value/211731174Generated crontab app1175==> db_connection1176Compiling 18 files (.ex)1177Generated db_connection app1178==> ecto_sql1179Compiling 25 files (.ex)1180Generated ecto_sql app1181==> fsmx1182Compiling 3 files (.ex)1183Generated fsmx app1184==> nerves_compatibility_test1185===> Analyzing applications...1186===> Compiling cowboy1187==> phoenix_html1188Compiling 6 files (.ex)1189Generated phoenix_html app1190==> zoi1191Compiling 84 files (.ex)1192Generated zoi app1193==> phoenix_template1194Compiling 4 files (.ex)1195Generated phoenix_template app1196==> abnf_parsec1197Compiling 4 files (.ex)1198Generated abnf_parsec app1199==> texture1200Compiling 7 files (.ex)1201Generated texture app1202==> phoenix_pubsub1203Compiling 12 files (.ex)1204Generated phoenix_pubsub app1205==> rustler_precompiled1206Compiling 4 files (.ex)1207Generated rustler_precompiled app1208==> oxc1209Compiling 17 files (.ex)1210121122:33:01.772 [debug] Copying NIF from cache and extracting to /work/proj/_build/rpi4/lib/oxc/priv/native/liboxc_fmt_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so1212121322:33:02.162 [debug] Copying NIF from cache and extracting to /work/proj/_build/rpi4/lib/oxc/priv/native/liboxc_lint_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so1214121522:33:02.892 [debug] Copying NIF from cache and extracting to /work/proj/_build/rpi4/lib/oxc/priv/native/liboxc_ex_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so1216Generated oxc app1217==> oxide_ex1218Compiling 2 files (.ex)1219122022:33:03.501 [debug] Copying NIF from cache and extracting to /work/proj/_build/rpi4/lib/oxide_ex/priv/native/liboxide_ex_nif-v0.2.2-nif-2.15-aarch64-unknown-linux-gnu.so1221Generated oxide_ex app1222==> vize1223Compiling 11 files (.ex)1224122522:33:04.362 [debug] Copying NIF from cache and extracting to /work/proj/_build/rpi4/lib/vize/priv/native/libvize_ex_nif-v0.13.1-nif-2.15-aarch64-unknown-linux-gnu.so1226Generated vize app1227==> mdex_native1228Compiling 9 files (.ex)1229123022:33:04.961 [debug] Copying NIF from cache and extracting to /work/proj/_build/rpi4/lib/mdex_native/priv/native/libmdex_native_nif-v0.2.11-nif-2.15-aarch64-unknown-linux-gnu.so1231Generated mdex_native app1232==> splode1233Compiling 5 files (.ex)1234Generated splode app1235==> jido_signal1236Compiling 67 files (.ex)1237123822:33:10.012 [debug] Extension registry unavailable queued module=Jido.Signal.Ext.Dispatch1239124022:33:11.998 [debug] Extension registry unavailable queued module=Jido.Signal.Ext.Trace1241 warning: :public_key.cacerts_get/0 is undefined (module :public_key is not available or is yet to be defined)1242 │1243 442 │ cacerts: :public_key.cacerts_get(),1244 │ ~1245 │1246 └─ lib/jido_signal/dispatch/http.ex:442:28: Jido.Signal.Dispatch.Http.default_ssl_options/012471248 warning: :public_key.pkix_verify_hostname_match_fun/1 is undefined (module :public_key is not available or is yet to be defined)1249 │1250 444 │ match_fun: :public_key.pkix_verify_hostname_match_fun(:https)1251 │ ~1252 │1253 └─ lib/jido_signal/dispatch/http.ex:444:32: Jido.Signal.Dispatch.Http.default_ssl_options/012541255Generated jido_signal app1256==> jsv1257Compiling 75 files (.ex)1258Generated jsv app1259==> glob_ex1260Compiling 4 files (.ex)1261Generated glob_ex app1262==> lua1263Compiling 7 files (.ex)1264 warning: this clause of defp format_error/2 is never used (or it will always fail/warn when invoked)1265 │1266 177 │ defp format_error(_, {:undefined, args}) do1267 │ ~1268 │1269 └─ lib/lua/util.ex:177:8: Lua.Util.format_error/212701271Generated lua app1272==> plug1273Compiling 1 file (.erl)1274Compiling 42 files (.ex)1275Generated plug app1276==> dotenvy1277Compiling 3 files (.ex)1278Generated dotenvy app1279==> uboot_env1280Compiling 5 files (.ex)1281Generated uboot_env app1282==> nimble_pool1283Compiling 2 files (.ex)1284Generated nimble_pool app1285==> finch1286Compiling 22 files (.ex)1287Generated finch app1288warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"1289 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/21290 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/11291 (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/51292 (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/21293 (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/41294 (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/212951296==> req1297Compiling 19 files (.ex)1298Generated req app1299==> llm_db1300Compiling 65 files (.ex)1301Generated llm_db app1302==> req_llm1303Compiling 219 files (.ex)1304Compiling lib/mix/tasks/gen.ex (it's taking more than 10s)1305Compiling lib/req_llm/open_telemetry/content.ex (it's taking more than 10s)1306Compiling lib/req_llm/context.ex (it's taking more than 10s)1307Compiling lib/req_llm/response.ex (it's taking more than 10s)1308Compiling lib/req_llm/providers/zai/shared.ex (it's taking more than 10s)1309Compiling lib/req_llm/providers/anthropic/context.ex (it's taking more than 10s)1310Compiling lib/req_llm/providers/amazon_bedrock/converse.ex (it's taking more than 10s)1311Compiling lib/req_llm/output/validation.ex (it's taking more than 10s)1312Generated req_llm app1313==> iconify1314Compiling 5 files (.ex)1315Generated iconify app1316==> jido_action1317Compiling 39 files (.ex)1318 warning: the following clause cannot match because the previous clauses already matched all possible values:13191320 _ ->13211322 it attempts to match on the result of:13231324 Map.has_key?(message, :message) and is_binary(message.message)13251326 which has the already matched type:13271328 dynamic(false)13291330 type warning found at:1331 │1332 147 │ if Map.has_key?(message, :message) and is_binary(message.message) do1333 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1334 │1335 └─ lib/jido_action/exec/telemetry.ex:147: Jido.Exec.Telemetry.extract_safe_error_message/113361337Generated jido_action app1338==> jido1339Compiling 126 files (.ex)1340Generated jido app1341==> jido_ai1342Compiling 170 files (.ex)1343Compiling lib/jido_ai/directive/helpers.ex (it's taking more than 10s)1344Compiling lib/jido_ai/actions/tool_calling/call_with_tools.ex (it's taking more than 10s)1345Compiling lib/jido_ai/actions/skill/load_skill.ex (it's taking more than 10s)1346Generated jido_ai app1347==> cc_precompiler1348Compiling 3 files (.ex)1349Generated cc_precompiler app1350==> exqlite1351Compiling 12 files (.ex)1352Generated exqlite app1353==> ecto_sqlite31354Compiling 5 files (.ex)1355Generated ecto_sqlite3 app1356==> property_table1357Compiling 8 files (.ex)1358Generated property_table app1359==> nerves_uevent1360 CC uevent.o1361 LD uevent1362Compiling 5 files (.ex)1363Generated nerves_uevent app1364==> nerves_runtime1365Compiling 14 files (.ex)1366Generated nerves_runtime app1367==> toolshed1368Compiling 5 files (.ex)1369Generated toolshed app1370==> zigler_precompiled1371Compiling 5 files (.ex)1372Generated zigler_precompiled app1373==> nerves_compatibility_test1374===> Analyzing applications...1375===> Compiling cowboy_telemetry1376==> plug_cowboy1377Compiling 5 files (.ex)1378Generated plug_cowboy app1379==> websock1380Compiling 1 file (.ex)1381Generated websock app1382==> websock_adapter1383Compiling 4 files (.ex)1384Generated websock_adapter app1385==> phoenix1386Compiling 75 files (.ex)1387Generated phoenix app1388==> phoenix_live_view1389Compiling 55 files (.ex)1390Generated phoenix_live_view app1391==> ghostty1392Compiling 19 files (.ex)1393139422:36:20.078 [debug] Using cached NIF: /home/nerves/.cache/zigler_precompiled/zigler_precompiled/ghostty-0.4.9/Elixir.Ghostty.PTY.Nif-v0.4.9-aarch64-linux-gnu.so.tar.gz1395139622:36:20.724 [debug] Using cached NIF: /home/nerves/.cache/zigler_precompiled/zigler_precompiled/ghostty-0.4.9/Elixir.Ghostty.Terminal.Nif-v0.4.9-aarch64-linux-gnu.so.tar.gz1397Generated ghostty app1398could not compile dependency :ghostty, "mix compile" failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile ghostty --force", update it with "mix deps.update ghostty" or clean it with "mix deps.clean ghostty"1399140022:36:21.636 [warning] The on_load function for module Elixir.OXC.Native returned:1401{:error,1402 {:load_failed,1403 ~c"Failed to load NIF library: '/work/proj/_build/rpi4/lib/oxc/priv/native/liboxc_ex_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so: cannot open shared object file: No such file or directory'"}}14041405140622:36:21.724 [warning] The on_load function for module Elixir.OXC.Native returned:1407{:error,1408 {:load_failed,1409 ~c"Failed to load NIF library: '/work/proj/_build/rpi4/lib/oxc/priv/native/liboxc_ex_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so: cannot open shared object file: No such file or directory'"}}14101411** (UndefinedFunctionError) function OXC.Native.bundle/2 is undefined (module OXC.Native is not available)1412 (oxc 0.17.8) OXC.Native.bundle([{"cursor.ts", "import { applyCellTextStyles } from './render'\nimport { rgb } from './util'\n\nimport type { Cell, CellMetrics, CursorState } from './types'\n\nexport function cursorVisible(cursor: CursorState | null, blinkVisible: boolean): boolean {\n return Boolean(cursor && cursor.visible && cursor.x !== null && cursor.y !== null && blinkVisible)\n}\n\nexport function cursorDisplayStyle(style: string, focused: boolean): string {\n if (!focused && style === 'block') {\n return 'block_hollow'\n }\n return style\n}\n\nexport function cursorCell(cursor: CursorState, rowsData: Cell[][]): Cell | null {\n if (cursor.y === null || cursor.x === null) return null\n\n const row = rowsData[cursor.y]\n if (!row) return null\n\n if (cursor.wide_tail && cursor.x > 0) {\n return row[cursor.x - 1] ?? null\n }\n\n return row[cursor.x] ?? null\n}\n\nexport function cursorChar(cell: Cell | null): string {\n return cell?.[0] || ' '\n}\n\nexport function cursorColor(cursor: CursorState, pre: HTMLPreElement): string {\n if (cursor.color) {\n return rgb(cursor.color)\n }\n return window.getComputedStyle(pre).color || '#cdd6f4'\n}\n\nexport function cursorTextColor(cell: Cell | null, pre: HTMLPreElement): string {\n if (cell?.[2]) {\n return rgb(cell[2])\n }\n return window.getComputedStyle(pre).backgroundColor || '#1e1e2e'\n}\n\nexport function renderCursor(\n cursorEl: HTMLDivElement,\n cursorTextEl: HTMLSpanElement,\n cursor: CursorState | null,\n rowsData: Cell[][],\n focused: boolean,\n blinkVisible: boolean,\n metrics: CellMetrics,\n pre: HTMLPreElement,\n input: HTMLTextAreaElement\n): void {\n if (!cursorVisible(cursor, blinkVisible)) {\n cursorEl.style.display = 'none'\n syncInputPosition(input, null)\n return\n }\n\n const c = cursor as CursorState\n const cx = c.x as number\n const cy = c.y as number\n let leftCol = cx\n let widthCols = 1\n\n if (c.wide_tail && cx > 0) {\n leftCol -= 1\n widthCols = 2\n }\n\n const left = metrics.paddingLeft + leftCol * metrics.width\n const top = metrics.paddingTop + cy * metrics.height\n const width = metrics.width * widthCols\n const height = metrics.height\n const style = cursorDisplayStyle(c.style, focused)\n const color = cursorColor(c, pre)\n\n syncInputPosition(input, { left, top, height })\n\n cursorEl.style.display = 'block'\n cursorEl.style.left = `${left}px`\n cursorEl.style.top = `${top}px`\n cursorEl.style.width = `${width}px`\n cursorEl.style.height = `${height}px`\n cursorEl.style.opacity = focused ? '1' : '0.85'\n\n cursorTextEl.textContent = ''\n cursorTextEl.style.color = ''\n cursorTextEl.style.backgroundColor = 'transparent'\n cursorTextEl.style.fontWeight = ''\n cursorTextEl.style.fontStyle = ''\n cursorTextEl.style.opacity = '1'\n cursorTextEl.style.textDecoration = 'none'\n\n cursorEl.style.backgroundColor = 'transparent'\n cursorEl.style.border = 'none'\n cursorEl.style.borderBottom = 'none'\n cursorEl.style.borderLeft = 'none'\n\n if (style === 'block') {\n const cell = cursorCell(c, rowsData)\n cursorEl.style.backgroundColor = color\n cursorTextEl.textContent = cursorChar(cell)\n cursorTextEl.style.color = cursorTextColor(cell, pre)\n applyCellTextStyles(cursorTextEl, cell)\n return\n }\n\n if (style === 'underline') {\n cursorEl.style.borderBottom = `2px solid ${color}`\n return\n }\n\n if (style === 'bar') {\n const barWidth = Math.max(2, Math.round(metrics.width * 0.15))\n cursorEl.style.width = `${barWidth}px`\n cursorEl.style.backgroundColor = color\n return\n }\n\n cursorEl.style.border = `1px solid ${color}`\n}\n\nfunction syncInputPosition(\n input: HTMLTextAreaElement,\n position: { left: number; top: number; height: number } | null\n): void {\n if (!position) {\n input.style.left = '0'\n input.style.top = '0'\n return\n }\n\n input.style.left = `${position.left}px`\n input.style.top = `${position.top}px`\n input.style.height = `${position.height}px`\n}\n"}, {"dom.ts", "export function createScreen(): HTMLDivElement {\n const screen = document.createElement('div')\n screen.style.position = 'relative'\n screen.style.display = 'block'\n screen.style.width = '100%'\n return screen\n}\n\nexport function createPre(): HTMLPreElement {\n const pre = document.createElement('pre')\n pre.style.margin = '0'\n pre.style.padding = '8px'\n pre.style.backgroundColor = '#1e1e2e'\n pre.style.color = '#cdd6f4'\n pre.style.overflow = 'hidden'\n pre.style.position = 'relative'\n pre.style.width = '100%'\n pre.style.boxSizing = 'border-box'\n pre.style.userSelect = 'none'\n pre.style.webkitUserSelect = 'none'\n pre.style.cursor = 'text'\n return pre\n}\n\nexport function createSelectionLayer(): HTMLDivElement {\n const layer = document.createElement('div')\n layer.setAttribute('aria-hidden', 'true')\n layer.setAttribute('data-ghostty-selection-layer', 'true')\n layer.style.position = 'absolute'\n layer.style.inset = '0'\n layer.style.pointerEvents = 'none'\n layer.style.zIndex = '0'\n return layer\n}\n\nexport function createMeasure(): HTMLSpanElement {\n const span = document.createElement('span')\n span.textContent = 'MMMMMMMMMM'\n span.setAttribute('aria-hidden', 'true')\n span.style.position = 'absolute'\n span.style.visibility = 'hidden'\n span.style.pointerEvents = 'none'\n span.style.whiteSpace = 'pre'\n span.style.font = 'inherit'\n span.style.lineHeight = 'inherit'\n return span\n}\n\nexport function createCursorEl(): { cursorEl: HTMLDivElement; cursorText: HTMLSpanElement } {\n const cursorEl = document.createElement('div')\n cursorEl.setAttribute('aria-hidden', 'true')\n cursorEl.style.position = 'absolute'\n cursorEl.style.display = 'none'\n cursorEl.style.pointerEvents = 'none'\n cursorEl.style.boxSizing = 'border-box'\n cursorEl.style.whiteSpace = 'pre'\n cursorEl.style.zIndex = '1'\n\n const cursorText = document.createElement('span')\n cursorText.style.display = 'block'\n cursorText.style.width = '100%'\n cursorText.style.height = '100%'\n cursorText.style.font = 'inherit'\n cursorText.style.lineHeight = 'inherit'\n cursorEl.appendChild(cursorText)\n\n return { cursorEl, cursorText }\n}\n\nexport function setupInput(input: HTMLTextAreaElement): void {\n input.setAttribute('data-ghostty-input', 'true')\n input.setAttribute('aria-label', 'Terminal input')\n input.setAttribute('autocapitalize', 'off')\n input.setAttribute('autocomplete', 'off')\n input.setAttribute('autocorrect', 'off')\n input.setAttribute('spellcheck', 'false')\n input.style.position = 'absolute'\n input.style.left = '0'\n input.style.top = '0'\n input.style.width = '1px'\n input.style.height = '1em'\n input.style.padding = '0'\n input.style.margin = '0'\n input.style.border = '0'\n input.style.outline = 'none'\n input.style.opacity = '0'\n input.style.resize = 'none'\n input.style.overflow = 'hidden'\n input.style.background = 'transparent'\n input.style.color = 'transparent'\n input.style.caretColor = 'transparent'\n input.style.whiteSpace = 'pre'\n input.style.pointerEvents = 'none'\n input.style.zIndex = '2'\n}\n\nexport function measureCellMetrics(\n pre: HTMLPreElement,\n measure: HTMLSpanElement,\n input: HTMLTextAreaElement,\n cursorEl: HTMLDivElement\n): {\n width: number\n height: number\n paddingLeft: number\n paddingRight: number\n paddingTop: number\n paddingBottom: number\n} {\n const styles = window.getComputedStyle(pre)\n\n measure.style.fontFamily = styles.fontFamily\n measure.style.fontSize = styles.fontSize\n measure.style.fontWeight = styles.fontWeight\n measure.style.fontStyle = styles.fontStyle\n measure.style.lineHeight = styles.lineHeight\n\n input.style.fontFamily = styles.fontFamily\n input.style.fontSize = styles.fontSize\n input.style.lineHeight = styles.lineHeight\n cursorEl.style.fontFamily = styles.fontFamily\n cursorEl.style.fontSize = styles.fontSize\n cursorEl.style.lineHeight = styles.lineHeight\n\n const measureRect = measure.getBoundingClientRect()\n const fontSize = parseFloat(styles.fontSize) || 16\n const lineHeight = parseFloat(styles.lineHeight) || fontSize * 1.2\n const width = measureRect.width > 0 ? measur" <> ...}, {"hook.ts", "import { renderCursor } from './cursor'\nimport {\n createCursorEl,\n createMeasure,\n createPre,\n createScreen,\n createSelectionLayer,\n measureCellMetrics,\n setupInput\n} from './dom'\nimport {\n hasMouseModifiers,\n isCopyShortcut,\n isPasteShortcut,\n mouseButtonName,\n primaryPressedButton\n} from './input'\nimport { renderCells, renderSelection } from './render'\nimport { normalizeSelection, selectedText } from './selection'\nimport { DEFAULT_MOUSE } from './types'\nimport { clamp } from './util'\n\nimport type {\n Cell,\n CellMetrics,\n CellPoint,\n CursorState,\n MouseModes,\n RenderPayload,\n ScrollbarState\n} from './types'\n\ninterface TerminalState {\n cols: number\n rows: number\n fit: boolean\n autofocus: boolean\n rowsData: Cell[][]\n cursor: CursorState | null\n mouse: MouseModes\n scrollbar: ScrollbarState | null\n focusReporting: boolean\n focused: boolean\n composing: boolean\n cursorBlinkVisible: boolean\n cursorBlinkTimer: ReturnType<typeof setInterval> | null\n target: string | null\n resizeObserver: ResizeObserver | null\n pendingFitTimer: ReturnType<typeof setTimeout> | null\n lastFitCols: number | null\n lastFitRows: number | null\n selectionAnchor: CellPoint | null\n selectionFocus: CellPoint | null\n selecting: boolean\n pointerActive: boolean\n autofocusTimers: ReturnType<typeof setTimeout>[]\n readySent: boolean\n autofocusPending: boolean\n\n screen: HTMLDivElement\n pre: HTMLPreElement\n selectionLayer: HTMLDivElement\n measure: HTMLSpanElement\n input: HTMLTextAreaElement\n cursorEl: HTMLDivElement\n cursorText: HTMLSpanElement\n\n onContainerFocus: () => void\n onContainerBlur: () => void\n onPointerDown: (e: MouseEvent) => void\n onPointerMove: (e: MouseEvent) => void\n onPointerUp: (e: MouseEvent) => void\n onDocumentPointerDown: (e: MouseEvent) => void\n onDocumentFocusIn: (e: FocusEvent) => void\n onContextMenu: (e: Event) => void\n onWindowResize: () => void\n onKeydown: (e: KeyboardEvent) => void\n onPaste: (e: ClipboardEvent) => void\n onCopy: (e: ClipboardEvent) => void\n onCompositionStart: () => void\n onCompositionEnd: (e: CompositionEvent) => void\n onInputFocus: () => void\n onInputBlur: () => void\n}\n\n// Phoenix LiveView hook methods\ninterface HookMethods {\n el: HTMLElement\n pushEvent(event: string, payload: object): void\n pushEventTo(target: string, event: string, payload: object): void\n handleEvent(event: string, callback: (payload: never) => void): void\n}\n\ntype Hook = TerminalState & HookMethods\n\nfunction pushHookEvent(hook: Hook, name: string, payload: object): void {\n if (hook.target) {\n hook.pushEventTo(hook.target, name, payload)\n } else {\n hook.pushEvent(name, payload)\n }\n}\n\nfunction metrics(hook: Hook): CellMetrics {\n return measureCellMetrics(hook.pre, hook.measure, hook.input, hook.cursorEl)\n}\n\nfunction isInsideTerminal(hook: Hook, node: Node | null): boolean {\n return Boolean(node && (node === hook.el || node === hook.input || hook.el.contains(node)))\n}\n\nfunction mouseModeActive(hook: Hook): boolean {\n return Boolean(hook.mouse?.tracking)\n}\n\nfunction hasSelection(hook: Hook): boolean {\n return (\n !mouseModeActive(hook) && normalizeSelection(hook.selectionAnchor, hook.selectionFocus) !== null\n )\n}\n\nfunction clearSelection(hook: Hook): void {\n hook.selectionAnchor = null\n hook.selectionFocus = null\n hook.selecting = false\n hook.selectionLayer.innerHTML = ''\n}\n\nfunction focusInput(hook: Hook, force = false): void {\n if (!force && !shouldAutofocus(hook)) {\n return\n }\n if (document.activeElement !== hook.el) {\n hook.el.focus({ preventScroll: true })\n }\n if (document.activeElement !== hook.input) {\n hook.input.focus({ preventScroll: true })\n }\n}\n\nfunction blurTerminal(hook: Hook): void {\n hook.pointerActive = false\n if (document.activeElement === hook.input) {\n hook.input.blur()\n }\n if (document.activeElement === hook.el) {\n hook.el.blur()\n }\n hook.focused = false\n hook.cursorBlinkVisible = true\n syncCursorBlink(hook)\n doRenderCursor(hook)\n}\n\nfunction disableAutofocus(hook: Hook): void {\n hook.autofocusPending = false\n stopAu" <> ...}, {"input.ts", "export function isCopyShortcut(e: KeyboardEvent): boolean {\n return (e.metaKey || e.ctrlKey) && !e.altKey && e.key.toLowerCase() === 'c'\n}\n\nexport function isPasteShortcut(e: KeyboardEvent): boolean {\n return (e.metaKey || e.ctrlKey) && !e.altKey && e.key.toLowerCase() === 'v'\n}\n\nexport function mouseButtonName(button: number): string | null {\n switch (button) {\n case 0:\n return 'left'\n case 1:\n return 'middle'\n case 2:\n return 'right'\n case 3:\n return 'four'\n case 4:\n return 'five'\n default:\n return null\n }\n}\n\nexport function primaryPressedButton(e: MouseEvent): number {\n if (e.buttons & 1) return 0\n if (e.buttons & 4) return 1\n if (e.buttons & 2) return 2\n if (e.buttons & 8) return 3\n if (e.buttons & 16) return 4\n return -1\n}\n\nexport function hasMouseModifiers(e: MouseEvent): boolean {\n return e.shiftKey || e.ctrlKey || e.altKey || e.metaKey\n}\n"}, {"phoenix.d.ts", "interface ViewHook {\n el: HTMLElement\n pushEvent(event: string, payload: object): void\n pushEventTo(target: string, event: string, payload: object): void\n handleEvent(event: string, callback: (payload: never) => void): void\n}\n\ntype ViewHookObject = ThisType<ViewHook> & {\n mounted?(): void\n destroyed?(): void\n}\n"}, {"render.ts", "import { CellFlags } from './types'\nimport { esc, rgb } from './util'\n\nimport type { Cell, CellMetrics, Color, Selection } from './types'\n\nexport function renderCells(pre: HTMLPreElement, rows: Cell[][]): void {\n let html = ''\n for (const row of rows) {\n for (const [char, fg, bg, flags] of row) {\n const styles = cellStyles(fg, bg, flags)\n const ch = char || ' '\n if (styles.length > 0) {\n html += `<span style=\"${styles.join(';')}\">${esc(ch)}</span>`\n } else {\n html += esc(ch)\n }\n }\n html += '\\n'\n }\n pre.innerHTML = html\n}\n\nexport function renderSelection(\n layer: HTMLDivElement,\n selection: Selection | null,\n cols: number,\n metrics: CellMetrics\n): void {\n layer.innerHTML = ''\n\n if (!selection) {\n return\n }\n\n for (let row = selection.start.row; row <= selection.end.row; row += 1) {\n const startCol = row === selection.start.row ? selection.start.col : 0\n const endCol = row === selection.end.row ? selection.end.col : cols - 1\n const rect = document.createElement('div')\n rect.style.position = 'absolute'\n rect.style.left = `${metrics.paddingLeft + startCol * metrics.width}px`\n rect.style.top = `${metrics.paddingTop + row * metrics.height}px`\n rect.style.width = `${Math.max(1, endCol - startCol + 1) * metrics.width}px`\n rect.style.height = `${metrics.height}px`\n rect.style.background = 'rgba(137, 180, 250, 0.35)'\n rect.style.borderRadius = '2px'\n layer.appendChild(rect)\n }\n}\n\nfunction cellStyles(fg: Color | null, bg: Color | null, flags: number): string[] {\n const styles: string[] = []\n const decorations: string[] = []\n\n if (fg) styles.push(`color:${rgb(fg)}`)\n if (bg) styles.push(`background:${rgb(bg)}`)\n if (flags & CellFlags.BOLD) styles.push('font-weight:bold')\n if (flags & CellFlags.ITALIC) styles.push('font-style:italic')\n if (flags & CellFlags.DIM) styles.push('opacity:0.5')\n if (flags & CellFlags.UNDERLINE) decorations.push('underline')\n if (flags & CellFlags.STRIKETHROUGH) decorations.push('line-through')\n if (flags & CellFlags.OVERLINE) decorations.push('overline')\n if (decorations.length > 0) styles.push(`text-decoration:${decorations.join(' ')}`)\n\n return styles\n}\n\nexport function applyCellTextStyles(el: HTMLElement, cell: Cell | null): void {\n if (!cell) return\n\n const [, , , flags] = cell\n const decorations: string[] = []\n\n el.style.fontWeight = flags & CellFlags.BOLD ? 'bold' : ''\n el.style.fontStyle = flags & CellFlags.ITALIC ? 'italic' : ''\n el.style.opacity = flags & CellFlags.DIM ? '0.5' : '1'\n if (flags & CellFlags.UNDERLINE) decorations.push('underline')\n if (flags & CellFlags.STRIKETHROUGH) decorations.push('line-through')\n if (flags & CellFlags.OVERLINE) decorations.push('overline')\n el.style.textDecoration = decorations.length > 0 ? decorations.join(' ') : 'none'\n}\n"}, {"selection.ts", "import type { Cell, CellPoint, Selection } from './types'\n\nexport function normalizeSelection(\n anchor: CellPoint | null,\n focus: CellPoint | null\n): Selection | null {\n if (!anchor || !focus) {\n return null\n }\n\n const start = { ...anchor }\n const end = { ...focus }\n\n if (end.row < start.row || (end.row === start.row && end.col < start.col)) {\n return { start: end, end: start }\n }\n\n if (start.row === end.row && start.col === end.col) {\n return null\n }\n\n return { start, end }\n}\n\nexport function selectedText(\n selection: Selection | null,\n rowsData: Cell[][],\n cols: number\n): string {\n if (!selection) {\n return ''\n }\n\n const lines: string[] = []\n\n for (let row = selection.start.row; row <= selection.end.row; row += 1) {\n const sourceRow = rowsData[row] || []\n const startCol = row === selection.start.row ? selection.start.col : 0\n const endCol = row === selection.end.row ? selection.end.col : cols - 1\n let text = ''\n\n for (let col = startCol; col <= endCol; col += 1) {\n const cell = sourceRow[col]\n text += cell?.[0] || ' '\n }\n\n lines.push(text.trimEnd())\n }\n\n return lines.join('\\n')\n}\n"}, {"types.ts", "export type Color = [number, number, number]\n\nexport type Cell = [string, Color | null, Color | null, number]\n\nexport interface CellPoint {\n col: number\n row: number\n encodeX: number\n encodeY: number\n}\n\nexport interface MouseModes {\n tracking: boolean\n x10: boolean\n normal: boolean\n button: boolean\n any: boolean\n sgr: boolean\n}\n\nexport interface CursorState {\n x: number | null\n y: number | null\n visible: boolean\n blinking: boolean\n style: 'block' | 'bar' | 'underline' | 'block_hollow'\n wide_tail: boolean\n color: Color | null\n}\n\nexport interface ScrollbarState {\n total: number\n offset: number\n len: number\n}\n\nexport interface RenderPayload {\n id: string\n cells: Cell[][]\n cursor: CursorState\n mouse: MouseModes\n scrollbar: ScrollbarState\n focus_reporting: boolean\n}\n\nexport interface CellMetrics {\n width: number\n height: number\n paddingLeft: number\n paddingRight: number\n paddingTop: number\n paddingBottom: number\n}\n\nexport interface Selection {\n start: CellPoint\n end: CellPoint\n}\n\nexport const DEFAULT_MOUSE: MouseModes = {\n tracking: false,\n x10: false,\n normal: false,\n button: false,\n any: false,\n sgr: false\n}\n\nexport const CellFlags = {\n BOLD: 1,\n ITALIC: 2,\n DIM: 4,\n UNDERLINE: 8,\n STRIKETHROUGH: 16,\n OVERLINE: 128\n} as const\n"}, {"util.ts", "import type { Color } from './types'\n\nexport function esc(s: string): string {\n return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')\n}\n\nexport function rgb(color: Color): string {\n return `rgb(${color[0]},${color[1]},${color[2]})`\n}\n\nexport function clamp(value: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, value))\n}\n"}], %{entry: "hook.ts", exports: "auto", external: [], format: "esm", modules: [], cwd: "", define: %{}, target: "", sourcemap: false, footer: nil, conditions: [], minify: false, import_source: "", jsx: "automatic", jsx_factory: "", jsx_fragment: "", treeshake: false, banner: nil, preamble: nil, module_types: %{}, preserve_entry_signatures: "", main_fields: [], drop_console: false})1413 (oxc 0.17.8) lib/oxc.ex:487: OXC.bundle/21414 (ghostty 0.4.9) lib/mix/compilers/ghostty_js.ex:47: Mix.Compilers.GhosttyJS.do_bundle/21415 (mix 1.20.3) lib/mix/task.ex:589: Mix.Task.run_alias/61416 (mix 1.20.3) lib/mix/tasks/deps.compile.ex:230: anonymous fn/2 in Mix.Tasks.Deps.Compile.do_mix/21417 (mix 1.20.3) lib/mix/project.ex:557: Mix.Project.in_project/41418 (elixir 1.20.3) lib/file.ex:2100: File.cd!/21419 (mix 1.20.3) lib/mix/dep.ex:279: Mix.Dep.in_dependency/3