[{"timestamp":"2026-10-13T05:22:20Z","commit_sha":"0022f3be04fa1e0b8900cb575e6113fae3d30120","commit_message":"docs: describe the one-declaration-per-class pipeline; check EH tables\n\nclasswork.py check also compares a function's exception tables and a\nfunction known by an alias under its address's name.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":11.802211,"total_code":5136216,"matched_code":576810,"matched_code_percent":11.230252,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":23924,"matched_functions":7980,"matched_functions_percent":33.355625,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":6490,"complete_units":0}},{"timestamp":"2026-10-13T00:16:08Z","commit_sha":"6817d45ef7229f3b5354d674b8335e34ab2b1763","commit_message":"docs: record batch y1, Haiku at 20 then 64 workers\n\nagent-workflow.md has the batch: the t3-match workflow on 80 to 319\nbytes, what 270 workers matched and cost, the rate at each width, how\nthe queue was closed so nobody was cut off, and the checkpoint's order.\nThe handoff and decomp-dev.md have the new counts (7,508 functions in\nsrc/, 7,983 of 12,370 game functions at 100%, 22.27% of the code) and\nwhat the queue holds now.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":11.80219,"total_code":5136226,"matched_code":576980,"matched_code_percent":11.23354,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":23925,"matched_functions":7983,"matched_functions_percent":33.36677,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":6709,"complete_units":0}},{"timestamp":"2026-10-11T06:17:52Z","commit_sha":"8584eb9fffe3526e3fcfa8570a41741dcf83fc1a","commit_message":"refactor(decomp): name 19 classes, 181 methods and 85 fields\n\nThe first Haiku naming wave took the classes with an Xbox twin first:\nSoundSchema, cGlobalDataManager, cActorManager, CadenceManager,\nSoundSimulator, cT3Camera, cHighlightMgr, the conversation and trigger\nparameter classes, the AI states' methods and fields, and windows such\nas cT3InventoryWindow and cT3ReadBookWindow. Their headers and units take\nthe names. The base serialize 0x10BE4EF0 keeps its placeholder: named\nlike its overrides, it clashed with them in the classes that model it as\ntheir own. The report has the same 7,260 functions at 100%; 775 matched\nfunctions now have a name and a named class.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.871391,"total_code":5135046,"matched_code":481638,"matched_code_percent":9.37943,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":23807,"matched_functions":7260,"matched_functions_percent":30.495232,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":6247,"complete_units":0}},{"timestamp":"2026-10-11T03:59:21Z","commit_sha":"43a6d3dde1208a9222b98d8f9f172a955a584ba4","commit_message":"docs: record batch w11, 20 Haiku workers on 160 to 319 bytes\n\nagent-workflow.md has the batch: 388 Haiku workers 20 at a time, 609\nmatches and what they cost, the naming pass, and what it taught (the\ngame's link-time code generation and what workers mistook for it, nested\ncalls that split their pushes either way, the STL in game ranges, C names\nwith one underscore). The handoff and decomp-dev.md have the new counts\n(6,878 functions in src/ in 3,642 units, 7,260 of 12,252 game functions at\n100%, 18.6% of the code) and what would unblock the most deferrals next.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.871391,"total_code":5135046,"matched_code":481638,"matched_code_percent":9.37943,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":23807,"matched_functions":7260,"matched_functions_percent":30.495232,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":6247,"complete_units":0}},{"timestamp":"2026-10-10T20:08:27Z","commit_sha":"699f57b91f957b31c83e8bc0b8ee7d046876c347","commit_message":"feat(core): declare UObject::GObjObjects\n\nsymbols.txt names the engine's object table at 0x10F3E4A0\n(?GObjObjects@UObject@@2V?$TArray@PAVUObject@@@@A), but Core.h did not\ndeclare it, so a game function reading it could not name it (a worker\ndeferred 0x10B54E00 for that). A declaration only: no function's code\nchanges.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":6.904492,"total_code":5132686,"matched_code":344001,"matched_code_percent":6.702163,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":23571,"matched_functions":6329,"matched_functions_percent":26.85079,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":5472,"complete_units":0}},{"timestamp":"2026-10-10T19:01:04Z","commit_sha":"a1702517e5e8f8539ff160d31e30d3007c42f0a8","commit_message":"feat(decomp): move 59 more units onto the class headers\n\nReconciliation workers moved 14 units onto their classes' headers (16\nunit and class pairs) by naming members as the headers do.\nClass_10BFBD70.h lacked the method the class is named after\n(FUN_10bfbd70(int), defined at 0x10BFBD70 and called from about a hundred\nunits): with it, and 11 headers for classes whose units now agree, the\nnext headers.py run moved 46 units, one of them a worker's. 2,975 classes\nhave a header; 2,666 declarations in 868 classes are still the units' own.\nThe report moves by no function: 6,329 of 12,069 game functions.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":6.904492,"total_code":5132686,"matched_code":344001,"matched_code_percent":6.702163,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":23571,"matched_functions":6329,"matched_functions_percent":26.85079,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":5472,"complete_units":0}},{"timestamp":"2026-10-10T16:43:20Z","commit_sha":"bcf778fe80fa02e0e26a7ab6472843589765ce0a","commit_message":"feat(decomp): name 320 constructors and declare FStringNoInit and ~TArray out of line\n\nConstructors that earlier batches recorded as methods returning this\n(`?FUN_x@C@@QAEPAV1@...Z`) now carry their constructor names\n(`??0C@@QAE@...Z`) wherever the game calls them right after operator\nnew with the new object in ecx: 319 of the 452 such methods. The method\nnames stay as aliases, so the integrated sources still match, and a\ncaller's new-expression now names its constructor.\n\nCore.h declares FStringNoInit's constructor out of line (0x10AF8A50:\nit builds the array with the memory tag \"FStringNoInit\"), and the ten\nunits that stood in for it with Class_10AF8A50 use it. TArray<T>\ndeclares its destructor out of line, as the game calls its instances.\nNeither change moves any function in the report.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":6.904492,"total_code":5132686,"matched_code":344001,"matched_code_percent":6.702163,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":23571,"matched_functions":6329,"matched_functions_percent":26.85079,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":5472,"complete_units":0}},{"timestamp":"2026-10-10T07:17:48Z","commit_sha":"10de55abb0d38fabdff889e38ad710ffcf8387a0","commit_message":"docs: record batch w10, 20 Haiku workers\n\nagent-workflow.md has the batch: 156 Haiku workers 20 at a time, the\nper-band rates and token costs, what the naming pass and dtors.py added,\nthe worker.md rules that paid off, and the STL code the classifier still\ncalls game in the 80-to-159-byte band. The handoff and decomp-dev.md\nhave the new counts (6,107 functions in src/ in 2,985 units, 6,329 of\n12,069 game functions at 100%, 13.3% of the code).\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":6.904492,"total_code":5132686,"matched_code":344001,"matched_code_percent":6.702163,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":23571,"matched_functions":6329,"matched_functions_percent":26.85079,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":5472,"complete_units":0}},{"timestamp":"2026-10-10T04:18:41Z","commit_sha":"764c7c96311d7417de45045d610eafa1d33f2c2a","commit_message":"docs: record the Haiku test swarms and dtors.py matched\n\nagent-workflow.md has both Haiku tests (8 workers each on batch w7's\nbands, before and after the foundation fixes) against batch w7's\nSonnet workers, and the new dtors.py matched mode. The handoff has the\ncounts (5,575 functions in src/ in 2,615 units, 5,744 of 12,039 game\nfunctions at 100%, 11.2% of the code) and the queue left by band.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":5.852249,"total_code":5131996,"matched_code":291762,"matched_code_percent":5.685157,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":23502,"matched_functions":5744,"matched_functions_percent":24.440474,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":5024,"complete_units":0}},{"timestamp":"2026-10-10T03:48:07Z","commit_sha":"2a33fefd912c51f3c78ff146ad5b35cd898b8d69","commit_message":"feat(decomp): match 75 more of Ion Storm's functions\n\nThe Haiku test swarm's 43 matches, then what it showed blocked the\nrest. 0x10A744B0 and 0x10A6ADF0 are the folded deleting and implicit\ndestructors of the eleven classes derived from Class_10E67938 that\ndeclare no destructor of their own: named so (??_GClass_10E6BB88,\n??1Class_10E6BB88, the others as aliases), they let three of those\nclasses' constructors match. A naming pass over every deferral (6),\nthe deleting destructors the new dtors.py matched mode reaches (23)\nand the plan's (1) did the rest. Two STL instances the workers found\n(std::copy_backward, a vector push_back body) are excluded and in\ninstances.txt.\n\nThe report counts 5,695 of 12,036 game functions, 11.1% of the code.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":5.7819695,"total_code":5131946,"matched_code":288355,"matched_code_percent":5.6188235,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":23497,"matched_functions":5695,"matched_functions_percent":24.237137,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":4982,"complete_units":0}},{"timestamp":"2026-10-03T06:19:18Z","commit_sha":"59b578892fe148d858ffee2e33241e506510f492","commit_message":"docs: record the end of batch w7\n\nagent-workflow.md has the batch (105 workers: Sonnet on 32 to 159\nbytes, Opus from 160; 552 matched) and what the library checks found.\nThe handoff has the counts (5,454 functions in src/ in 2,543 units,\n5,616 of 12,029 game functions at 100%, 10.9% of the code, 0.22 MB\nstill unclassified), the queue left by band and where the batch\nstopped. It also corrects 81bc502's account of the std::list members\ntaken out of src/: workers, one stamp and the lead's retries had\nmatched them, not the family stamper alone.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":5.6781087,"total_code":5131856,"matched_code":283675,"matched_code_percent":5.527727,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":23488,"matched_functions":5616,"matched_functions_percent":23.910082,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":4935,"complete_units":0}},{"timestamp":"2026-10-02T21:31:22Z","commit_sha":"87cc3781236e2804f2dddb859f474d0fd4f519f3","commit_message":"docs: record batch w5's counts and the vtable naming\n\nThe handoff and decomp.dev pages take the new report (4,245 of 12,248\ngame functions, 7.3%; 4,320 functions in src/, 75 of them under 100% in\nobjdiff's report). The handoff's matching steps record the vtable naming\nand what it leaves (deferrals still on placeholder chains, classes\noutside classes.txt, dtors.py) and the two STL members taken out of\nsrc/.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":3.8770304,"total_code":5131644,"matched_code":192397,"matched_code_percent":3.7492275,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":23412,"matched_functions":4245,"matched_functions_percent":18.131727,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":3880,"complete_units":0}},{"timestamp":"2026-10-02T19:01:07Z","commit_sha":"12cfeeefba16850de62404383a217694a4fbc529","commit_message":"feat(decomp): match 250 native class registrations of Ion Storm's classes\n\nEvery one of Ion Storm's native classes has a GetPrivateStaticClass and an\nInitializePrivateStaticClass: Unreal's statically linked IMPLEMENT_CLASS,\nwith one Ion Storm change in the getter, which allocates the UClass object\nthrough their placement operator new inside a scope of their memory\nmanager. Written from DECLARE_CLASS (classreg.py), 271 of the 272 match;\nthe 250 whose addresses categories.txt gives to the game are in\nsrc/Game/<Package>Registration.cpp, one unit per package.\n\nsymbols.txt names what the registrations call: Ion Storm's operator new\nand its placement delete (folded into ::operator delete), the UClass\nconstructor, UObject's GetInitialized, StaticConstructor and the\nInternalConstructor 22 classes share, every class's getter, initializer\nand PrivateStaticClass, the package strings, and the 14 exception handler\nstubs the getters share (each getter's name an alias).\n\nThe report's headline, Ion Storm's game code, counts 3,331 of 12,108\nfunctions, 4.9% of its bytes (from 3,082 and 2.7%); src/Game holds 3,350\nfunctions in 1,151 units.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":2.5266945,"total_code":5129958,"matched_code":72056,"matched_code_percent":1.4046118,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":23272,"matched_functions":3082,"matched_functions_percent":13.243383,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":3045,"complete_units":0}},{"timestamp":"2026-10-02T18:11:02Z","commit_sha":"02d70bbc05edfa000e5e923feb82e1cf8a145d8e","commit_message":"Merge pull request #19 from Veradictus/claude/zen-einstein-tret13\n\nFamilies stamped without a model, swarm workflow, and worker guard","measures":{"fuzzy_match_percent":1.4267726,"total_code":5129468,"matched_code":72056,"matched_code_percent":1.404746,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":23244,"matched_functions":3082,"matched_functions_percent":13.259336,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":3040,"complete_units":0}},{"timestamp":"2026-10-01T18:25:17Z","commit_sha":"9a183e20fe86bef04df5cc7a0e053d181b0dce1c","commit_message":"Merge pull request #18 from naiik21/tools/verify-fixes\n\nfix(tools): verify.py self-calls and switch labels, integrate.py literals, add sidebyside.py","measures":{"fuzzy_match_percent":1.4267726,"total_code":5129468,"matched_code":72056,"matched_code_percent":1.404746,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":23244,"matched_functions":3082,"matched_functions_percent":13.259336,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":3040,"complete_units":0}},{"timestamp":"2026-10-01T09:06:21Z","commit_sha":"fdf19889883243fbc7f13d9cf34ae263283c18b1","commit_message":"feat(decomp): match 734 functions from two more swarms of workers\n\nTwo more swarms (68 workers, 16 at once at the end, Opus on functions of 80\nbytes and more) and the lead's work between them: four naming passes\n(each blocked function's candidate names its callee and the old guess stays\nas an alias, so callers in src/ keep matching), FString's constructors,\noperators and InStr in Core.h, FVector's Normalize and operator+=, a shared\ninline for four functions that flatten and normalize a vector, the first\n/Od function, 68 wrappers returning Class_109081E0(DAT_x) matched from one\ntemplate, 16 more deleting destructors, and five deletes of void* members\ngiven a type.\n\nThe /Od units are declared by range in configure.py (UNIT_RANGES), so\nsplits.txt holds only what src/ does and the report checks the tree again.\n\nsrc/Game holds 3,100 functions in 1,143 units; the report's headline, Ion\nStorm's game code, counts 3,082 of 12,080 functions (2.7% of 2.6 MB).\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":1.4267726,"total_code":5129468,"matched_code":72056,"matched_code_percent":1.404746,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":23244,"matched_functions":3082,"matched_functions_percent":13.259336,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":3040,"complete_units":0}},{"timestamp":"2026-09-30T23:01:19Z","commit_sha":"ae82b8a9662386f2ebbc51811ede418979de5747","commit_message":"feat(decomp): match 606 more game functions\n\nThe first batch of Sonnet workers (56, twenty at a time) matched 632\nfunctions: 373 of the 400 tiny ones it took and 259 of 360 from 32 bytes.\n606 of them enter src/ after review: two transcriptions of compiler output\nwere rejected (a global object's initializer and a hand-written deleting\ndestructor), and a few wait on a header or a rename (TimeManager, an old\nplaceholder class). Field placeholders are UnknownNN throughout, as the\nprotocol names them.\n\nsrc/Game holds 1,734 functions in 413 units. The report's headline, Ion\nStorm's game code, counts 1,693 of 12,078 functions (1.0% of 2.6 MB). The\nhandoff lists what the batch left for the lead: callee names wrong in\nsymbols.txt, which block dozens of matched functions, then the gate's\naliases for folded functions and the mis-split functions.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":0.54480857,"total_code":5129414,"matched_code":26388,"matched_code_percent":0.5144447,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":23242,"matched_functions":1693,"matched_functions_percent":7.284227,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":1794,"complete_units":0}},{"timestamp":"2026-09-30T08:18:10Z","commit_sha":"f541df054e0a811c173c5ce8d83adb7c60302c56","commit_message":"fix(decomp): take Epic's, library and unclassified code out of src\n\ncategories.txt calls 414 of the matched functions something other than\nIon Storm's game code: 244 are Epic's engine (unnamed methods and helpers of\nthe Engine and Core packages, the drivers and Window), 53 library code\n(Havok, STL helpers) and 117 unclassified. None of it is published, so they\nleave src/; the game functions that shared a unit with them were integrated\nagain, and 25 functions the named-system evidence now calls game came back.\nThe unclassified ones return once evidence shows they are Ion Storm's.\n\nsrc/Game holds 1,128 functions in 54 units. The report's headline, Ion\nStorm's game code, counts 1,107 of 12,078 functions (0.463% of 2.6 MB).\nThe handoff records the new state.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":0.25183755,"total_code":5129414,"matched_code":12200,"matched_code_percent":0.23784393,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":23242,"matched_functions":1107,"matched_functions_percent":4.7629294,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":1123,"complete_units":0}},{"timestamp":"2026-09-30T06:29:33Z","commit_sha":"72d0f92ec69de39a57c1289850148bb9ce7a17f9","commit_message":"docs: point the matching next steps at the game code\n\nThe handoff still sent matching on to the UObject script natives, which\nare Epic's engine and no longer matched. It now records the per-object\nunits and makes telling Epic's code from Ion Storm's the first matching\nstep: until then the report's headline counts the engine too.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":0.35103044,"total_code":5324477,"matched_code":17328,"matched_code_percent":0.3254404,"total_data":1845836,"matched_data":0,"matched_data_percent":0,"total_functions":40837,"matched_functions":1503,"matched_functions_percent":3.680486,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":1145,"complete_units":0}},{"timestamp":"2026-09-30T04:55:30Z","commit_sha":"524b9b3c2f3bc0a842f5ce857a4c642341fcd0d3","commit_message":"Merge pull request #17 from Veradictus/claude/keen-ramanujan-g6qnld\n\nfix: repair the launcher type check and the docs deploy","measures":{"fuzzy_match_percent":0.39280963,"total_code":5324477,"matched_code":19021,"matched_code_percent":0.35723698,"total_data":1845836,"matched_data":0,"matched_data_percent":0,"total_functions":40837,"matched_functions":1544,"matched_functions_percent":3.780885,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":2124,"complete_units":0}},{"timestamp":"2026-09-30T04:31:26Z","commit_sha":"f6775002d5f077a9bfb3c252c948d56409f39b64","commit_message":"feat(decomp): match 1,538 more functions\n\n1,595 functions of T3Main.exe now compile byte for byte from src/, up\nfrom 57. Haiku and Sonnet sub-agents matched them under the tiered\nworkflow (docs/agent-workflow.md), about 80 came from the lead's\ntemplates, and every one passed the gate and was checked again in its\nunit at integration. Free functions sit in Game/Unsorted_<start>.cpp by\nauto unit of the split, members in per-class units.\n\ninclude/Core/Core.h gains what the matches needed: TArray, UStruct::Script,\nFFrame's constructor, FOutputDevice::Logf and UObject::execUndefined, with\nUClass's padding shrunk to keep ClassDefaultObject at 0xE8. symbols.txt,\nsplits.txt and units.json carry the new names, ranges and units.\n\nobjdiff's report counts 1,544 matched functions (0.357% of the code); it\nunder-counts EH frames and references into arrays (docs/matching.md).\nLibrary code stays out: MFC's CRect and an STL helper are excluded, and\nfour classes that look like Havok glue are held back for review.\nCompiler-generated deleting destructors and adjustor thunks are not\nmatched as source.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":0.39280963,"total_code":5324477,"matched_code":19021,"matched_code_percent":0.35723698,"total_data":1845836,"matched_data":0,"matched_data_percent":0,"total_functions":40837,"matched_functions":1544,"matched_functions_percent":3.780885,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":2124,"complete_units":0}},{"timestamp":"2026-09-30T00:56:36Z","commit_sha":"08187ed277a9c9676336a47f3c37af4b510832af","commit_message":"Merge pull request #16 from Veradictus/dependabot/npm_and_yarn/launcher/typescript-7.0.2\n\nbuild(deps-dev): Bump typescript from 6.0.3 to 7.0.2 in /launcher","measures":{"fuzzy_match_percent":0.04456283,"total_code":5324477,"matched_code":1676,"matched_code_percent":0.031477273,"total_data":1845836,"matched_data":0,"matched_data_percent":0,"total_functions":40837,"matched_functions":41,"matched_functions_percent":0.100399144,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":116,"complete_units":0}},{"timestamp":"2026-09-28T10:36:17Z","commit_sha":"084caa4dd3a0363f73db3defbb2c8ea214cc8a93","commit_message":"chore(launcher): release 0.2.1 (#15)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":0.04456283,"total_code":5324477,"matched_code":1676,"matched_code_percent":0.031477273,"total_data":1845836,"matched_data":0,"matched_data_percent":0,"total_functions":40837,"matched_functions":41,"matched_functions_percent":0.100399144,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":116,"complete_units":0}},{"timestamp":"2026-09-28T10:21:04Z","commit_sha":"8a815472eb500b9f0c8849647da530b3e731f758","commit_message":"feat(launcher): update outdated map exports before opening them\n\nWhen the tools changed (a launcher or T3SDK update), maps exported by the\nolder tools went on being edited, and the mismatch only showed at repack\nor install time. Map Studio now keeps the Godot side current by itself:\n\n- A map whose export format is older than the tools' (t3_maps.json's\n  export_version below formats.json's map_export) is outdated. Edit in\n  Godot and View export it again first, then import and open it; the\n  export applies its saved edits, so nothing is lost. A notice lists the\n  outdated maps, with Update all now.\n- Before Godot opens, t3map.py --project-only brings the project's viewer\n  and map editor plugin up to date, so Godot never runs an older plugin\n  than the tools that repack the maps.\n- Install repacks first when there is no patched map yet or the edits\n  changed after the last repack, so the game never gets older edits.\n\nJobs take a follow-up that runs when they succeed (the open after an\nupdate). proc::run returns a tool's output, or what it printed on failure.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":0.04456283,"total_code":5324477,"matched_code":1676,"matched_code_percent":0.031477273,"total_data":1845836,"matched_data":0,"matched_data_percent":0,"total_functions":40837,"matched_functions":41,"matched_functions_percent":0.100399144,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":116,"complete_units":0}},{"timestamp":"2026-09-28T10:21:04Z","commit_sha":"f0a4c91fc871c89e42cedf040b8b875e84522613","commit_message":"feat(launcher): update outdated map exports before opening them\n\nWhen the tools changed (a launcher or T3SDK update), maps exported by the\nolder tools went on being edited, and the mismatch only showed at repack\nor install time. Map Studio now keeps the Godot side current by itself:\n\n- A map whose export format is older than the tools' (t3_maps.json's\n  export_version below formats.json's map_export) is outdated. Edit in\n  Godot and View export it again first, then import and open it; the\n  export applies its saved edits, so nothing is lost. A notice lists the\n  outdated maps, with Update all now.\n- Before Godot opens, t3map.py --project-only brings the project's viewer\n  and map editor plugin up to date, so Godot never runs an older plugin\n  than the tools that repack the maps.\n- Install repacks first when there is no patched map yet or the edits\n  changed after the last repack, so the game never gets older edits.\n\nJobs take a follow-up that runs when they succeed (the open after an\nupdate). proc::run returns a tool's output, or what it printed on failure.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":0.04456283,"total_code":5324477,"matched_code":1676,"matched_code_percent":0.031477273,"total_data":1845836,"matched_data":0,"matched_data_percent":0,"total_functions":40837,"matched_functions":41,"matched_functions_percent":0.100399144,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":116,"complete_units":0}},{"timestamp":"2026-09-28T09:41:00Z","commit_sha":"658aad183bb8275b4803e9e52fd7055567973e30","commit_message":"fix(launcher): strip terminal colours from tool output\n\nGodot colours its import progress lines with ANSI escapes (ESC[90m ...\nESC[0m) even when its output is a pipe, and ignores NO_COLOR, so the task\npanel showed them as stray characters after a map export. Output lines now\nlose escape sequences (CSI, OSC and two- or three-character escapes) before\nthey reach the UI.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":0.04456283,"total_code":5324477,"matched_code":1676,"matched_code_percent":0.031477273,"total_data":1845836,"matched_data":0,"matched_data_percent":0,"total_functions":40837,"matched_functions":41,"matched_functions_percent":0.100399144,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":116,"complete_units":0}},{"timestamp":"2026-09-28T09:11:50Z","commit_sha":"9db619a510605dc6153f2947a19b165a60a4bbdf","commit_message":"fix(maps): say what the edits file could not save\n\nDuplicating an actor in Godot (Ctrl+D) is the natural way to add a prop,\nbut the edits file cannot add actors yet, so the plugin left the copies\nout with a warning only in its dock and the Output panel, and Map Studio\nreported \"the saved edits change no actors\" as if nothing had been done.\n\nThe plugin now counts added and removed actors under \"not_saved\" in the\nedits file (t3pack.py ignores it), and its save status says what it left\nout and what to do instead. Map Studio reads the counts: \"Nothing to\nrepack: 9 added actors are not saved\", and next to the changed actors\nwhen some were saved. The plugin self-test checks the counts.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":0.04456283,"total_code":5324477,"matched_code":1676,"matched_code_percent":0.031477273,"total_data":1845836,"matched_data":0,"matched_data_percent":0,"total_functions":40837,"matched_functions":41,"matched_functions_percent":0.100399144,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":116,"complete_units":0}},{"timestamp":"2026-09-28T08:41:45Z","commit_sha":"26160f9eeb5dde6503ae47a0b9be371d1f4c3157","commit_message":"ci: Bump the actions group across 1 directory with 9 updates (#14)\n\nBumps the actions group with 9 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [actions/checkout](https://github.com/actions/checkout) | `4` | `7` |\n| [actions/setup-python](https://github.com/actions/setup-python) | `5` | `7` |\n| [actions/upload-artifact](https://github.com/actions/upload-artifact) | `4` | `7` |\n| [actions/setup-node](https://github.com/actions/setup-node) | `4` | `7` |\n| [actions/configure-pages](https://github.com/actions/configure-pages) | `5` | `6` |\n| [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) | `4` | `5` |\n| [actions/deploy-pages](https://github.com/actions/deploy-pages) | `4` | `5` |\n| [actions/download-artifact](https://github.com/actions/download-artifact) | `4` | `8` |\n| [softprops/action-gh-release](https://github.com/softprops/action-gh-release) | `2` | `3` |\n\n\n\nUpdates `actions/checkout` from 4 to 7\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v4...v7)\n\nUpdates `actions/setup-python` from 5 to 7\n- [Release notes](https://github.com/actions/setup-python/releases)\n- [Commits](https://github.com/actions/setup-python/compare/v5...v7)\n\nUpdates `actions/upload-artifact` from 4 to 7\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v4...v7)\n\nUpdates `actions/setup-node` from 4 to 7\n- [Release notes](https://github.com/actions/setup-node/releases)\n- [Commits](https://github.com/actions/setup-node/compare/v4...v7)\n\nUpdates `actions/configure-pages` from 5 to 6\n- [Release notes](https://github.com/actions/configure-pages/releases)\n- [Commits](https://github.com/actions/configure-pages/compare/v5...v6)\n\nUpdates `actions/upload-pages-artifact` from 4 to 5\n- [Release notes](https://github.com/actions/upload-pages-artifact/releases)\n- [Commits](https://github.com/actions/upload-pages-artifact/compare/v4...v5)\n\nUpdates `actions/deploy-pages` from 4 to 5\n- [Release notes](https://github.com/actions/deploy-pages/releases)\n- [Commits](https://github.com/actions/deploy-pages/compare/v4...v5)\n\nUpdates `actions/download-artifact` from 4 to 8\n- [Release notes](https://github.com/actions/download-artifact/releases)\n- [Commits](https://github.com/actions/download-artifact/compare/v4...v8)\n\nUpdates `softprops/action-gh-release` from 2 to 3\n- [Release notes](https://github.com/softprops/action-gh-release/releases)\n- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/softprops/action-gh-release/compare/v2...v3)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: '7'\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: actions\n- dependency-name: actions/setup-python\n  dependency-version: '7'\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: actions\n- dependency-name: actions/upload-artifact\n  dependency-version: '7'\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: actions\n- dependency-name: actions/setup-node\n  dependency-version: '7'\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: actions\n- dependency-name: actions/configure-pages\n  dependency-version: '6'\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: actions\n- dependency-name: actions/upload-pages-artifact\n  dependency-version: '5'\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: actions\n- dependency-name: actions/deploy-pages\n  dependency-version: '5'\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: actions\n- dependency-name: actions/download-artifact\n  dependency-version: '8'\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: actions\n- dependency-name: softprops/action-gh-release\n  dependency-version: '3'\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: actions\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Claude <noreply@anthropic.com>","measures":{"fuzzy_match_percent":0.04456283,"total_code":5324477,"matched_code":1676,"matched_code_percent":0.031477273,"total_data":1845836,"matched_data":0,"matched_data_percent":0,"total_functions":40837,"matched_functions":41,"matched_functions_percent":0.100399144,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":116,"complete_units":0}},{"timestamp":"2026-09-28T08:41:36Z","commit_sha":"7e37726ea458236c08d81ae61047120226de5a3c","commit_message":"build(deps): Bump sha2 from 0.10.9 to 0.11.0 in /launcher/src-tauri (#7)\n\n* build(deps): Bump sha2 from 0.10.9 to 0.11.0 in /launcher/src-tauri\n\nBumps [sha2](https://github.com/RustCrypto/hashes) from 0.10.9 to 0.11.0.\n- [Commits](https://github.com/RustCrypto/hashes/compare/sha2-v0.10.9...sha2-v0.11.0)\n\n---\nupdated-dependencies:\n- dependency-name: sha2\n  dependency-version: 0.11.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\n\n* fix(launcher): hash diagnostics files by hand for sha2 0.11\n\nsha2 0.11 hashers no longer implement io::Write, and digests no longer\nimplement LowerHex.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_012wkK6tgBXC1VzhVxpd4ZuC\n\n* fix(launcher): drop an unused Play style and reformat Maps\n\nmain's launcher check fails: svelte-check flags the .hero-play .small rule\nleft behind when the Steam note was removed, and Prettier flags Maps.svelte.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_012wkK6tgBXC1VzhVxpd4ZuC\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Claude <noreply@anthropic.com>","measures":{"fuzzy_match_percent":0.04456283,"total_code":5324477,"matched_code":1676,"matched_code_percent":0.031477273,"total_data":1845836,"matched_data":0,"matched_data_percent":0,"total_functions":40837,"matched_functions":41,"matched_functions_percent":0.100399144,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":116,"complete_units":0}},{"timestamp":"2026-09-28T08:41:29Z","commit_sha":"e719930a3c22c2acf53780017ea048a3102a8d67","commit_message":"build(deps-dev): Bump @types/node from 22.20.4 to 26.6.2 in /site (#10)\n\nBumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.20.4 to 26.6.2.\n- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)\n- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)\n\n---\nupdated-dependencies:\n- dependency-name: \"@types/node\"\n  dependency-version: 26.6.2\n  dependency-type: direct:development\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Claude <noreply@anthropic.com>","measures":{"fuzzy_match_percent":0.04456283,"total_code":5324477,"matched_code":1676,"matched_code_percent":0.031477273,"total_data":1845836,"matched_data":0,"matched_data_percent":0,"total_functions":40837,"matched_functions":41,"matched_functions_percent":0.100399144,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":116,"complete_units":0}},{"timestamp":"2026-09-28T08:39:55Z","commit_sha":"cf86b187c269a5fef384f3b572d5b6a777fcab17","commit_message":"build(deps-dev): Bump typescript from 6.0.3 to 7.0.2 in /launcher (#9)\n\n* fix(launcher): drop an unused Play style and reformat Maps\n\nmain's launcher check fails: svelte-check flags the .hero-play .small rule\nleft behind when the Steam note was removed, and Prettier flags Maps.svelte.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_012wkK6tgBXC1VzhVxpd4ZuC\n\n* build(deps-dev): Bump typescript from 6.0.3 to 7.0.2 in /launcher\n\nBumps [typescript](https://github.com/microsoft/TypeScript) from 6.0.3 to 7.0.2.\n- [Release notes](https://github.com/microsoft/TypeScript/releases)\n- [Commits](https://github.com/microsoft/TypeScript/compare/v6.0.3...v7.0.2)\n\n---\nupdated-dependencies:\n- dependency-name: typescript\n  dependency-version: 7.0.2\n  dependency-type: direct:development\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\n\n* build(launcher): run svelte-check on TypeScript 7 through --tsgo\n\nsvelte-check needs TypeScript 6 installed as typescript and TypeScript 7\nas @typescript/native to use tsgo. Its generated .svelte-check/ output is\nignored by git, ESLint and Prettier.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_012wkK6tgBXC1VzhVxpd4ZuC\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: Claude <noreply@anthropic.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>","measures":{"fuzzy_match_percent":0.04456283,"total_code":5324477,"matched_code":1676,"matched_code_percent":0.031477273,"total_data":1845836,"matched_data":0,"matched_data_percent":0,"total_functions":40837,"matched_functions":41,"matched_functions_percent":0.100399144,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":116,"complete_units":0}},{"timestamp":"2026-09-28T08:31:05Z","commit_sha":"ba30d0f090f159e362e86873f8c8e3a4cd47e6bc","commit_message":"Merge pull request #12 from Veradictus/claude/project-thread-tpphpy\n\nchore(release): 0.2.0","measures":{"fuzzy_match_percent":0.04456283,"total_code":5324477,"matched_code":1676,"matched_code_percent":0.031477273,"total_data":1845836,"matched_data":0,"matched_data_percent":0,"total_functions":40837,"matched_functions":41,"matched_functions_percent":0.100399144,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":116,"complete_units":0}},{"timestamp":"2026-09-28T08:30:36Z","commit_sha":"49e86a6241a5ec9488534bc78b510333aef4f10e","commit_message":"build(deps): Bump sha1 from 0.10.7 to 0.11.0 in /launcher/src-tauri (#6)\n\n* build(deps): Bump sha1 from 0.10.7 to 0.11.0 in /launcher/src-tauri\n\nBumps [sha1](https://github.com/RustCrypto/hashes) from 0.10.7 to 0.11.0.\n- [Commits](https://github.com/RustCrypto/hashes/compare/sha1-v0.10.7...sha1-v0.11.0)\n\n---\nupdated-dependencies:\n- dependency-name: sha1\n  dependency-version: 0.11.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\n\n* fix(launcher): hex-encode SHA-1 digests for sha1 0.11\n\nsha1 0.11 digests no longer implement LowerHex.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_012wkK6tgBXC1VzhVxpd4ZuC\n\n* fix(launcher): drop an unused Play style and reformat Maps\n\nmain's launcher check fails: svelte-check flags the .hero-play .small rule\nleft behind when the Steam note was removed, and Prettier flags Maps.svelte.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_012wkK6tgBXC1VzhVxpd4ZuC\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Claude <noreply@anthropic.com>","measures":{"fuzzy_match_percent":0.04456283,"total_code":5324477,"matched_code":1676,"matched_code_percent":0.031477273,"total_data":1845836,"matched_data":0,"matched_data_percent":0,"total_functions":40837,"matched_functions":41,"matched_functions_percent":0.100399144,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":116,"complete_units":0}},{"timestamp":"2026-09-28T08:30:30Z","commit_sha":"65b4d9945a0842779961a10c07642647ef982f2e","commit_message":"fix(launcher): drop an unused Play style and reformat Maps (#13)\n\nmain's launcher check fails: svelte-check flags the .hero-play .small rule\nleft behind when the Steam note was removed, and Prettier flags Maps.svelte.\n\n\nClaude-Session: https://claude.ai/code/session_012wkK6tgBXC1VzhVxpd4ZuC\n\nCo-authored-by: Claude <noreply@anthropic.com>","measures":{"fuzzy_match_percent":0.04456283,"total_code":5324477,"matched_code":1676,"matched_code_percent":0.031477273,"total_data":1845836,"matched_data":0,"matched_data_percent":0,"total_functions":40837,"matched_functions":41,"matched_functions_percent":0.100399144,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":116,"complete_units":0}},{"timestamp":"2026-09-28T08:27:05Z","commit_sha":"bcacc7fdf7072fc3fe0acea93b6021ac9b741a24","commit_message":"build(deps-dev): Bump typescript from 6.0.3 to 7.0.2 in /site (#11)\n\nBumps [typescript](https://github.com/microsoft/TypeScript) from 6.0.3 to 7.0.2.\n- [Release notes](https://github.com/microsoft/TypeScript/releases)\n- [Commits](https://github.com/microsoft/TypeScript/compare/v6.0.3...v7.0.2)\n\n---\nupdated-dependencies:\n- dependency-name: typescript\n  dependency-version: 7.0.2\n  dependency-type: direct:development\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>","measures":{"fuzzy_match_percent":0.04456283,"total_code":5324477,"matched_code":1676,"matched_code_percent":0.031477273,"total_data":1845836,"matched_data":0,"matched_data_percent":0,"total_functions":40837,"matched_functions":41,"matched_functions_percent":0.100399144,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":116,"complete_units":0}},{"timestamp":"2026-09-28T08:24:39Z","commit_sha":"e2d1d0d4e7908519745f2bcdeb71d1f3cf0dc929","commit_message":"Merge branch 'main' of github.com:Veradictus/Thief3-Decomp","measures":{"fuzzy_match_percent":0.04456283,"total_code":5324477,"matched_code":1676,"matched_code_percent":0.031477273,"total_data":1845836,"matched_data":0,"matched_data_percent":0,"total_functions":40837,"matched_functions":41,"matched_functions_percent":0.100399144,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":116,"complete_units":0}},{"timestamp":"2026-09-28T08:14:45Z","commit_sha":"c28cd683428501a9413fbab90253b120bad48a37","commit_message":"build(deps): Update ninja requirement from >=1.11 to >=1.13.2 (#5)\n\nUpdates the requirements on [ninja](https://github.com/ninja-build/ninja) to permit the latest version.\n- [Release notes](https://github.com/ninja-build/ninja/releases)\n- [Commits](https://github.com/ninja-build/ninja/compare/v1.11.0...v1.13.2)\n\n---\nupdated-dependencies:\n- dependency-name: ninja\n  dependency-version: 1.13.2\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>","measures":{"fuzzy_match_percent":0,"total_code":5324479,"matched_code":0,"matched_code_percent":0,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":40837,"matched_functions":0,"matched_functions_percent":0,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":115,"complete_units":0}},{"timestamp":"2026-09-28T08:08:47Z","commit_sha":"b09e326e2436fc55b1962359ad858eabfe6b7e5c","commit_message":"docs: record the natives wave and where objdiff's report under-counts\n\nhandoff.md: 57 functions integrated, the first natives wave, and the next\nsteps (make the report count EH functions and array offsets, continue the\nnatives with header review). matching.md: what the waves and the EH\nfunction checked on the real split, and the two cases where objdiff's\nreport scores gate-checked functions below 100%.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":0,"total_code":5324479,"matched_code":0,"matched_code_percent":0,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":40837,"matched_functions":0,"matched_functions_percent":0,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":115,"complete_units":0}},{"timestamp":"2026-09-28T04:23:31Z","commit_sha":"dac881bf52a56a359aae537288838f88cd9344d9","commit_message":"docs: add the new sections to the site's navigation\n\nThe sidebar gains the player pages, the cookbook (collapsed under the\nmod author guide), a Game and engine group and a Decomp handbook group.\nThe nav bar gets How it works, and Decomp now opens the handbook. The\nhome page gets a How the game works feature, and the README's\ndocumentation line lists the new sections.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":0,"total_code":5324479,"matched_code":0,"matched_code_percent":0,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":40585,"matched_functions":0,"matched_functions_percent":0,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":86,"complete_units":0}},{"timestamp":"2026-09-28T03:19:37Z","commit_sha":"59f103ae8ba9d030a1e30c06c1ff76caa9aefb38","commit_message":"Merge pull request #4 from Veradictus/claude/keen-ramanujan-g6qnld\n\nModding platform: mod manager, texture packs, docs site, updater, save backups","measures":{"fuzzy_match_percent":0,"total_code":5324479,"matched_code":0,"matched_code_percent":0,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":40585,"matched_functions":0,"matched_functions_percent":0,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":86,"complete_units":0}},{"timestamp":"2026-09-28T02:53:47Z","commit_sha":"c1c3f2cbb1aeb38e7c878f4ba7d0709f3447fa22","commit_message":"feat(launcher): fit every page in the window without page scrolling\n\nAt the default 1180x760 window most pages scrolled (SDK settings by 700\npixels), and Settings and setup hid their Save and Continue buttons\nbelow the fold; at the 960x620 minimum it was worse. Every page now\nfits at both sizes. Long content (the log, the map and task lists, the\nsettings and setup fields) scrolls inside its own panel, under a page\nheader that keeps its buttons in view.\n\n- The floating task bar, which covered content and padded every page,\n  is a compact card in the sidebar; the community and documentation\n  links moved there too. Toasts moved to the bottom right.\n- Page headers put the title and buttons on one row.\n- Play: a shorter hero with the Play button inside it, the four tiles\n  in one row at every width, and a log that fills the rest, wraps long\n  lines, follows new lines unless scrolled up, and shows 200 lines.\n- Map Studio: the step strip that repeated the numbered steps is gone;\n  each step's buttons sit next to its name.\n- Mods: two columns when there is room, in load order; the redundant\n  Enabled badge and file name are gone.\n- SDK settings: one card, two columns (one at 960), under a fixed\n  Save/Revert header.\n- Smaller fixes: a missing space in \"Ready. · SDK built\", \"Clear\n  finished\" disabled when nothing has finished, task output breaks at\n  spaces, a larger toggle hit area, and a visible focus on the maps\n  filter. The browser-preview mock has realistic amounts of mods, maps\n  and settings.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>","measures":{"fuzzy_match_percent":0,"total_code":5324479,"matched_code":0,"matched_code_percent":0,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":40585,"matched_functions":0,"matched_functions_percent":0,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":86,"complete_units":0}},{"timestamp":"2026-09-28T01:30:15Z","commit_sha":"02c94ae97091df37354a6e0693c086dff149cffd","commit_message":"Merge pull request #3 from Veradictus/claude/keen-ramanujan-g6qnld\n\nLauncher UI: Yarn 4, strict TypeScript, ESLint, Prettier, Vitest","measures":{"fuzzy_match_percent":0,"total_code":5324479,"matched_code":0,"matched_code_percent":0,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":40585,"matched_functions":0,"matched_functions_percent":0,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":86,"complete_units":0}},{"timestamp":"2026-09-28T00:45:09Z","commit_sha":"8ebebe4d05b4820b00b4ed303307ab156cc9570b","commit_message":"Merge pull request #2 from Veradictus/claude/keen-ramanujan-g6qnld\n\nPublish a baseline report so decomp.dev can register the repo","measures":{"fuzzy_match_percent":0,"total_code":5324479,"matched_code":0,"matched_code_percent":0,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":40585,"matched_functions":0,"matched_functions_percent":0,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":86,"complete_units":0}}]