Damn. Pensavo di postare questo prima, ma mi seccava fare tantissimo rumore per un obiettivo al di sotto del mio ideale inizialmente prefissato, quindi… ho dovuto programmare per qualche ora in più. Beh, dopo altri 2 giorni di lavoro a tempo più che pieno, ma retribuzione monetaria pari allo zero spaccato, la versione #web di #WinDog è già molto più del proof-of-concept del mese scorso… 😌

Ora ha una UI decente (al buono ci arriveremo con calma) e un backend arronzato meno, che permette di aprire stanze di chat col bot anche ad URL personalizzati, e… da diversi client insieme; vale a dire che praticamente ho, senza volerlo, implementato una chat vera a propria, anche tra utenti web diversi. In effetti volevo semplicemente rendere “riciclabili” le stanze, per preparare il server a future migliorie, ma nel farlo è uscita fuori una problematica tale che mi è quindi convenuto fare come ho fatto. Quindi, ogni client riceve un colore a caso, e un username generato dall’hash di alcuni header HTTP, e boh buffo chat anonima kek. 🤪 (Non abusatene…)

La persistenza dei messaggi la implementerò più avanti, così come utenti non-anonimi, account, o stanze private/riservate… per ora appunto è tutto pubblico, ma generato casualmente; aprendo la root del sito viene creata una nuova stanza con un UUID sicuro, e aprendo qualunque stanza viene istanziato un utente con un altro UUID (che è segreto, non è l’username). Stanza di esempio, magari se la aprite tutti insieme beccate me o qualcun altro, idk: windog.octt.eu.org/fritto-misto-019143d9bf9b7337adca0cbf2fe2efb9. 😈

Questa è una delle più potenti manifestazioni della mia #magia… Il fatto che la codebase di questo coso sia vecchia di almeno 3 anni, e che ciò che prima era un banale #bot Telegram ora è un multiforme multipiattaforma, ad un livello che altri bot in giro non ne ho visti, è già tanto, ma… questa interfaccia in particolare, che gira nel browser, ancora senza alcuno script client-side (sans-JS), è proprio lo scopo della mia esistenza, la più valorosa e autogratificante espressione dei miei poteri di puella magica!!! (Sono davvero stranamente felice.) A dire il vero, eh, oggi del JS l’ho aggiunto, ma giusto per far comportare meglio la casella di testo, sfruttando la logica del miglioramento progressivo: chi ha JavaScript funzionante nel browser avrà la textbox che si allarga e si restringe in automatico con la scrittura, e potrà inviare il messaggio facendo Ctrl+Enter, ma la #chat funge lo stesso senza. 🕷️

Comunque… che voi siate veri fan di HTML5, o che invece senza JavaScript non riusciste a combinare un accidente (maledetti #webdev moderni), concordete che è assurdo come io abbia potuto usare una #hack basata su una funzione di #HTTP e dei browser risalente al millennio scorso (!!!) per creare una live chat che funziona in #HTML puro, con addirittura meno lag di Telegram o qualsiasi cosa… Però poi bisogna cringiare per una casella di testo multilinea come si deve… E, ancora, non c’è modo di far scrollare in automatico in basso man mano che ci sono nuovi messaggi (per ovviare a quello si nota come ho scelto il male di UX minore, cioè invertire l’ordine della chat, per ora). Almeno, però, commettendo abusi sugli iFrame, due (2) problemi li ho risolti: mostrare un messaggio di errore in caso di caduta della connessione, e non far apparire la finestra come continuamente in caricamento… 🙏

https://octospacc.altervista.org/2024/08/12/wincane-con-il-web-reale/

#bot #chat #hack #HTML #HTTP #magia #sansJs #web #webdev #WinDog

wincan do be funnying - fritto misto di octospacc

Oggi dico: caspita, perché l’attuale è il postaggiobuco più grosso che io abbia mai creato. Almeno, quello che non scrivo qui in italiano lo scrivo nelle mie repo in millemila (3) linguaggi interpretati. A parte uno strumentopolo complicato che ho iniziato ieri, credo finirò domani, e posterò domai, la #programmazione sta andando alla grande per […]

fritto misto di octospacc
@didje de toute manière je désactive le plus souvent le JS de mon navigateur... #sansJS #noJS

Stavo quasi per finire la parte di base del bridging di messaggi oggi in #WinDog, che grazie alla API cross-platform che ho costruito dovrebbe in realtà essere questione di poco conto… perché si tratta di usare funzioni già esistenti per elaborare strutture dati già pronte, ma in modo diverso. Peccato che c’è qualche inconveniente per come i messaggi vengono sdoppiati, oltre al fatto che per le varie piattaforme ho ancora da implementare una marea di metodi (su tutte mancano modifica e cancellazione dei messaggi, pensa te), quindi mi sono scocciata oggi pomeriggio e ho pensato… ma quasi quasi ci vuole un bel proof-of-concept della futura versione #web del #bot, totalmente funzionante senza #JavaScript… 👽️

Beh, dopo essermi fatta distrarre da altri esperimenti in realtà ho già fatto e finito qualcosa di molto grezzo, però neanche io credevo di riuscirci a questa maniera… Il punto è che, prendendo ispirazione da github.com/kkuchta/css-only-chat (anche se io ho implementato tutto in modo molto diverso, senza la brutta #hack CSS), ho creato una live chat in HTML puro, che si aggiorna di continuo e con latenza bassissima, senza costringere a ricaricamenti della pagina, ma sfruttando il meccanismo pazzoide che ho fatto meglio a illustrare in video. Fatto al volo eh, senza manco il tempo di sistemarlo, tant’è che ci sono dei memory leak sicuri, ma questo sarà un problema dell’Octt del futuro (di domani o chissà quando). 💨️

Non so se lo lascerò ancora prima di sistemare estetica e codice, ma nel dubbio, dovrebbe stare su WinDog.octt.eu.org. Il meccanismo per cui la pagina si aggiorna senza script e senza flickering, lo spiego meglio, è fighissimo: con l’header HTTP Content-Encoding: chunked, il browser è forzato a renderizzare l’HTML senza aspettare che la connessione si chiuda; dall’altro lato, il server non termina mai la connessione (infatti c’è un loop infinito che preleva dati da una coda, e wow, quella struttura ritorna dopo appena un giorno…), inviando via via frammenti di #HTML che vengono appesi in fondo alla pagina. Stranamente, questo comportamento si vede funzionare correttamente solo collegandosi con normali browser o client TCP grezzi (netcat)… curl semplicemente si blocca, invece. E, ancora, il Content-Type deve essere esattamente text/html; charset=UTF-8, basta anche solo omettere il charset per rompere tutto! La casella di invio, invece, è banalmente dentro un iframe. Direi allora che questo è abbastanza #HTTP 1.1 per oggi… 🥰️

https://octospacc.altervista.org/2024/07/01/wincane-no-js/

#bot #chatbot #demo #hack #HTML #HTTP #JavaScript #noJs #POC #sansJs #web #WinDog

GitHub - kkuchta/css-only-chat: A truly monstrous async web chat using no JS whatsoever on the frontend

A truly monstrous async web chat using no JS whatsoever on the frontend - kkuchta/css-only-chat

GitHub