{"id":19125609,"url":"https://github.com/dmitmel/crosscode-version-archive-tools","last_synced_at":"2025-07-01T14:31:50.462Z","repository":{"id":95463711,"uuid":"415306913","full_name":"dmitmel/crosscode-version-archive-tools","owner":"dmitmel","description":"Toolchain for managing my personal (and private for obvious reasons) CrossCode version archive.","archived":false,"fork":false,"pushed_at":"2023-06-10T21:36:57.000Z","size":10988,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-01T15:55:11.327Z","etag":null,"topics":["crosscode"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dmitmel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-09T12:46:02.000Z","updated_at":"2021-12-25T21:36:28.000Z","dependencies_parsed_at":"2024-11-09T05:46:15.322Z","dependency_job_id":null,"html_url":"https://github.com/dmitmel/crosscode-version-archive-tools","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dmitmel/crosscode-version-archive-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmitmel%2Fcrosscode-version-archive-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmitmel%2Fcrosscode-version-archive-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmitmel%2Fcrosscode-version-archive-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmitmel%2Fcrosscode-version-archive-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dmitmel","download_url":"https://codeload.github.com/dmitmel/crosscode-version-archive-tools/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmitmel%2Fcrosscode-version-archive-tools/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262981066,"owners_count":23394459,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crosscode"],"created_at":"2024-11-09T05:36:11.638Z","updated_at":"2025-07-01T14:31:50.436Z","avatar_url":"https://github.com/dmitmel.png","language":"Python","readme":"# The CrossCode Version Archive toolchain\n\n## Useful links\n\n- \u003chttps://crosscode.gamepedia.com/Version_history\u003e\n- \u003chttps://crosscode.fandom.com/wiki/Steam_depots\u003e\n- \u003chttps://crosscode.fandom.com/wiki/Version_history_(consoles)\u003e (\u003chttps://www.youtube.com/watch?v=KfBzlzvt8RU\u003e)\n- \u003chttps://steamdb.info/app/368340/depots/\u003e\n- \u003chttps://steamdb.info/depot/368341/\u003e\n- \u003chttps://www.sqlitetutorial.net/\u003e\n\n## Instructions for myself\n\n### What to do if a new version of the game comes out\n\n(I need to automate this)\n\n1. `$ poetry run python src/manifest_downloader.py open-steamdb-pages`\n2. On each page, determine the manifest IDs (and seen-by-SteamDB dates) of the update by running the script [`extras/steamdb_extract_manifests_table.js`](extras/steamdb_extract_manifests_table.js) in the devtools console. There will most likely be two new manifests, one for the `public` branch and one for the `nwjs_old` branch. SteamDB only parses manifests on the `public` branch, so they can be easily told apart by a \"No such change\" error on the manifest from `nwjs_old`. Otherwise check file listings - new nw.js versions have a large dynamic library containing most of the Chromium code (`nw.dll`, `lib/libnw.so`) and a tiny launcher executable, older ones are compiled to a standalone executable.\n3. The script will generate YAML, paste it into the relevant sections of the [`data/input_manifests.yaml`](data/input_manifests.yaml) file for each depot.\n4. `$ poetry run python src/manifest_downloader.py update`\n5. `$ poetry run python src/manifest_downloader.py export`\n6. Record the manifest IDs of the new game version and of the updated DLCs (if any) in [`data/versions_mapping.yaml`](data/versions_mapping.yaml).\n7. `$ poetry run python src/make_wiki_tables.py`\n8. Diff file listings to see if the bundled nw.js has been, in fact, updated. If yes - update [`data/nwjs_versions.md`](data/nwjs_versions.md). Also the script [`extras/process_versions_dumper.html`](extras/process_versions_dumper.html) can be used for this.\n9. Download the 32-bit Windows version for inclusion in the version archive with [DepotDownloader](https://github.com/SteamRE/DepotDownloader/releases/latest): \\\n   `$ dotnet DepotDownloader.dll -app 368340 -depot 368341 -manifest \u003cID\u003e -username dmitmel -remember-password`\n10. Add the new version to the archive:\n    ```bash\n    version=\"X.Y.Z\"\n    cd ~/all-crosscode-versions/\n    rm -rvf assets favicon.png package.json\n    cp -rv ~/SteamGames/CrossCode/{assets,favicon.png,package.json} .\n    find assets favicon.png package.json -type f -print0 | xargs -0 chmod -v -x\n    crosslocale mass-json-format -i assets package.json\n    # Special case for 0.7.0: dos2unix assets/js/game.min.js\n    prettier assets/js/game.compiled.js \u003e| assets/js/game.formatted.js\n    git add --all\n    git commit -m \"$version\"\n    git tag \"$version\"\n    git push origin master \"$version\"\n    sync\n    ```\n    (at the time of writing the version of Prettier is 2.4.1)\n11. Upload a CrossLocalE scan:\n    ```bash\n    version=\"X.Y.Z\"\n    cd ~/crosscode/crosscode-crosslocale-scans/\n    crosslocale scan ~/all-crosscode-versions/assets/ --compact -o scan-\"$version\".json\n    git add --all\n    git commit --amend --no-edit\n    git push --force\n    ```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmitmel%2Fcrosscode-version-archive-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdmitmel%2Fcrosscode-version-archive-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmitmel%2Fcrosscode-version-archive-tools/lists"}