feat: detecta jogo possuido nao instalado (is_game_owned) p/ modo DLC automatico #1
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "maicon"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Detecta automaticamente, sem toggle manual, se o jogo ja e do usuario mesmo sem estar instalado, combinando 4 sinais locais do Steam por OR (appmanifest.acf, registry.vdf, localconfig.vdf, sharedconfig.vdf).
Erra para o lado de possuido (OR entre as fontes) porque tratar um jogo possuido como nao-possuido trava a execucao do jogo base.
Generated with Claude Code
Cliente: - is_activated() nao invalida por expiracao (so falta de ativacao/hardware) - check_status_cached() offline sempre mantem acesso - _on_license_verified() nao bloqueia quando invalido apenas por expiracao; banimento/revogacao/hardware diferente ainda bloqueiam Servidor: - /api/manifests/keys e _require_license aceitam status {active, expired} para chaves expiradas continuarem recebendo as manifest keys Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>O download salvava os .manifest em data_root()/.manifests (pasta unica compartilhada), mas a ativacao os procura em games/{app_id}/.manifests. Resultado: 0 manifests copiados para o depotcache -> Steam acusa "Configuracao de conteudo invalida" ao instalar. Agora o download usa output_dir=games/{app_id}, casando com a ativacao (mesmo padrao do lua_import_tab). Tambem: parse_manifests_for_gids passa a reconhecer o nome real "{depot}_{gid}.manifest" (2 partes), alem de "{app}_{depot}_{gid}". Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>Causa: repo Fairyvmos/BlankTMing publica DecryptionKey criptografada (96 bytes / 192 hex). Depot key valida do Steam = 32 bytes / 64 hex. O app injetava a key invalida no config.vdf e .lua -> Steam baixava mas nao descriptografava ("conteudo ainda criptografado"). - is_valid_depot_key(): valida 64 hex; parse_key_vdf filtra invalidas - fetch_from_github_repo: se o repo nao tem depot key valida, retorna None para o fluxo "auto" seguir para outra fonte (luagen/ryuu/hubcap) - activate_opensteamtool: ignora keys invalidas ja registradas e avisa Tambem reverte a mudanca de output_dir do download_tab: fetch_and_prepare ja aninha games/{app_id} internamente; o correto e output_dir=data_root() (a versao anterior causava aninhamento duplo). Os "0 copiados" originais eram apenas os bugs de regex + magic byte, ja corrigidos. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>Manifests no depotcache sao nomeados por depot id (447041_*.manifest), nao por app id (447040). A remocao so procurava prefixo {app_id}_, entao NUNCA removia os manifests do jogo -> ficavam orfaos no depotcache. Para jogos que o usuario JA POSSUI, esses artefatos orfaos (manifests antigos + depot keys no config.vdf) conflitam com o download legitimo do Steam: botao de pausar/retomar desabilitado e status preso em "instalando". - remove_from_steam_library agora recebe depot_ids e remove os manifests de cada depot, alem de limpar as DecryptionKey do config.vdf - vdf_manager.remove_depot_keys_from_config(): remove keys orfas - main.py passa os depot_ids do game_manager na remocao Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>Ativar um jogo que o usuario ja possui/instalou gera conflito com o download legitimo (botao travado / preso em "instalando"). Agora o app detecta o appmanifest_{app_id}.acf nas bibliotecas e avisa antes de ativar. - steam_emulator.is_game_installed(app_id): checa ACF em todas as libs - activate_opensteamtool: loga aviso e mostra toast sticky (fora de batch) recomendando instalar direto pela Steam Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>- find_install_dir_from_manifest filtrava por {app_id}_ mas manifests sao nomeados por depot id -> nunca casava (retornava Game_{app_id}). Agora varre qualquer .manifest (mesmo bug de depot-id-vs-app-id ja corrigido na remocao/deploy). Afeta todos os jogos, nao so o WD2. - GITHUB_REPOS reordenado: Auiowu e tymolu233 (keys validas 64 hex) antes do Fairyvmos (keys criptografadas, so fallback de manifests). Melhora a cobertura de jogos futuros sem depender do depotkeys.json. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>08a68a54d7toac98811da6Ao clicar "Instalar" na Steam, o alvo de unlock (WD2) ganha um appmanifest_{app_id}.acf em estado de download. is_game_installed contava a mera presenca do .acf -> caia no modo DLC -> pulava depotcache/config.vdf -> base nunca provisionado -> nao baixa/nao lanca (usuario reportou "depotcache nao copiado"). Agora so conta como instalado se StateFlags tem bit 4 (FullyInstalled) e nao bit 2 (UpdateRequired). Jogo baixando -> ativacao completa (unlock). bump 1.0.14. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>687e896dfbto9f80759680- validate_manifest: aceita o magic real dos manifests do Steam (PROTOBUF_PAYLOAD_MAGIC 0x71F617D0). Antes exigia 0x00000002 e rejeitava todos os manifests -> depotcache ficava vazio ("0 copiados"). - parse_manifests_for_gids: aceita nomes de 2 partes (depot_gid.manifest) gerados por DDM/ManifestHub/CDN, alem do formato antigo de 3 partes. - fetch_and_prepare: resultado parcial de steamcdn/depotdl (menos manifests que chaves) nao encerra mais a busca; tenta as fontes seguintes e usa o HubcapDB (manifests completos + DLCs), com fallback para o melhor parcial. - ordem automatica sem ryuu; usa apenas a chave do hubcap. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>bc8948c) ee1713bb35View command line instructions
Manual merge helper
Use this merge commit message when completing the merge manually.
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.