Chatgpt
This is a compilation of the last few days. The post was supposed to be made yesterday, but I had a complicated problem to solve and ended up not being able to post it, so here's the summary.
Modification of internal files to Vite + React, complete restructuring of the files. The idea is to facilitate maintenance, instead of leaving everything fixed in pure HTML and CSS.
Creation and addition of the game icon, that icon that appears next to the page name at the top in the tabs. I liked this image, it may change in the future, but for now it's this one.

Old:

New:


Yesterday I had some problems using Vite + React. I was generating the versions and uploading them to the server, but there were problems with the backend server located on Railway, and because of that, the improvements weren't going to production.
The complicated thing was that nowhere showed the error, not even VS Code or anything like that, because the game worked without problems on localhost. So when I went to test the changes in the mobile version, I saw that the layout wasn't updating, and I realized there was a problem somewhere.
After investigating, I saw that it was Railway, the backend server. Anyway, I had to do some rollbacks, lost some things, and had to fix it again, but now everything is fine!
The browser version is all OK:
https://horizonforge-production.up.railway.app/

Now, I'm going to focus on the mobile version; I need to analyze and fit each component correctly and effectively for use on mobile phones. The biggest challenge is the battlefield file, but things are progressing. I hope you enjoy these updates, see you next time!

Chatgpt
Esse é um compilado dos últimos dias, a postagem era para ter sido feita ontem, mas tive um problema complicado para resolver e acabou que não consegui postar, então aqui vai o resumo.

Antigo:

Novo:


Ontem tive alguns problemas em relação ao uso de vite + react, estava gerando as versões e subindo para o servidor, mas estava com problemas no servidor de backend que fica no railway e com isso, as melhorias não estavam indo para produção.
O complicado foi que nenhum lugar mostrava o erro, nem o VS Code ou coisa do tipo, porque em localhost o jogo funcionava sem problemas. Então quando fui testar as alterações da versão mobile, vi que o layout não estava atualizando, ai percebi que tinha um problema em algum lugar.
Após investigar, vi que era o railway, o servidor de backend. Enfim, tive que fazer alguns rollbacks, perdi algumas coisas e tive que arrumar novamente, mas agora está tudo certo!
Versão para navegador está tudo OK:
https://horizonforge-production.up.railway.app/

Agora, vou focar na versão mobile, preciso analisar e encaixar cada componente de uma forma correta e eficaz para o uso em celulares. O maior desafio é o arquivo referente ao campo de batalha, mas as coisas estão encaminhando. Espero que gostem dessas novidades, até a próxima!


Enter in the Horizon Forge >>Discord<<
🔥Please, consider helping by using my reference links🔥
| Post To Earn | DePIN | Win SATS | Win SATS | Have Fun To Earn |
| Publish0x | Honeygain | Slice | ZBD | Rumble Arcade |
Hey, lots of new information! I'd like to try the game, but tell me about the security when logging in with the passwords?
Thanks for the question Angeluxx! I had already noted it down to review the security with the keychain login. Since you log in using the keychain extension, it's mandatory, but you can never be too careful, so I asked Claude Code to review the code and we implemented another layer of security:
Problem fixed:
The Keychain signature was being discarded — anyone could forge a session in sessionStorage and impersonate any player.
Implemented solution (4 files):
api/server.js:
POST /api/auth/verify — receives {username, memo, signature}, retrieves the public key from the account on the Hive blockchain, cryptographically verifies that the signature matches the memo using @hiveio/dhive, and issues an HMAC-SHA256 token valid for 24 hours. Middleware Socket.io (io.use) — validates the token in the handshake of each connection and populates socket.data.username. join_queue and rejoin_match — now use socket.data.username (defined by the middleware), completely ignoring the username sent by the client.
public/js/index.js:
After the Keychain signs, it POSTs to /api/auth/verify with {username, memo, signature: resp.result}. Only saves the session in sessionStorage if the server confirms — and includes the returned token. public/js/lobby.js:
Pass auth: { token: session.token } in the socket connection. Remove username from the join_queue payload (the server no longer accepts it).
public/js/battle.js:
Pass auth: { token: window._HF_SESSION?.token } in the PvP socket connection. Remove username from the rejoin_match payload.
What to add to the .env file:
XXXXXX=a_long_random_string_here
Without this, the server generates an ephemeral secret—it works, but tokens are invalidated upon restart. With AUTH_SECRET defined, sessions survive restarts.
Nossa, não entendi nada, mas hehehe, se você diz que é seguro, é importante saber, porque segurança é super importante no Hive. Vou dar uma olhada.
via Apps from