Build log
nerves_system_qemu_aarch64
vibe 0.2.4 · fail · run vibe-0.2.4-1791151171447
1419 of 1419 lines
1Resolving Hex dependencies...2Resolution completed in 0.771s3Unchanged: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_qemu_aarch64/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_qemu_aarch64/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_qemu_aarch64/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 ┌─ src/luerl_lib_basic.erl:662 │663 164 │ true when I >= 1 ->664 │ ╰── Warning: variable 'I' exported from '==' (line 163, column 25).665Exporting bindings from subexpressions other than block expressions is666deprecated and may yield an error in a future version of Erlang/OTP.667Please move the binding of 'I' out of the '=='.668Compile directive 'nowarn_export_var_subexpr' can be used to suppress669warnings in selected modules.670671672 ┌─ src/luerl_lib.erl:673 │674 243 │ case catch begin [N1] = string:tokens(N0, [9,10,11,12,13,32,160]),675 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.676Compile directive 'nowarn_deprecated_catch' can be used to suppress677warnings in selected modules.678679680../../../Users/rv/luerl/luerl/src/luerl_scan.xrl:171:10: Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.681Compile directive 'nowarn_deprecated_catch' can be used to suppress682warnings in selected modules.683684===> Analyzing applications...685===> Compiling fuse686===> Analyzing applications...687===> Compiling ranch688==> abacus689Compiling 3 files (.erl)690Compiling 5 files (.ex)691 warning: Abacus.parse/1 is undefined or private692 │693 36 │ Abacus.parse(without_parantheses),694 │ ~695 │696 └─ lib/format.ex:36:14: Abacus.Format.format/1697 └─ lib/format.ex:37:14: Abacus.Format.format/1698 └─ lib/format.ex:38:14: Abacus.Format.format/1699 └─ lib/format.ex:39:14: Abacus.Format.format/1700 └─ lib/format.ex:64:14: Abacus.Format.format/1701 └─ lib/format.ex:65:14: Abacus.Format.format/1702 └─ lib/format.ex:81:14: Abacus.Format.format/1703 └─ lib/format.ex:82:14: Abacus.Format.format/1704 └─ lib/format.ex:100:28: Abacus.Format.format/1705706 warning: the following clause is redundant:707708 def typeof(b) when is_boolean(b)709710 it has type:711712 dynamic(boolean())713714 previous clauses have already matched on the following types:715716 atom()717 binary()718 integer()719 float()720721 │722 31 │ def typeof(b) when is_boolean(b), do: :boolean723 │ ~724 │725 └─ lib/runtime/helpers.ex:31:7: Abacus.Runtime.Helpers.typeof/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/qemu_aarch64/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/qemu_aarch64/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/qemu_aarch64/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/qemu_aarch64/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/qemu_aarch64/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/qemu_aarch64/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/qemu_aarch64/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/qemu_aarch64/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/qemu_aarch64/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/qemu_aarch64/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/qemu_aarch64/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/qemu_aarch64/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/qemu_aarch64/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/qemu_aarch64/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/qemu_aarch64/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/qemu_aarch64/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/qemu_aarch64/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/qemu_aarch64/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/qemu_aarch64/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/qemu_aarch64/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/qemu_aarch64/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_qemu_aarch64945Compiling 1 file (.ex)946Generated nerves_system_qemu_aarch64 app947==> nerves_compatibility_test948===> Analyzing applications...949===> Compiling idna950==> libgraph951Compiling 15 files (.ex)952Generated libgraph app953==> boxart954Compiling 24 files (.ex)955Generated boxart app956==> nimble_parsec957Compiling 4 files (.ex)958Generated nimble_parsec app959==> time_zone_info960Compiling 29 files (.ex)961Generated time_zone_info app962==> nerves_compatibility_test963===> Analyzing applications...964===> Compiling telemetry965==> websockex966Compiling 6 files (.ex)967 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 operator968 │969 109 │ <<payload::bytes-size(size), rest::bitstring>> = remaining970 │ ~971 │972 └─ lib/websockex/frame.ex:109:27: WebSockex.Frame.parse_frame/1973974 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 operator975 │976 125 │ <<payload::bytes-size(len), rest::bitstring>> = remaining977 │ ~978 │979 └─ lib/websockex/frame.ex:125:29: WebSockex.Frame.parse_frame/1980981 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 operator982 │983 125 │ <<payload::bytes-size(len), rest::bitstring>> = remaining984 │ ~985 │986 └─ lib/websockex/frame.ex:125:29: WebSockex.Frame.parse_frame/1987988 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 operator989 │990 145 │ <<payload::bytes-size(len), rest::bitstring>> = remaining991 │ ~992 │993 └─ lib/websockex/frame.ex:145:27: WebSockex.Frame.parse_frame/1994995 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 operator996 │997 150 │ <<payload::bytes-size(len), rest::bitstring>> = remaining998 │ ~999 │1000 └─ lib/websockex/frame.ex:150:27: WebSockex.Frame.parse_frame/110011002 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 operator1003 │1004 155 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1005 │ ~1006 │1007 └─ lib/websockex/frame.ex:155:27: WebSockex.Frame.parse_frame/110081009 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 operator1010 │1011 164 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1012 │ ~1013 │1014 └─ lib/websockex/frame.ex:164:29: WebSockex.Frame.parse_frame/110151016 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 operator1017 │1018 171 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1019 │ ~1020 │1021 └─ lib/websockex/frame.ex:171:29: WebSockex.Frame.parse_frame/110221023 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 operator1024 │1025 176 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1026 │ ~1027 │1028 └─ lib/websockex/frame.ex:176:29: WebSockex.Frame.parse_frame/110291030 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 operator1031 │1032 164 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1033 │ ~1034 │1035 └─ lib/websockex/frame.ex:164:29: WebSockex.Frame.parse_frame/110361037 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 operator1038 │1039 171 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1040 │ ~1041 │1042 └─ lib/websockex/frame.ex:171:29: WebSockex.Frame.parse_frame/110431044 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 operator1045 │1046 176 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1047 │ ~1048 │1049 └─ lib/websockex/frame.ex:176:29: WebSockex.Frame.parse_frame/110501051 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 operator1052 │1053 183 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1054 │ ~1055 │1056 └─ lib/websockex/frame.ex:183:27: WebSockex.Frame.parse_frame/110571058 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 operator1059 │1060 188 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1061 │ ~1062 │1063 └─ lib/websockex/frame.ex:188:27: WebSockex.Frame.parse_frame/110641065 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 operator1066 │1067 193 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1068 │ ~1069 │1070 └─ lib/websockex/frame.ex:193:27: WebSockex.Frame.parse_frame/110711072 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 operator1073 │1074 199 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1075 │ ~1076 │1077 └─ lib/websockex/frame.ex:199:27: WebSockex.Frame.parse_frame/110781079 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 operator1080 │1081 204 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1082 │ ~1083 │1084 └─ lib/websockex/frame.ex:204:27: WebSockex.Frame.parse_frame/110851086 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 operator1087 │1088 209 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1089 │ ~1090 │1091 └─ lib/websockex/frame.ex:209:27: WebSockex.Frame.parse_frame/110921093 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 operator1094 │1095 358 │ <<payload::bytes-size(len), rest::bitstring>> = remaining1096 │ ~1097 │1098 └─ lib/websockex/frame.ex:358:27: WebSockex.Frame.parse_text_payload/310991100Generated websockex app1101==> telemetry_metrics1102Compiling 7 files (.ex)1103Generated telemetry_metrics app1104==> ecto1105Compiling 56 files (.ex)1106Generated ecto app1107==> uniq1108Compiling 5 files (.ex)1109 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 operator1110 │1111 547 │ <<clock_hi::bits(clock_hi_size), clock_lo::bits(8), node::bits(48)>> <-1112 │ ~1113 │1114 └─ lib/uuid.ex:547:29: Uniq.UUID.parse_raw/511151116 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 operator1117 │1118 549 │ <<clock::uint(clock_size)>> <-1119 │ ~1120 │1121 └─ lib/uuid.ex:549:26: Uniq.UUID.parse_raw/511221123 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 operator1124 │1125 547 │ <<clock_hi::bits(clock_hi_size), clock_lo::bits(8), node::bits(48)>> <-1126 │ ~1127 │1128 └─ lib/uuid.ex:547:29: Uniq.UUID.parse_raw/511291130 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 operator1131 │1132 549 │ <<clock::uint(clock_size)>> <-1133 │ ~1134 │1135 └─ lib/uuid.ex:549:26: Uniq.UUID.parse_raw/511361137 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 operator1138 │1139 547 │ <<clock_hi::bits(clock_hi_size), clock_lo::bits(8), node::bits(48)>> <-1140 │ ~1141 │1142 └─ lib/uuid.ex:547:29: Uniq.UUID.parse_raw/511431144 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 operator1145 │1146 549 │ <<clock::uint(clock_size)>> <-1147 │ ~1148 │1149 └─ lib/uuid.ex:549:26: Uniq.UUID.parse_raw/511501151 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 operator1152 │1153 547 │ <<clock_hi::bits(clock_hi_size), clock_lo::bits(8), node::bits(48)>> <-1154 │ ~1155 │1156 └─ lib/uuid.ex:547:29: Uniq.UUID.parse_raw/511571158 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 operator1159 │1160 549 │ <<clock::uint(clock_size)>> <-1161 │ ~1162 │1163 └─ lib/uuid.ex:549:26: Uniq.UUID.parse_raw/511641165Generated uniq app1166==> crontab1167Compiling 7 files (.ex)1168 warning: this clause of defp get_interval_value/2 is never used (or it will always fail/warn when invoked)1169 │1170 255 │ defp get_interval_value(:ambiguity_opts, %{ambiguity_opts: ambiguity_opts}), do: ambiguity_opts1171 │ ~1172 │1173 └─ lib/crontab/date_checker.ex:255:8: Crontab.DateChecker.get_interval_value/211741175Generated crontab app1176==> db_connection1177Compiling 18 files (.ex)1178Generated db_connection app1179==> ecto_sql1180Compiling 25 files (.ex)1181Generated ecto_sql app1182==> fsmx1183Compiling 3 files (.ex)1184Generated fsmx app1185==> nerves_compatibility_test1186===> Analyzing applications...1187===> Compiling cowboy1188==> phoenix_html1189Compiling 6 files (.ex)1190Generated phoenix_html app1191==> zoi1192Compiling 84 files (.ex)1193Generated zoi app1194==> phoenix_template1195Compiling 4 files (.ex)1196Generated phoenix_template app1197==> abnf_parsec1198Compiling 4 files (.ex)1199Generated abnf_parsec app1200==> texture1201Compiling 7 files (.ex)1202Generated texture app1203==> phoenix_pubsub1204Compiling 12 files (.ex)1205Generated phoenix_pubsub app1206==> rustler_precompiled1207Compiling 4 files (.ex)1208Generated rustler_precompiled app1209==> oxc1210Compiling 17 files (.ex)1211121222:23:19.524 [debug] Downloading NIF from https://github.com/elixir-volt/oxc_ex/releases/download/v0.17.8/liboxc_fmt_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz1213121422:23:19.590 [debug] Downloading NIF from https://github.com/elixir-volt/oxc_ex/releases/download/v0.17.8/liboxc_lint_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz1215121622:23:21.143 [debug] NIF cached at /home/nerves/.cache/rustler_precompiled/precompiled_nifs/liboxc_lint_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz and extracted to /work/proj/_build/qemu_aarch64/lib/oxc/priv/native/liboxc_lint_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so1217121822:23:21.253 [debug] NIF cached at /home/nerves/.cache/rustler_precompiled/precompiled_nifs/liboxc_fmt_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz and extracted to /work/proj/_build/qemu_aarch64/lib/oxc/priv/native/liboxc_fmt_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so1219122022:23:21.338 [debug] Downloading NIF from https://github.com/elixir-volt/oxc_ex/releases/download/v0.17.8/liboxc_ex_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz1221122222:23:22.857 [debug] NIF cached at /home/nerves/.cache/rustler_precompiled/precompiled_nifs/liboxc_ex_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz and extracted to /work/proj/_build/qemu_aarch64/lib/oxc/priv/native/liboxc_ex_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so1223Generated oxc app1224==> oxide_ex1225Compiling 2 files (.ex)1226122722:23:23.772 [debug] Downloading NIF from https://github.com/elixir-volt/oxide_ex/releases/download/v0.2.2/liboxide_ex_nif-v0.2.2-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz1228122922:23:24.424 [debug] NIF cached at /home/nerves/.cache/rustler_precompiled/precompiled_nifs/liboxide_ex_nif-v0.2.2-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz and extracted to /work/proj/_build/qemu_aarch64/lib/oxide_ex/priv/native/liboxide_ex_nif-v0.2.2-nif-2.15-aarch64-unknown-linux-gnu.so1230Generated oxide_ex app1231==> vize1232Compiling 11 files (.ex)1233123422:23:24.942 [debug] Downloading NIF from https://github.com/elixir-volt/vize_ex/releases/download/v0.13.1/libvize_ex_nif-v0.13.1-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz1235123622:23:26.084 [debug] NIF cached at /home/nerves/.cache/rustler_precompiled/precompiled_nifs/libvize_ex_nif-v0.13.1-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz and extracted to /work/proj/_build/qemu_aarch64/lib/vize/priv/native/libvize_ex_nif-v0.13.1-nif-2.15-aarch64-unknown-linux-gnu.so1237Generated vize app1238==> mdex_native1239Compiling 9 files (.ex)1240124122:23:26.492 [debug] Downloading NIF from https://github.com/leandrocp/mdex_native/releases/download/v0.2.11/libmdex_native_nif-v0.2.11-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz1242124322:23:27.181 [debug] NIF cached at /home/nerves/.cache/rustler_precompiled/precompiled_nifs/libmdex_native_nif-v0.2.11-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz and extracted to /work/proj/_build/qemu_aarch64/lib/mdex_native/priv/native/libmdex_native_nif-v0.2.11-nif-2.15-aarch64-unknown-linux-gnu.so1244Generated mdex_native app1245==> splode1246Compiling 5 files (.ex)1247Generated splode app1248==> jido_signal1249Compiling 67 files (.ex)1250125122:23:32.481 [debug] Extension registry unavailable queued module=Jido.Signal.Ext.Dispatch1252125322:23:34.164 [debug] Extension registry unavailable queued module=Jido.Signal.Ext.Trace1254Generated jido_signal app1255==> jsv1256Compiling 75 files (.ex)1257Generated jsv app1258==> glob_ex1259Compiling 4 files (.ex)1260Generated glob_ex app1261==> lua1262Compiling 7 files (.ex)1263 warning: this clause of defp format_error/2 is never used (or it will always fail/warn when invoked)1264 │1265 177 │ defp format_error(_, {:undefined, args}) do1266 │ ~1267 │1268 └─ lib/lua/util.ex:177:8: Lua.Util.format_error/212691270Generated lua app1271==> plug1272Compiling 1 file (.erl)1273Compiling 42 files (.ex)1274Generated plug app1275==> dotenvy1276Compiling 3 files (.ex)1277Generated dotenvy app1278==> uboot_env1279Compiling 5 files (.ex)1280Generated uboot_env app1281==> nimble_pool1282Compiling 2 files (.ex)1283Generated nimble_pool app1284==> finch1285Compiling 22 files (.ex)1286Generated finch app1287warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"1288 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/21289 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/11290 (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/51291 (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/21292 (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/41293 (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/212941295==> req1296Compiling 19 files (.ex)1297Generated req app1298==> llm_db1299Compiling 65 files (.ex)1300Generated llm_db app1301==> req_llm1302Compiling 219 files (.ex)1303Compiling lib/mix/tasks/gen.ex (it's taking more than 10s)1304Compiling lib/req_llm/providers/anthropic/context.ex (it's taking more than 10s)1305Compiling lib/req_llm/output/validation.ex (it's taking more than 10s)1306Compiling lib/req_llm/open_telemetry/content.ex (it's taking more than 10s)1307Compiling lib/req_llm/context/tool_exchange.ex (it's taking more than 10s)1308Compiling lib/req_llm/context.ex (it's taking more than 10s)1309Compiling lib/req_llm/telemetry.ex (it's taking more than 10s)1310Generated req_llm app1311==> iconify1312Compiling 5 files (.ex)1313Generated iconify app1314==> jido_action1315Compiling 39 files (.ex)1316 warning: the following clause cannot match because the previous clauses already matched all possible values:13171318 _ ->13191320 it attempts to match on the result of:13211322 Map.has_key?(message, :message) and is_binary(message.message)13231324 which has the already matched type:13251326 dynamic(false)13271328 type warning found at:1329 │1330 147 │ if Map.has_key?(message, :message) and is_binary(message.message) do1331 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1332 │1333 └─ lib/jido_action/exec/telemetry.ex:147: Jido.Exec.Telemetry.extract_safe_error_message/113341335Generated jido_action app1336==> jido1337Compiling 126 files (.ex)1338Generated jido app1339==> jido_ai1340Compiling 170 files (.ex)1341Compiling lib/jido_ai/directive/helpers.ex (it's taking more than 10s)1342Compiling lib/jido_ai/actions/tool_calling/call_with_tools.ex (it's taking more than 10s)1343Compiling lib/jido_ai/actions/skill/load_skill.ex (it's taking more than 10s)1344Compiling lib/jido_ai/reasoning/react/runner.ex (it's taking more than 10s)1345Generated jido_ai app1346==> cc_precompiler1347Compiling 3 files (.ex)1348Generated cc_precompiler app1349==> exqlite1350Downloading precompiled NIF to /home/nerves/.cache/elixir_make/exqlite-nif-2.17-aarch64-linux-gnu-0.42.0.tar.gz1351Compiling 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:27:21.179 [debug] Downloading NIF from https://github.com/dannote/ghostty_ex/releases/download/v0.4.9/Elixir.Ghostty.PTY.Nif-v0.4.9-aarch64-linux-gnu.so.tar.gz1395139622:27:21.545 [debug] Downloading NIF from https://github.com/dannote/ghostty_ex/releases/download/v0.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:27:23.539 [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/qemu_aarch64/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:27:23.628 [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/qemu_aarch64/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