For now? I'm experimenting on an old concept.
1

Configure Feed

Select the types of activity you want to include in your feed.

Fix imports

MLC Bloeiman (Jul 9, 2026, 9:49 PM +0200) 3e6a9997 c32fb231

+361 -62
+1 -1
server/gleam.toml
··· 29 29 simplifile = ">= 2.4.0 and < 3.0.0" 30 30 booklet = ">= 1.1.0 and < 2.0.0" 31 31 humanise = ">= 1.1.0 and < 2.0.0" 32 - lumina_client = { path = "../web" } 32 + lumina_client = { path = "../web/" } 33 33 gleam_stdlib = ">= 1.0.2 and < 2.0.0" 34 34 gleam_erlang = ">= 1.3.0 and < 2.0.0" 35 35 lustre = ">= 5.7.0 and < 6.0.0"
+352 -54
server/manifest.toml
··· 2 2 # You typically do not need to edit this file 3 3 4 4 packages = [ 5 - { name = "argv", version = "1.1.0", build_tools = ["gleam"], requirements = [], otp_app = "argv", source = "hex", outer_checksum = "3277D100448BDB4A29B6D58C0F36F631CBC349E8BDD09766C6309DF202831140" }, 6 - { name = "backoff", version = "1.1.6", build_tools = ["rebar3"], requirements = [], otp_app = "backoff", source = "hex", outer_checksum = "CF0CFFF8995FB20562F822E5CC47D8CCF664C5ECDC26A684CBE85C225F9D7C39" }, 7 - { name = "booklet", version = "1.1.0", build_tools = ["gleam"], requirements = [], otp_app = "booklet", source = "hex", outer_checksum = "08E0FDB78DC4D8A5D3C80295B021505C7D2A2E7B6C6D5EAB7286C36F4A53C851" }, 8 - { name = "collie", version = "1.0.0", build_tools = ["gleam"], requirements = ["exception", "gleam_crypto", "gleam_erlang", "gleam_http", "gleam_otp", "gleam_stdlib", "logging", "websocks"], otp_app = "collie", source = "hex", outer_checksum = "5796F28859B0CF0AF7E7B409775C291995B432B48BA2E2CDCA0D4B018B8162B5" }, 9 - { name = "compresso", version = "0.1.0", build_tools = ["gleam"], requirements = ["exception", "gleam_erlang", "gleam_stdlib", "gleam_yielder", "logging"], otp_app = "compresso", source = "hex", outer_checksum = "8BE29A1EDA42F70826ED148EAE40C46BB3FC18E78FE472663DB01DD4A38172D4" }, 10 - { name = "directories", version = "1.2.0", build_tools = ["gleam"], requirements = ["envoy", "gleam_stdlib", "platform", "simplifile"], otp_app = "directories", source = "hex", outer_checksum = "D13090CFCDF6759B87217E8DDD73A75903A700148A82C1D33799F333E249BF9E" }, 11 - { name = "envoy", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "envoy", source = "hex", outer_checksum = "9C6FBB6BFA02A52798BEEC5977A738CAD6E4A057F4B67FD0C8061AD2502C191A" }, 12 - { name = "esqlite", version = "0.9.0", build_tools = ["rebar3"], requirements = [], otp_app = "esqlite", source = "hex", outer_checksum = "CCF72258A4EE152EC7AD92AA9A03552EB6CA1B06B65C93AD5B6E55C302E05855" }, 13 - { name = "ewe", version = "3.0.8", build_tools = ["gleam"], requirements = ["compresso", "exception", "gleam_erlang", "gleam_http", "gleam_otp", "gleam_stdlib", "glisten", "logging", "websocks"], otp_app = "ewe", source = "hex", outer_checksum = "C9E6D12AEE3DE86ABE4BDD9F819E7D3F43448C8A64F3B30AF1CBD0B2D4D2CA10" }, 14 - { name = "exception", version = "2.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "exception", source = "hex", outer_checksum = "329D269D5C2A314F7364BD2711372B6F2C58FA6F39981572E5CA68624D291F8C" }, 15 - { name = "filepath", version = "1.1.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "filepath", source = "hex", outer_checksum = "B06A9AF0BF10E51401D64B98E4B627F1D2E48C154967DA7AF4D0914780A6D40A" }, 16 - { name = "gleam_community_colour", version = "2.0.4", build_tools = ["gleam"], requirements = ["gleam_json", "gleam_stdlib"], otp_app = "gleam_community_colour", source = "hex", outer_checksum = "6DB4665555D7D2B27F0EA32EF47E8BEBC4303821765F9C73D483F38EE24894F0" }, 17 - { name = "gleam_crypto", version = "1.6.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_crypto", source = "hex", outer_checksum = "2DE9E4EF53CF6FEE049D4F765731F7178F7A11AEFAE00EEE63BF7536B354AD3F" }, 18 - { name = "gleam_erlang", version = "1.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_erlang", source = "hex", outer_checksum = "1124AD3AA21143E5AF0FC5CF3D9529F6DB8CA03E43A55711B60B6B7B3874375C" }, 19 - { name = "gleam_http", version = "4.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_http", source = "hex", outer_checksum = "82EA6A717C842456188C190AFB372665EA56CE13D8559BF3B1DD9E40F619EE0C" }, 20 - { name = "gleam_httpc", version = "5.0.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_http", "gleam_stdlib"], otp_app = "gleam_httpc", source = "hex", outer_checksum = "C545172618D07811494E97AAA4A0FB34DA6F6D0061FDC8041C2F8E3BE2B2E48F" }, 21 - { name = "gleam_javascript", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_javascript", source = "hex", outer_checksum = "EF6C77A506F026C6FB37941889477CD5E4234FCD4337FF0E9384E297CB8F97EB" }, 22 - { name = "gleam_json", version = "3.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_json", source = "hex", outer_checksum = "44FDAA8847BE8FC48CA7A1C089706BD54BADCC4C45B237A992EDDF9F2CDB2836" }, 23 - { name = "gleam_otp", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_stdlib"], otp_app = "gleam_otp", source = "hex", outer_checksum = "BA6A294E295E428EC1562DC1C11EA7530DCB981E8359134BEABC8493B7B2258E" }, 24 - { name = "gleam_stdlib", version = "1.0.2", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "0C5506589DF4C63DF5D6FFBB834562D6865C6C2AEE0019D7B37886BD6D128141" }, 25 - { name = "gleam_time", version = "1.8.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_time", source = "hex", outer_checksum = "533D8723774D61AD4998324F5DD1DABDCDBFABAFB9E87CB5D03C6955448FC97D" }, 26 - { name = "gleam_yielder", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_yielder", source = "hex", outer_checksum = "8E4E4ECFA7982859F430C57F549200C7749823C106759F4A19A78AEA6687717A" }, 27 - { name = "gleamy_lights", version = "2.3.1", build_tools = ["gleam"], requirements = ["envoy", "gleam_community_colour", "gleam_stdlib"], otp_app = "gleamy_lights", source = "hex", outer_checksum = "CD89DD48BBCD8FBB6B8CB84101C70221CBFB901F711C3C7F81F47288EC8074FD" }, 28 - { name = "glearray", version = "2.1.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "glearray", source = "hex", outer_checksum = "C013E0F153E73F5D35609AA6F2570D41D2E35C0DD404E91E847859EE41CBC139" }, 29 - { name = "gleeunit", version = "1.10.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "254B697FE72EEAD7BF82E941723918E421317813AC49923EE76A18C788C61E72" }, 30 - { name = "glisten", version = "9.0.1", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_otp", "gleam_stdlib", "logging"], otp_app = "glisten", source = "hex", outer_checksum = "7795AA50830656F3A0316A6B26595F893C83272DA901B3405E31339CAA31A10B" }, 31 - { name = "gramps", version = "6.0.1", build_tools = ["gleam"], requirements = ["gleam_crypto", "gleam_erlang", "gleam_http", "gleam_stdlib"], otp_app = "gramps", source = "hex", outer_checksum = "D55636072DEE173F6586A5679D3C02EC7A0DE3F8646B78C351B72908FF223DF7" }, 32 - { name = "houdini", version = "1.2.1", build_tools = ["gleam"], requirements = [], otp_app = "houdini", source = "hex", outer_checksum = "6F8AC2F12974567FB744BEA66AC93CEB76AAEA19AD28564623F76CDA9BC26A85" }, 33 - { name = "hpack_erl", version = "0.3.0", build_tools = ["rebar3"], requirements = [], otp_app = "hpack", source = "hex", outer_checksum = "D6137D7079169D8C485C6962DFE261AF5B9EF60FBC557344511C1E65E3D95FB0" }, 34 - { name = "humanise", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib", "gleam_time"], otp_app = "humanise", source = "hex", outer_checksum = "5B78C52863B673F7D903117BE9262628210946406E04B6AB09554D5C2A7F15F0" }, 35 - { name = "logging", version = "1.5.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "logging", source = "hex", outer_checksum = "BC5F18CE5DD9686100229FE5409BDC3DD5C46D5A7DF2F804AD2D8F0DD6C5060E" }, 36 - { name = "lumina_client", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_json", "gleam_stdlib", "gleam_time", "gleamy_lights", "lustre", "modem", "off_topic", "plinth"], source = "local", path = "../../../web" }, 37 - { name = "lustre", version = "5.7.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_json", "gleam_otp", "gleam_stdlib", "houdini"], otp_app = "lustre", source = "hex", outer_checksum = "38C6FCBD7B7BACE994D5BF643202BB69B02576D44250B4C5DCE738387C0E8F87" }, 38 - { name = "marceau", version = "1.3.0", build_tools = ["gleam"], requirements = [], otp_app = "marceau", source = "hex", outer_checksum = "2D1C27504BEF45005F5DFB18591F8610FB4BFA91744878210BDC464412EC44E9" }, 39 - { name = "mist", version = "6.0.3", build_tools = ["gleam"], requirements = ["exception", "gleam_erlang", "gleam_http", "gleam_otp", "gleam_stdlib", "glisten", "gramps", "hpack_erl", "logging"], otp_app = "mist", source = "hex", outer_checksum = "1B07F321D5FA0CB162D81496F2DE96AEB6EF8980F4F38230A4CC3F849497E020" }, 40 - { name = "modem", version = "2.1.3", build_tools = ["gleam"], requirements = ["gleam_stdlib", "lustre"], otp_app = "modem", source = "hex", outer_checksum = "F03560273C4E857025E7628BCE1EBA8B7E9A1A81A73CA998FC29FD1CED188968" }, 41 - { name = "off_topic", version = "1.0.0-rc3", build_tools = ["gleam"], requirements = ["gleam_json", "gleam_stdlib", "gleam_time", "lustre"], otp_app = "off_topic", source = "hex", outer_checksum = "6E0B3F5BE82391A1C7BA3E1D0B2E03C24F3D41B9148E568265E67E9ADF0E4E30" }, 42 - { name = "opentelemetry_api", version = "1.5.0", build_tools = ["rebar3", "mix"], requirements = [], otp_app = "opentelemetry_api", source = "hex", outer_checksum = "F53EC8A1337AE4A487D43AC89DA4BD3A3C99DDF576655D071DEED8B56A2D5DDA" }, 43 - { name = "parrot", version = "2.2.1", build_tools = ["gleam"], requirements = ["argv", "envoy", "filepath", "gleam_crypto", "gleam_httpc", "gleam_json", "gleam_stdlib", "gleam_time", "glearray", "repeatedly", "simplifile", "tom"], otp_app = "parrot", source = "hex", outer_checksum = "BD114893BFA9564D8F3109AB388EC4BA162E8429A4DE689AF7C5624FF010CBEF" }, 44 - { name = "pg_types", version = "0.6.0", build_tools = ["rebar3"], requirements = [], otp_app = "pg_types", source = "hex", outer_checksum = "9949A4849DD13408FA249AB7B745E0D2DFDB9532AEE2B9722326E33CD082A778" }, 45 - { name = "pgo", version = "0.20.0", build_tools = ["rebar3"], requirements = ["backoff", "opentelemetry_api", "pg_types"], otp_app = "pgo", source = "hex", outer_checksum = "2F11E6649CEB38E569EF56B16BE1D04874AE5B11A02867080A2817CE423C683B" }, 46 - { name = "platform", version = "1.0.0", build_tools = ["gleam"], requirements = [], otp_app = "platform", source = "hex", outer_checksum = "8339420A95AD89AAC0F82F4C3DB8DD401041742D6C3F46132A8739F6AEB75391" }, 47 - { name = "plinth", version = "0.10.2", build_tools = ["gleam"], requirements = ["gleam_javascript", "gleam_json", "gleam_stdlib"], otp_app = "plinth", source = "hex", outer_checksum = "3FE77CED3F19D70918EE32CE8BFB12BE1C28CA004D997F874C2D8DAD2DB73D87" }, 48 - { name = "pog", version = "4.1.0", build_tools = ["gleam"], requirements = ["exception", "gleam_erlang", "gleam_otp", "gleam_stdlib", "gleam_time", "pgo"], otp_app = "pog", source = "hex", outer_checksum = "E4AFBA39A5FAA2E77291836C9683ADE882E65A06AB28CA7D61AE7A3AD61EBBD5" }, 49 - { name = "repeatedly", version = "2.1.2", build_tools = ["gleam"], requirements = [], otp_app = "repeatedly", source = "hex", outer_checksum = "93AE1938DDE0DC0F7034F32C1BF0D4E89ACEBA82198A1FE21F604E849DA5F589" }, 50 - { name = "shellout", version = "1.8.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "shellout", source = "hex", outer_checksum = "C416356D45151F298108C9DB9CD1EDE0313F620B5EDBB5766CD7237659D87841" }, 51 - { name = "simplifile", version = "2.4.0", build_tools = ["gleam"], requirements = ["filepath", "gleam_stdlib"], otp_app = "simplifile", source = "hex", outer_checksum = "7C18AFA4FED0B4CE1FA5B0B4BAC1FA1744427054EA993565F6F3F82E5453170D" }, 52 - { name = "sqlight", version = "1.1.0", build_tools = ["gleam"], requirements = ["esqlite", "gleam_stdlib"], otp_app = "sqlight", source = "hex", outer_checksum = "ECA1A4B45C35EB9EFCEEB7FAAC7BF5D8B2C777A7C1FC8A9C12CB67D54CED42E7" }, 53 - { name = "tom", version = "2.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib", "gleam_time"], otp_app = "tom", source = "hex", outer_checksum = "DCF04CB7AB35D58CFC598C66EA2E1816D160759802C89B2BA6238780D59BC256" }, 54 - { name = "websocks", version = "3.0.1", build_tools = ["gleam"], requirements = ["gleam_crypto", "gleam_erlang", "gleam_stdlib"], otp_app = "websocks", source = "hex", outer_checksum = "C70340E5B6C3390383ADA17029DCA6F8903863A7AD8CD8E1520EDCC4FE70D6FD" }, 55 - { name = "wisp", version = "2.2.2", build_tools = ["gleam"], requirements = ["directories", "exception", "filepath", "gleam_crypto", "gleam_erlang", "gleam_http", "gleam_json", "gleam_stdlib", "houdini", "logging", "marceau", "mist", "simplifile"], otp_app = "wisp", source = "hex", outer_checksum = "5FF5F1E288C3437252ABB93D8F9CF42FF652CE7AD54480CFE736038DC09C4F22" }, 56 - { name = "woof", version = "1.7.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "woof", source = "hex", outer_checksum = "D55260276C2DE3FB3E6DC970BE1E8A0D1BBA282152891B9BAE1FC99D584A5ADA" }, 57 - { name = "youid", version = "1.6.0", build_tools = ["gleam"], requirements = ["gleam_crypto", "gleam_stdlib", "gleam_time"], otp_app = "youid", source = "hex", outer_checksum = "7A3ABA44B1B38BC2BDCB5474C5317AA372BE58DFBC649815EE08B03526DDA18D" }, 5 + { name = "argv", version = "1.1.0", build_tools = [ 6 + "gleam", 7 + ], requirements = [ 8 + ], otp_app = "argv", source = "hex", outer_checksum = "3277D100448BDB4A29B6D58C0F36F631CBC349E8BDD09766C6309DF202831140" }, 9 + { name = "backoff", version = "1.1.6", build_tools = [ 10 + "rebar3", 11 + ], requirements = [ 12 + ], otp_app = "backoff", source = "hex", outer_checksum = "CF0CFFF8995FB20562F822E5CC47D8CCF664C5ECDC26A684CBE85C225F9D7C39" }, 13 + { name = "booklet", version = "1.1.0", build_tools = [ 14 + "gleam", 15 + ], requirements = [ 16 + ], otp_app = "booklet", source = "hex", outer_checksum = "08E0FDB78DC4D8A5D3C80295B021505C7D2A2E7B6C6D5EAB7286C36F4A53C851" }, 17 + { name = "collie", version = "1.0.0", build_tools = [ 18 + "gleam", 19 + ], requirements = [ 20 + "exception", 21 + "gleam_crypto", 22 + "gleam_erlang", 23 + "gleam_http", 24 + "gleam_otp", 25 + "gleam_stdlib", 26 + "logging", 27 + "websocks", 28 + ], otp_app = "collie", source = "hex", outer_checksum = "5796F28859B0CF0AF7E7B409775C291995B432B48BA2E2CDCA0D4B018B8162B5" }, 29 + { name = "compresso", version = "0.1.0", build_tools = [ 30 + "gleam", 31 + ], requirements = [ 32 + "exception", 33 + "gleam_erlang", 34 + "gleam_stdlib", 35 + "gleam_yielder", 36 + "logging", 37 + ], otp_app = "compresso", source = "hex", outer_checksum = "8BE29A1EDA42F70826ED148EAE40C46BB3FC18E78FE472663DB01DD4A38172D4" }, 38 + { name = "directories", version = "1.2.0", build_tools = [ 39 + "gleam", 40 + ], requirements = [ 41 + "envoy", 42 + "gleam_stdlib", 43 + "platform", 44 + "simplifile", 45 + ], otp_app = "directories", source = "hex", outer_checksum = "D13090CFCDF6759B87217E8DDD73A75903A700148A82C1D33799F333E249BF9E" }, 46 + { name = "envoy", version = "1.2.0", build_tools = [ 47 + "gleam", 48 + ], requirements = [ 49 + "gleam_stdlib", 50 + ], otp_app = "envoy", source = "hex", outer_checksum = "9C6FBB6BFA02A52798BEEC5977A738CAD6E4A057F4B67FD0C8061AD2502C191A" }, 51 + { name = "esqlite", version = "0.9.0", build_tools = [ 52 + "rebar3", 53 + ], requirements = [ 54 + ], otp_app = "esqlite", source = "hex", outer_checksum = "CCF72258A4EE152EC7AD92AA9A03552EB6CA1B06B65C93AD5B6E55C302E05855" }, 55 + { name = "ewe", version = "3.0.8", build_tools = [ 56 + "gleam", 57 + ], requirements = [ 58 + "compresso", 59 + "exception", 60 + "gleam_erlang", 61 + "gleam_http", 62 + "gleam_otp", 63 + "gleam_stdlib", 64 + "glisten", 65 + "logging", 66 + "websocks", 67 + ], otp_app = "ewe", source = "hex", outer_checksum = "C9E6D12AEE3DE86ABE4BDD9F819E7D3F43448C8A64F3B30AF1CBD0B2D4D2CA10" }, 68 + { name = "exception", version = "2.1.0", build_tools = [ 69 + "gleam", 70 + ], requirements = [ 71 + "gleam_stdlib", 72 + ], otp_app = "exception", source = "hex", outer_checksum = "329D269D5C2A314F7364BD2711372B6F2C58FA6F39981572E5CA68624D291F8C" }, 73 + { name = "filepath", version = "1.1.2", build_tools = [ 74 + "gleam", 75 + ], requirements = [ 76 + "gleam_stdlib", 77 + ], otp_app = "filepath", source = "hex", outer_checksum = "B06A9AF0BF10E51401D64B98E4B627F1D2E48C154967DA7AF4D0914780A6D40A" }, 78 + { name = "gleam_community_colour", version = "2.0.4", build_tools = [ 79 + "gleam", 80 + ], requirements = [ 81 + "gleam_json", 82 + "gleam_stdlib", 83 + ], otp_app = "gleam_community_colour", source = "hex", outer_checksum = "6DB4665555D7D2B27F0EA32EF47E8BEBC4303821765F9C73D483F38EE24894F0" }, 84 + { name = "gleam_crypto", version = "1.6.0", build_tools = [ 85 + "gleam", 86 + ], requirements = [ 87 + "gleam_stdlib", 88 + ], otp_app = "gleam_crypto", source = "hex", outer_checksum = "2DE9E4EF53CF6FEE049D4F765731F7178F7A11AEFAE00EEE63BF7536B354AD3F" }, 89 + { name = "gleam_erlang", version = "1.3.0", build_tools = [ 90 + "gleam", 91 + ], requirements = [ 92 + "gleam_stdlib", 93 + ], otp_app = "gleam_erlang", source = "hex", outer_checksum = "1124AD3AA21143E5AF0FC5CF3D9529F6DB8CA03E43A55711B60B6B7B3874375C" }, 94 + { name = "gleam_http", version = "4.3.0", build_tools = [ 95 + "gleam", 96 + ], requirements = [ 97 + "gleam_stdlib", 98 + ], otp_app = "gleam_http", source = "hex", outer_checksum = "82EA6A717C842456188C190AFB372665EA56CE13D8559BF3B1DD9E40F619EE0C" }, 99 + { name = "gleam_httpc", version = "5.0.0", build_tools = [ 100 + "gleam", 101 + ], requirements = [ 102 + "gleam_erlang", 103 + "gleam_http", 104 + "gleam_stdlib", 105 + ], otp_app = "gleam_httpc", source = "hex", outer_checksum = "C545172618D07811494E97AAA4A0FB34DA6F6D0061FDC8041C2F8E3BE2B2E48F" }, 106 + { name = "gleam_javascript", version = "1.0.0", build_tools = [ 107 + "gleam", 108 + ], requirements = [ 109 + "gleam_stdlib", 110 + ], otp_app = "gleam_javascript", source = "hex", outer_checksum = "EF6C77A506F026C6FB37941889477CD5E4234FCD4337FF0E9384E297CB8F97EB" }, 111 + { name = "gleam_json", version = "3.1.0", build_tools = [ 112 + "gleam", 113 + ], requirements = [ 114 + "gleam_stdlib", 115 + ], otp_app = "gleam_json", source = "hex", outer_checksum = "44FDAA8847BE8FC48CA7A1C089706BD54BADCC4C45B237A992EDDF9F2CDB2836" }, 116 + { name = "gleam_otp", version = "1.2.0", build_tools = [ 117 + "gleam", 118 + ], requirements = [ 119 + "gleam_erlang", 120 + "gleam_stdlib", 121 + ], otp_app = "gleam_otp", source = "hex", outer_checksum = "BA6A294E295E428EC1562DC1C11EA7530DCB981E8359134BEABC8493B7B2258E" }, 122 + { name = "gleam_stdlib", version = "1.0.2", build_tools = [ 123 + "gleam", 124 + ], requirements = [ 125 + ], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "0C5506589DF4C63DF5D6FFBB834562D6865C6C2AEE0019D7B37886BD6D128141" }, 126 + { name = "gleam_time", version = "1.8.0", build_tools = [ 127 + "gleam", 128 + ], requirements = [ 129 + "gleam_stdlib", 130 + ], otp_app = "gleam_time", source = "hex", outer_checksum = "533D8723774D61AD4998324F5DD1DABDCDBFABAFB9E87CB5D03C6955448FC97D" }, 131 + { name = "gleam_yielder", version = "1.1.0", build_tools = [ 132 + "gleam", 133 + ], requirements = [ 134 + "gleam_stdlib", 135 + ], otp_app = "gleam_yielder", source = "hex", outer_checksum = "8E4E4ECFA7982859F430C57F549200C7749823C106759F4A19A78AEA6687717A" }, 136 + { name = "gleamy_lights", version = "2.3.1", build_tools = [ 137 + "gleam", 138 + ], requirements = [ 139 + "envoy", 140 + "gleam_community_colour", 141 + "gleam_stdlib", 142 + ], otp_app = "gleamy_lights", source = "hex", outer_checksum = "CD89DD48BBCD8FBB6B8CB84101C70221CBFB901F711C3C7F81F47288EC8074FD" }, 143 + { name = "glearray", version = "2.1.1", build_tools = [ 144 + "gleam", 145 + ], requirements = [ 146 + "gleam_stdlib", 147 + ], otp_app = "glearray", source = "hex", outer_checksum = "C013E0F153E73F5D35609AA6F2570D41D2E35C0DD404E91E847859EE41CBC139" }, 148 + { name = "gleeunit", version = "1.10.0", build_tools = [ 149 + "gleam", 150 + ], requirements = [ 151 + "gleam_stdlib", 152 + ], otp_app = "gleeunit", source = "hex", outer_checksum = "254B697FE72EEAD7BF82E941723918E421317813AC49923EE76A18C788C61E72" }, 153 + { name = "glisten", version = "9.0.1", build_tools = [ 154 + "gleam", 155 + ], requirements = [ 156 + "gleam_erlang", 157 + "gleam_otp", 158 + "gleam_stdlib", 159 + "logging", 160 + ], otp_app = "glisten", source = "hex", outer_checksum = "7795AA50830656F3A0316A6B26595F893C83272DA901B3405E31339CAA31A10B" }, 161 + { name = "gramps", version = "6.0.1", build_tools = [ 162 + "gleam", 163 + ], requirements = [ 164 + "gleam_crypto", 165 + "gleam_erlang", 166 + "gleam_http", 167 + "gleam_stdlib", 168 + ], otp_app = "gramps", source = "hex", outer_checksum = "D55636072DEE173F6586A5679D3C02EC7A0DE3F8646B78C351B72908FF223DF7" }, 169 + { name = "houdini", version = "1.2.1", build_tools = [ 170 + "gleam", 171 + ], requirements = [ 172 + ], otp_app = "houdini", source = "hex", outer_checksum = "6F8AC2F12974567FB744BEA66AC93CEB76AAEA19AD28564623F76CDA9BC26A85" }, 173 + { name = "hpack_erl", version = "0.3.0", build_tools = [ 174 + "rebar3", 175 + ], requirements = [ 176 + ], otp_app = "hpack", source = "hex", outer_checksum = "D6137D7079169D8C485C6962DFE261AF5B9EF60FBC557344511C1E65E3D95FB0" }, 177 + { name = "humanise", version = "1.1.0", build_tools = [ 178 + "gleam", 179 + ], requirements = [ 180 + "gleam_stdlib", 181 + "gleam_time", 182 + ], otp_app = "humanise", source = "hex", outer_checksum = "5B78C52863B673F7D903117BE9262628210946406E04B6AB09554D5C2A7F15F0" }, 183 + { name = "logging", version = "1.5.0", build_tools = [ 184 + "gleam", 185 + ], requirements = [ 186 + "gleam_stdlib", 187 + ], otp_app = "logging", source = "hex", outer_checksum = "BC5F18CE5DD9686100229FE5409BDC3DD5C46D5A7DF2F804AD2D8F0DD6C5060E" }, 188 + { name = "lumina_client", version = "1.0.0", build_tools = [ 189 + "gleam", 190 + ], requirements = [ 191 + "gleam_json", 192 + "gleam_stdlib", 193 + "gleam_time", 194 + "gleamy_lights", 195 + "lustre", 196 + "modem", 197 + "off_topic", 198 + "plinth", 199 + ], source = "local", path = "../web" }, 200 + { name = "lustre", version = "5.7.0", build_tools = [ 201 + "gleam", 202 + ], requirements = [ 203 + "gleam_erlang", 204 + "gleam_json", 205 + "gleam_otp", 206 + "gleam_stdlib", 207 + "houdini", 208 + ], otp_app = "lustre", source = "hex", outer_checksum = "38C6FCBD7B7BACE994D5BF643202BB69B02576D44250B4C5DCE738387C0E8F87" }, 209 + { name = "marceau", version = "1.3.0", build_tools = [ 210 + "gleam", 211 + ], requirements = [ 212 + ], otp_app = "marceau", source = "hex", outer_checksum = "2D1C27504BEF45005F5DFB18591F8610FB4BFA91744878210BDC464412EC44E9" }, 213 + { name = "mist", version = "6.0.3", build_tools = [ 214 + "gleam", 215 + ], requirements = [ 216 + "exception", 217 + "gleam_erlang", 218 + "gleam_http", 219 + "gleam_otp", 220 + "gleam_stdlib", 221 + "glisten", 222 + "gramps", 223 + "hpack_erl", 224 + "logging", 225 + ], otp_app = "mist", source = "hex", outer_checksum = "1B07F321D5FA0CB162D81496F2DE96AEB6EF8980F4F38230A4CC3F849497E020" }, 226 + { name = "modem", version = "2.1.3", build_tools = [ 227 + "gleam", 228 + ], requirements = [ 229 + "gleam_stdlib", 230 + "lustre", 231 + ], otp_app = "modem", source = "hex", outer_checksum = "F03560273C4E857025E7628BCE1EBA8B7E9A1A81A73CA998FC29FD1CED188968" }, 232 + { name = "off_topic", version = "1.0.0-rc3", build_tools = [ 233 + "gleam", 234 + ], requirements = [ 235 + "gleam_json", 236 + "gleam_stdlib", 237 + "gleam_time", 238 + "lustre", 239 + ], otp_app = "off_topic", source = "hex", outer_checksum = "6E0B3F5BE82391A1C7BA3E1D0B2E03C24F3D41B9148E568265E67E9ADF0E4E30" }, 240 + { name = "opentelemetry_api", version = "1.5.0", build_tools = [ 241 + "rebar3", 242 + "mix", 243 + ], requirements = [ 244 + ], otp_app = "opentelemetry_api", source = "hex", outer_checksum = "F53EC8A1337AE4A487D43AC89DA4BD3A3C99DDF576655D071DEED8B56A2D5DDA" }, 245 + { name = "parrot", version = "2.2.1", build_tools = [ 246 + "gleam", 247 + ], requirements = [ 248 + "argv", 249 + "envoy", 250 + "filepath", 251 + "gleam_crypto", 252 + "gleam_httpc", 253 + "gleam_json", 254 + "gleam_stdlib", 255 + "gleam_time", 256 + "glearray", 257 + "repeatedly", 258 + "simplifile", 259 + "tom", 260 + ], otp_app = "parrot", source = "hex", outer_checksum = "BD114893BFA9564D8F3109AB388EC4BA162E8429A4DE689AF7C5624FF010CBEF" }, 261 + { name = "pg_types", version = "0.6.0", build_tools = [ 262 + "rebar3", 263 + ], requirements = [ 264 + ], otp_app = "pg_types", source = "hex", outer_checksum = "9949A4849DD13408FA249AB7B745E0D2DFDB9532AEE2B9722326E33CD082A778" }, 265 + { name = "pgo", version = "0.20.0", build_tools = [ 266 + "rebar3", 267 + ], requirements = [ 268 + "backoff", 269 + "opentelemetry_api", 270 + "pg_types", 271 + ], otp_app = "pgo", source = "hex", outer_checksum = "2F11E6649CEB38E569EF56B16BE1D04874AE5B11A02867080A2817CE423C683B" }, 272 + { name = "platform", version = "1.0.0", build_tools = [ 273 + "gleam", 274 + ], requirements = [ 275 + ], otp_app = "platform", source = "hex", outer_checksum = "8339420A95AD89AAC0F82F4C3DB8DD401041742D6C3F46132A8739F6AEB75391" }, 276 + { name = "plinth", version = "0.10.2", build_tools = [ 277 + "gleam", 278 + ], requirements = [ 279 + "gleam_javascript", 280 + "gleam_json", 281 + "gleam_stdlib", 282 + ], otp_app = "plinth", source = "hex", outer_checksum = "3FE77CED3F19D70918EE32CE8BFB12BE1C28CA004D997F874C2D8DAD2DB73D87" }, 283 + { name = "pog", version = "4.1.0", build_tools = [ 284 + "gleam", 285 + ], requirements = [ 286 + "exception", 287 + "gleam_erlang", 288 + "gleam_otp", 289 + "gleam_stdlib", 290 + "gleam_time", 291 + "pgo", 292 + ], otp_app = "pog", source = "hex", outer_checksum = "E4AFBA39A5FAA2E77291836C9683ADE882E65A06AB28CA7D61AE7A3AD61EBBD5" }, 293 + { name = "repeatedly", version = "2.1.2", build_tools = [ 294 + "gleam", 295 + ], requirements = [ 296 + ], otp_app = "repeatedly", source = "hex", outer_checksum = "93AE1938DDE0DC0F7034F32C1BF0D4E89ACEBA82198A1FE21F604E849DA5F589" }, 297 + { name = "shellout", version = "1.8.0", build_tools = [ 298 + "gleam", 299 + ], requirements = [ 300 + "gleam_stdlib", 301 + ], otp_app = "shellout", source = "hex", outer_checksum = "C416356D45151F298108C9DB9CD1EDE0313F620B5EDBB5766CD7237659D87841" }, 302 + { name = "simplifile", version = "2.4.0", build_tools = [ 303 + "gleam", 304 + ], requirements = [ 305 + "filepath", 306 + "gleam_stdlib", 307 + ], otp_app = "simplifile", source = "hex", outer_checksum = "7C18AFA4FED0B4CE1FA5B0B4BAC1FA1744427054EA993565F6F3F82E5453170D" }, 308 + { name = "sqlight", version = "1.1.0", build_tools = [ 309 + "gleam", 310 + ], requirements = [ 311 + "esqlite", 312 + "gleam_stdlib", 313 + ], otp_app = "sqlight", source = "hex", outer_checksum = "ECA1A4B45C35EB9EFCEEB7FAAC7BF5D8B2C777A7C1FC8A9C12CB67D54CED42E7" }, 314 + { name = "tom", version = "2.1.0", build_tools = [ 315 + "gleam", 316 + ], requirements = [ 317 + "gleam_stdlib", 318 + "gleam_time", 319 + ], otp_app = "tom", source = "hex", outer_checksum = "DCF04CB7AB35D58CFC598C66EA2E1816D160759802C89B2BA6238780D59BC256" }, 320 + { name = "websocks", version = "3.0.1", build_tools = [ 321 + "gleam", 322 + ], requirements = [ 323 + "gleam_crypto", 324 + "gleam_erlang", 325 + "gleam_stdlib", 326 + ], otp_app = "websocks", source = "hex", outer_checksum = "C70340E5B6C3390383ADA17029DCA6F8903863A7AD8CD8E1520EDCC4FE70D6FD" }, 327 + { name = "wisp", version = "2.2.2", build_tools = [ 328 + "gleam", 329 + ], requirements = [ 330 + "directories", 331 + "exception", 332 + "filepath", 333 + "gleam_crypto", 334 + "gleam_erlang", 335 + "gleam_http", 336 + "gleam_json", 337 + "gleam_stdlib", 338 + "houdini", 339 + "logging", 340 + "marceau", 341 + "mist", 342 + "simplifile", 343 + ], otp_app = "wisp", source = "hex", outer_checksum = "5FF5F1E288C3437252ABB93D8F9CF42FF652CE7AD54480CFE736038DC09C4F22" }, 344 + { name = "woof", version = "1.7.1", build_tools = [ 345 + "gleam", 346 + ], requirements = [ 347 + "gleam_stdlib", 348 + ], otp_app = "woof", source = "hex", outer_checksum = "D55260276C2DE3FB3E6DC970BE1E8A0D1BBA282152891B9BAE1FC99D584A5ADA" }, 349 + { name = "youid", version = "1.6.0", build_tools = [ 350 + "gleam", 351 + ], requirements = [ 352 + "gleam_crypto", 353 + "gleam_stdlib", 354 + "gleam_time", 355 + ], otp_app = "youid", source = "hex", outer_checksum = "7A3ABA44B1B38BC2BDCB5474C5317AA372BE58DFBC649815EE08B03526DDA18D" }, 58 356 ] 59 357 60 358 [requirements] ··· 71 369 gleam_time = { version = ">= 1.8.0 and < 2.0.0" } 72 370 gleeunit = { version = ">= 1.0.0 and < 2.0.0" } 73 371 humanise = { version = ">= 1.1.0 and < 2.0.0" } 74 - lumina_client = { path = "../../../web" } 372 + lumina_client = { path = "../web" } 75 373 lustre = { version = ">= 5.7.0 and < 6.0.0" } 76 374 off_topic = { version = ">= 1.0.0-rc3 and < 2.0.0" } 77 375 parrot = { version = ">= 2.2.1 and < 3.0.0" }
+8 -7
server/src/lumina.gleam
··· 39 39 import gleam/time/timestamp 40 40 import gleam/uri 41 41 import lumina/database/events 42 - import lumina/web 43 42 import lumina_client 44 - import lumina_client/model_type.{type Route} 43 + import lumina_client/message 45 44 import lustre 46 45 import lustre/attribute 47 - import lustre/effect 48 46 import lustre/element 49 47 import lustre/element/html.{html} 50 48 import lustre/server_component ··· 320 318 321 319 type LuminaServerComponentSocket { 322 320 LuminaServerComponentSocket( 323 - component: lustre.Runtime(off_topic.Message(model_type.Msg)), 321 + component: lustre.Runtime(off_topic.Message(message.Message)), 324 322 self: Subject( 325 - server_component.ClientMessage(off_topic.Message(model_type.Msg)), 323 + server_component.ClientMessage(off_topic.Message(message.Message)), 326 324 ), 327 325 ) 328 326 } 329 327 330 328 type LuminaServerComponentSocketMessage = 331 - server_component.ClientMessage(off_topic.Message(model_type.Msg)) 329 + server_component.ClientMessage(off_topic.Message(message.Message)) 332 330 333 331 fn init_component_socket( 334 332 _: ewe.WebsocketConnection, ··· 338 336 Selector(LuminaServerComponentSocketMessage), 339 337 ) { 340 338 let assert Ok(component) = 341 - lustre.start_server_component(lumina_client.app(), Nil) 339 + lustre.start_server_component( 340 + lumina_client.app(todo as "Update function goes here"), 341 + Nil, 342 + ) 342 343 let self = process.new_subject() 343 344 let selector = 344 345 process.new_selector()