While technically a working chat, it's more of an Area69 testing ground.
While web technologies have advanced,
this project cannot use most of them for
technical & ethos-driven reason. ¯_(ツ)_/¯
Tor uses the enterprise edition of Firefox
Firefox has some important stuff
Chrome doesn't have & visa versa( Scroll driven animations )
Can't use Fonts , SVGs , HTTPS
-> No one implements HTTP2/3 for
HTTP so 5 - 6 connection limit 💀-> Back to good old optimization
Spritemaps
Inline everything
Manual procedural loading
Mechanics I have learned , found or created.
Framed Buttons
Every 'button' is an iframe containing a link / button
content where the link redirects the iframe to itself
and the backend recognizes the request as a click
if it has a parameter in the url.
Double Framed Buttons
Moving a framed buttons content below the iframe
into the parent context reduced the amount of requests ,
data & loading time spent on each click + no icon flickering.
Inline Frames
Using the
srcdocattribute , the initial rendered
content of an iframe can be set in a stringified form
which can save on requests + load time-> Works great together with framed buttons
-> No need for unique parameter in link hrefDynamic Frames
Using a kept alive connection + chunked encoding ( HTTP1.1 )
or just HTTP2/3 one can continually send data to a client.The browser parses every chunk and appends it to the
existing page , which allows to send server -> client
updates without any use of JavaScript.CSS Sparks
Using the loading behavior of resources linked
in CSS rules allows to send cheap client events.A resource is only loaded when the rule is in scope ,
thus a hover rule only calls the server when the user
hovers over the element.-> Request = Event
-> Linked resources are cached -> Cache Busting required
-> Always needs an opposite event -> Unhover <-> Hover
( Can't send same css rule as it will activate immediately )Data URIs
Using data URIs with modern image formats such as
webp makes for a great initial loading experience!-> Useful for double framed icon buttons
-> Useful for initial thumbnail image

