factoriomod-debug 2.0.14 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,1013 +1,1025 @@
1
- # Changelog
2
-
3
- [<img height='36' style='border:0px;height:36px;' src='https://az743702.vo.msecnd.net/cdn/kofi2.png?v=2' border='0' alt='Buy Me a Coffee at ko-fi.com'/>](https://ko-fi.com/X8X41IE4T)
4
-
5
- ## 2.0.14
6
- * LuaLS library package:
7
- * fix some `defines.*` types being stringified by table variant type splitting logic
8
- * preserve the group field in the base class when splitting variant types (some subtypes are not exhaustive)
9
- * fix iteration types on LuaCustomTable<K,V> and prototype dicts
10
-
11
- ## 2.0.13
12
- * VSCode:
13
- * workaround for [microsoft/vscode#302602](https://github.com/microsoft/vscode/issues/302602)
14
- * if you encounter the error `bad option: --js-flags=--nodecommit_pooled_pages` from docgen or tasks, try setting `stripjsflags` or `clear` in `factorio.tasks.execArgvOptions` in vscode options. ([#200](https://github.com/justarandomgeek/vscode-factoriomod-debug/issues/200))
15
-
16
- ## 2.0.12
17
- * LuaLS library package:
18
- * add missing `data.ThingName` types when not using prototype dumps
19
-
20
- ## 2.0.11
21
- * LuaLS library package:
22
- * improved annotation of generics on LuaCustomTable<K,V> and LuaLazyLoadedValue<T>
23
- * generate event-specific overloads for `LuaBootstrap.set_event_filter`
24
- * **Experimental:** use prototype dumps to fill in known names (vscode enable in settings: `factorio.docs.usePrototypeDumps`, cli provide dump files in args). Run factorio with `--dump-data` manually to generate the data files needed, then re-run the FMTK Factorio Version Selector with your local install to regenerate docs
25
- * various `data.ThingID` types now also have a corresponding `data.ThingName` for the union of `string` and all known specific names. Runtime `ThingID` union types have the corresponding `data.ThingName` (with `data.` prefix still) inserted as well.
26
- * `on_event` and `event_handler` distinguish event name strings between CustomEvent and CustomInputEvent
27
- * various functions which take a param table with subtypes have been split to overloads
28
- * LuaPrototypes dicts are populated with known names
29
- * in LuaPrototypes.mod_data, `data_type` is used as the LuaLS type for `data`, if set
30
- * names and types in `settings` are populated
31
- * Debugger:
32
- * `tags` in launch config to pass arbirary (small please) data to lua code as `__DebugAdapter.tags`
33
- * escape `\n` in strings when displayed
34
- * VSCode:
35
- * word-wrap locale files by default
36
- * more feedback on doc generation, especially on errors
37
-
38
- ## 2.0.10
39
- * NPM:
40
- * correct some npm package metadata errors
41
- * VSCode:
42
- * show commits since last tag in Mod Package view, if applicable
43
- * match filename pattern `**/locale/*/*.cfg` instead of just extension `.cfg` for Locale files
44
- * LuaLS library package:
45
- * added types for `math2d` library
46
- * don't prefix `defines.*` with `data.*`
47
- * fix some aux page links
48
- * Changelog LSP:
49
- * improved diagnostic rules, better recognition of some edge cases
50
- * auto-fixes can now apply across a whole file at once
51
- * Locale LSP:
52
- * update diagnostics and fixes to use the same AST-rule-based system as Changelog LSP
53
-
54
- ## 2.0.9
55
- * JSON Schema:
56
- * Added several missing types to migration schema, warn on unknown types
57
- * Tasks:
58
- * Don't escape `&` in markdown files
59
- * Use [dateformat](https://www.npmjs.com/package/dateformat) for generating changelog datestamps
60
- * `package.datestamp_format` to set the format to anything supported by `dateformat` (default `isoDate`)
61
- * named format `factorioDate` to match factorio's `dd. mm. yyyy`
62
- * LuaLS library package:
63
- * Add `feature_flags` global var for data stage (for real this time)
64
- * Fix some parent class links generated incorrectly with `.struct` suffixes
65
- * VSCode:
66
- * updated `script.dat` viewer
67
- * Sync Mod Details task now works correctly when launched from vscode
68
-
69
- ## 2.0.8
70
- * Debugger:
71
- * Add missing locale for Restart Session control
72
- * Fix incorrectly not firing Loaded Sources events when no breakpoints in file
73
- * LuaLS library package:
74
- * Fix incorrectly generating types `data.number` and `data.table` in prototype docs
75
- * Fix comments ending with a dot on the line before `storage` making the plugin not transform it into the mod specific `storage`
76
-
77
- ## 2.0.7
78
- * VSCode:
79
- * Support online-docs-only options in version selector
80
- * Active status no longer recorded in settings
81
- * Autodetected and Online-only versons need not be listed in settings to be selected
82
- * Debugger:
83
- * Fixed that debug console would attempt to use `helpers.create_profiler` to time commands in data stage
84
- * Hide `LuaEntity::crafting_speed` in factorio 2.0.56/57 due to a crash
85
-
86
- ## 2.0.6
87
- * VSCode:
88
- * Migrate extension to ESM. Requires VSCode >=1.100
89
- * Changed some required prompts to modal, so they cut through Do Not Disturb instead of appearing to do nothing
90
- * LuaLS library package:
91
- * remove `(exact)` from generated class `event_handler.events`
92
- * set `"Lua.language.fixIndent": false` by default due to bugs in LuaLS causing incorrect code deletions
93
- * `sound-util` library (#171)
94
- * `LuaObject` inherits from `userdata` (#170)
95
- * Add `feature_flags` global var for data stage
96
- * Omit `GuiStyle` from `AnyPrototype`, to reduce incorrect type deduction on data:extend's argument
97
- * `LuaObject`s now narrow on `object_name` without plugin assistance
98
- * include string builtin event name overloads for `on_event`, and fields in `event_handler.events`
99
- * add deprecation tags on defines.inventory
100
- * fix incorrectly generated type on defines.prototypes
101
- * Debugger:
102
- * fix incorrect error when remote.call is called with invalid arguments
103
- * fix incorrect nesting of values in Output events
104
- * `__DebugAdapter.restart()` api for code to request a session restart
105
- * factorio custom-input `ctrl-shift-F5` to restart session from within factorio
106
- * fix incorrect error handling when hitting and error while stepping over in data stage
107
- * JSON Schema:
108
- * Fix some regex validations to correctly match the whole value
109
- * Changelog LSP:
110
- * Complete rewrite. Improved diagnostics and auto-fixes.
111
-
112
- ## 2.0.5
113
- * Changelog LSP:
114
- * updated list of categories
115
- * warning for duplicate lines
116
- * Debugger:
117
- * fix unclear error when indexing invalid fields on some hooked API objects
118
- * fix on_event hook incorrectly erroring on Custom Input/Custom Event prototype registrations
119
-
120
- ## 2.0.4
121
- * LuaLS library package:
122
- * added types for `meld` library
123
- * corrected some types in `lualib/util` (#149)
124
- * Remove support for Factorio JSON Docs v4, v5 (Factorio < 2.0)
125
- * Update event type special cases for Factorio 2.0.24
126
- * VSCode:
127
- * add `mod-list.json` and `mod-settings.dat` activation events
128
- * partial update of `script.dat` viewer
129
- * support `onlineDocs` in Factorio Version config
130
- * JSON Schema:
131
- * add `quality` to migration schema
132
-
133
- ## 2.0.3
134
- * LuaLS library package:
135
- * display `@deprecated` message on more removed/moved apis
136
- * mark most generated classes as `@class (exact)` for more precise diagnostics
137
- * add entries for backports of `string.pack`/`unpack`/`packsize`
138
- * Debugger
139
- * removed version check when launching
140
-
141
- ## 2.0.2
142
- * LuaLS library package:
143
- * display `@deprecated` message on some removed/moved apis
144
-
145
- ## 2.0.1
146
- * LuaLS library package:
147
- * generate correct overloads for data.extend
148
- * double-update `Lua.workspace.userThirdParty` when installing to trigger a library reload even if `Lua.workspace.library` was untouched
149
- * Debugger
150
- * Fix pause after threads request when unavailable
151
-
152
- ## 2.0.0
153
- * Pre-release for Factorio 2.0
154
- * LuaLS library package:
155
- * `factorio.workspace.manageLibraryDataLinks` default changed to false, removes link when set to false
156
- * Locale
157
- * `__plural_for_parameter_x_` -> `__plural_for_parameter__x__`, new tags for 2.0
158
- * Debugger
159
- * Fix missing properties on some classes
160
-
161
- ## 1.1.47
162
- * Fix tasks broken by bundling changes
163
-
164
- ## 1.1.46
165
- * Improved Neovim setup docs (#132)
166
- * VSCode's migration to ESM interally breaks context detection and requires splitting the all-in-one bundle. Now separate bundles for cli/vscode/shared.
167
- * LuaLS library package:
168
- * Add `data.ModSettingsPrototype` types for settings stage (#137)
169
- * Add support for Factorio JSON Docs v6 (Factorio >= 2.0)
170
- * Support generating from online docs (cli only for now)
171
- * Debugger
172
- * Fix error when listing LuaObjects with `operator[]` but no `operator#`
173
- * Fix error when calling `__DebugAdapter.print(nil)`
174
-
175
- ## 1.1.45
176
- * Debugger
177
- * Don't choke on metatables with broken metatables
178
- * Add `readOnly` to `RenderOptions` for custom variable views
179
- * Locale:
180
- * Don't crash when diagnosing file with empty keys
181
- * LuaLS library package:
182
- * Remove hard-coded defines.prototype list, they're included in the json docs starting from Factorio 1.1.110
183
-
184
- ## 1.1.44
185
- * Debugger
186
- * Set `SteamAppId` when launching for `--version`
187
- * Fix Eval not available if not enough lua events running
188
- * Pin GC-able values from eval results or `__DebugAdapter.print(obj)` to allow expanding (some) fields when not paused
189
- * Display the registered name of metatables, if available
190
- * Fix possible race when adjusting settings at launch
191
- * VSCode:
192
- * Check LuaLS plugin files in Check Config
193
- * Cleanup mismatched workspace links when updating `Lua.workspace.userThirdParty`
194
- * LuaLS library package:
195
- * Plugin option `--ignore` to disable the plugin for certain files or folders
196
- * Plugin option `--clusterio-modules` to enable handling clusterio requires
197
- * Note that a bug in LuaLS 3.9.3 currently prevents passing more than one argument in some workspaces
198
-
199
- ## 1.1.43
200
- * Locale:
201
- * Don't emit documentSymbols with empty names (#118)
202
- * Warn on key ending with whitespace
203
- * PropertyTree: (mod settings, etc)
204
- * Correct saving mid-length (129-254) strings
205
- * VSCode:
206
- * Use "Restart Extension Host" instead of "Reload Window" to restart the LuaLS (#119)
207
- * Trim whitespace off API keys (#117)
208
- * Set extensionDependency on LuaLS for easier installation
209
- * Debugger:
210
- * Fixed some missing captures that could cause errors if mods overwrite Lua builtins
211
- * Fixed hang when attemping to debug simulations
212
- * Use `--version` to check the binary's version instead of relying on json version
213
- * Fixed that `on_nth_tick` hook could hide errors for some incorrect calls
214
- * LuaLS library package:
215
- * Changed enums to generate typed values instead of `integer`
216
- * Generate overloads for `script.on_event`, removed plugin `on_event` module
217
- * Add Support for Factorio JSON Runtime Docs v5 (Factorio >= 1.1.108)
218
- * Remove Support for Factorio JSON Runtime Docs v3 (Factorio < 1.1.89)
219
- * Fill in `defines.prototypes` with dumped values instead of `{[string]:{[string]:0}}`
220
- * Include `.base` type in the union for `variant_parameter_groups` types
221
-
222
- ## 1.1.42
223
- * Debugger:
224
- * Display each Lua VM as a DAP "Thread"
225
- * Selectively un-set hook when not stepping and no breakpoints active in file
226
- * VSCode:
227
- * JSON Schema for migrations
228
- * Sumneko library package:
229
- * Fixed that `---@plugin disable-line` would also affect the previous lines if they had comments
230
- * Improved plugin performance by ~500%. Unfortunately this isn't really noticeable, because other parts of the LuaLS take up much more time
231
-
232
- ## 1.1.41
233
- * Sumneko library package:
234
- * correctly resolve `data-lifecycle` link in docs
235
- * Omit `MapGenPresets` from `AnyPrototype`, to reduce incorrect type deduction on data:extend's argument
236
- * Don't use `AnyPrototype` on versions that don't have it defined yet
237
-
238
- ## 1.1.40
239
- * Sumneko library package:
240
- * Generate even if some doc links are broken
241
- * Correctly mark Attributes as optional
242
- * Set Lua.workspace.checkThirdParty=ApplyInMemory to work around LuaLS's broken defaults
243
- * Improved plugin's string and comment matching correctness and performance (#113)
244
- * Added ---@plugin annotation to selectively disable parts of the plugin. Very similar to how ---@diagnostic works
245
- * Correct type for `data:extend`'s argument (using `AnyPrototype` instead of `PrototypeBase`)
246
- * Debugger:
247
- * Correctly update breakpoints when edited (conditions, log message)
248
- * Fixed that `__DebugAdapter.print()` and `log`, and logpoints would print messages with no trailing newline
249
-
250
- ## 1.1.39
251
- * VSCode:
252
- * Added commands to adjust config.ini settings (prototype cache, mouse auto capture)
253
- * Check config.ini settings in Check Config
254
- * Sumneko library package:
255
- * Correctly mark function optional table params
256
- * Fix `global` rename only being applied once per line
257
-
258
- ## 1.1.38
259
- * Debugger:
260
- * Pass `SteamAppId` environment variable instead of trying to create `steam_appid.txt`
261
- * Removed `checkGlobals` warning on newly created variables
262
- * VSCode:
263
- * Added Output channel for general logging and diagnostics
264
- * Added Check Config command (run from command pallete)
265
- * Sumneko library package:
266
- * Updated library generator remaining runtime types
267
- * Split up table types with variant_parameter_groups for better diagnostics
268
-
269
- ## 1.1.37
270
- * No longer use `keytar` which VSCode has removed.
271
-
272
- ## 1.1.36
273
- * Debugger:
274
- * Fixed that fast bytecode dumps (1.1.33) would hang on some mods (for real this time)
275
- * Sumneko library package:
276
- * Updated library generator for some runtime types (events, defines)
277
-
278
- ## 1.1.35
279
- * Debugger:
280
- * Fixed that fast bytecode dumps (1.1.33) would hang on some mods
281
- * Added support for passing environment variables via launch configuration to spawned factorio process (#95)
282
- * Sumneko library package:
283
- * Now generates prototype-api types
284
- * Disables `lowercase-global` diagnostic
285
-
286
- ## 1.1.34
287
- * Add Support for Factorio JSON Runtime Docs v4 (Factorio >= 1.1.89)
288
- * Remove Support for Factorio JSON Runtime Docs v1 and v2 (Factorio < 1.1.62)
289
-
290
- ## 1.1.33
291
- * JSON Schema:
292
- * Mod name must be >3 and <50 characters
293
- * Tasks:
294
- * Calculate changelog date only once
295
- * Sumneko plugin:
296
- * Detect campaigns and tutorials for distinguishing `global`s
297
- * Added missing optional tag on various serpent options
298
- * Debugger:
299
- * Changed how lua function dumps are passed for substantial speedup in data stage (~3x for `base`)
300
-
301
- ## 1.1.32
302
- * Debugger:
303
- * Fixed error when attempting to map paths for zipped mods when zip handling not ready
304
-
305
- ## 1.1.31
306
- * VSCode:
307
- * Fixed profiler path mapping
308
- * Fixed running Debugger in external process
309
-
310
- ## 1.1.30
311
- * Debugger:
312
- * Fixed catching pcall/xpcall caught errors in settings & data stage
313
- * Adjust breakpoints at end of file back to last active line
314
- * Fixed some output events from lua not being emitted correctly
315
- * VSCode:
316
- * Don't try to auto-detect attached debugger to debug forked processes (false positive on some systems)
317
-
318
- ## 1.1.29
319
- * CLI:
320
- * Added `fmtk settings unset` to remove a mod setting
321
- * Various commands now set exitcode 1 when exiting with an error
322
- * Changelog:
323
- * Fixed some CodeActions providing incorrect fix edits
324
- * Debugger:
325
- * Abort launch when enabling `debugadapter` mod fails
326
- * Correctly supports DAP clients using `path` path format instead of `uri`
327
- * Sumneko plugin:
328
- * Include `__modname__` tag when ingoring commands at start of line
329
- * Strip file extension from slashed `require` paths to better match Factorio's resolution
330
- * VSCode:
331
- * Migrate Mod Portal API key from VSCode key storage to `keytar` for consistent behavior across packages
332
- * Ignore key storage if key is set in environment
333
- * Custom Editor for `mod-settings.dat`
334
- * Re-check if active version is Steam before launching debug
335
- * Experimental Read-only Editor for `script.dat` (saved `global` data)
336
- * Plain lua values should all load correctly, but not all LuaObject types have been tested.
337
-
338
- ## 1.1.28
339
- * Debugger:
340
- * Fixed some cases where mods could clobber builtins that debugger relies on
341
- * Fixed breakpoint validation incorrectly moving breakpoints from valid locations
342
-
343
- ## 1.1.27
344
- * Tasks:
345
- * Fix PATH variable separator used on non-windows when adding `fmtk` from extension for scripts
346
- * added `fmtk details` to update mod details and gallery from info.json, readme.md, faq.md
347
- * CLI tasks store api key in OS keychain if available
348
- * Locale:
349
- * Various TextMate grammar tweaks
350
- * New AST-based parser for more accurate LSP features
351
- * Mod Manager:
352
- * `fmtk mod install` can now download from portal
353
- * Debugger:
354
- * Moved `modsPath` deduction from environment from extension to common DAP code
355
- * Fixed conditional breakpoints not skipping correctly
356
- * Fixed display of fetchable functions on LuaObjects with json v3
357
- * Breakpoints now start unverified until the file is loaded
358
- * Disassembly now formats instruction raw bytes with leading zeros
359
- * Use `console` type Output Events for messages printed from debugger internals
360
- * Profiler:
361
- * Fixed some instances of profiler UI not being created/disposed correctly
362
- * Sumneko plugin:
363
- * Ignore `/c`, `/command`, `/sc`, etc at start of a line
364
-
365
- ## 1.1.26
366
-
367
- * Fixed debugadapter mod package bundled incorrectly (for real this time)
368
- * Fixed require of a removed file
369
-
370
- ## 1.1.25
371
-
372
- * Fixed debugadapter mod package bundled incorrectly
373
-
374
- ## 1.1.24
375
-
376
- * Sumneko 3rd party library package:
377
- * Generated docs are no longer in workspace, instead a 3rd party library package is built in workspace-storage to reduce clutter and better support multi-root workspaces. Note this will not automatically clean up the old files/settings you may have had, to avoid clobbering any customizations.
378
- * Includes [FactorioSumnekoLuaPlugin](https://github.com/JanSharp/FactorioSumnekoLuaPlugin) automatically
379
- * Includes some additional static library files for `serpent`, `mod-gui`, `util`, etc
380
- * Additional tweaks to libraries (`math`, `package`, `debug`, etc...) to reflect factorio's changes to Lua builtin libraries
381
- * Generated docs now use `@enum` tags for `defines`
382
- * Removed generated type aliases for bare event names. Use `EventData.eventname` instead (introduced 1.1.16).
383
- * Callable classes now use `@overload` tags
384
- * Locale:
385
- * Added syntax highlighting for `__FLUID__name__`, and move/click controls
386
- * Added snippet for `__FLUID__name__`
387
-
388
- ## 1.1.23
389
-
390
- * Fixed library management incorrectly truncating the end of the array
391
- * Convert Locale and Changelog support to LSP
392
- * Small DAP protocol fixes
393
- * Go To Definition and Completion support for locale keys in Lua
394
- * Fixed an issue where preparing debug views of a table could inadvertantly cause it to rehash ("invalid key to next" when iterating while deleting)
395
- * Tasks all converted to standalone processes:
396
- * No longer automatically runs `compile` tasks before debug session. Use `preLaunchTask` if you want these tasks still run.
397
- * Publish subtasks have been reordered for easier recovery from failed uploads
398
- * Default publish branch now follows the value of `git config init.defaultBranch`
399
- * Disabled `checkGlobals` in simulations by default.
400
- * Fixed an incorrect warning when unregistering/reregistering command handlers.
401
-
402
- ## 1.1.22
403
-
404
- * Add `global` back to `Lua.diagnostics.globals`
405
- * Offer to regenerate docs when they seem to be out of date
406
- * Generate operators for sumneko 3.5
407
- * Option to not generate docs when selecting a version
408
- * Bundle extension with esbuild (overall ~1/4 download size)
409
- * WIP support for running debug adapter and some mod management commands outside vscode for other editors/debug adapter clients
410
-
411
- ## 1.1.21
412
-
413
- * Support v3 json docs
414
- * Some overlay corrections to `BlueprintControlBehavior`
415
- * Automatically manage data and docs links in `Lua.workspace.library`
416
- * General cleanup of docs generator
417
- * Added command to clear saved API key
418
-
419
- ## 1.1.20
420
-
421
- * Fix some ts->js files with inconsistent file case
422
-
423
- ## 1.1.19
424
-
425
- * Added missing config definition for `factorio.workspace.library`
426
- * Support `${env:ENVVAR}` in path settings
427
- * Correctly generate `enum` concept types
428
- * Migrate API keys to secure storage from settings
429
- * Clarify prompts on manaul factorio version configuration
430
- * New default numeric type option: Use `alias` for numeric types which exactly match `number` (or `integer` if enabled), and `class` otherwise
431
-
432
- ## 1.1.18
433
-
434
- * Restored incorrectly removed definiton for `modsPath` in launch.json
435
- * Use `integer` as the base type for factorio's int builtins
436
-
437
- ## 1.1.17
438
-
439
- * Doc Generation Options:
440
- * Alias or class for specialized number types
441
- * Version for online doc links
442
- * Correctly handle no `.vscode/factorio` dir in cleanup before generation
443
- * `LuaObject` as base class for all classes, instead of union of all classes
444
- * `__debugchildren` has been replaced by `__debugcontents`
445
- * Debug console evals that return multiple results will show all results
446
-
447
- ## 1.1.16
448
-
449
- * Generate an indexed type for `defines.prototypes`
450
- * Factorio Version Selector
451
- * Generate Sumneko EmmyLua typdefs in multiple files, and automatically when switching versions
452
- * Correctly locate files in `core` and `base` when debugging
453
- * `__DebugAdapter.dumpIgnore(source:string|string[])` to disable dumping (disassembly, breakpoint validation) for specific files. This is useful for very large data files where stepping is not relevant and dumping is expensive (long hang when `require`ing the file).
454
- * Moved event data types to `EventData.eventname` type names, with (temporary) aliases from `eventname` for compatiblity
455
- * Improved generation of union and table_or_array concepts and defines types
456
- * Correctly locate files in user scenarios
457
- * Removed `__DebugAdapter.levelPath` stub
458
-
459
- ## 1.1.15
460
-
461
- * Terminate sessions instead of hanging when failing to read JSON docs
462
- * Read correct JSON docs path on mac
463
-
464
- ## 1.1.14
465
-
466
- * Load LuaObject type data from Factorio's JSON docs for listing properties when debugging
467
- * List some property-like function on LuaObjects as fetchable properties
468
- * `__DebugAdapter.stepIgnore()` now handles both tables and functions. `__DebugAdapter.stepIgnoreAll()` has been removed.
469
- * Updated Sumneko EmmyLua typdef generator for Sumneko 3
470
-
471
- ## 1.1.13
472
-
473
- * Added `__REMARK_COLOR_BEGIN__` and `__REMARK_COLOR_END__` to locale highlighter
474
- * Publishing mods now uses the new Mod Portal Upload API.
475
-
476
- ## 1.1.12
477
-
478
- * __DebugAdapter.terminate() to end session from script
479
- * __DebugAdapter.raise_event(event,data,modname) to call event handlers directly for testing
480
- * Updated LuaObject recongition for debug views to reflect implementation detail changes in Factorio's API (no longer uses `__self`)
481
- * Don't accept `nil` filters on custom-input events
482
- * TypeDef generator now accepts Factorio Machine-Readable-Docs V2
483
- * Various disassembler view fixes
484
-
485
- ## 1.1.11
486
-
487
- * Don't offer ! and version in depencency snippets
488
- * Add overlay for tweaks to generated typedefs
489
- * Various disassembler fixes
490
- * Support "Loaded Sources" view
491
- * Significant (~2x) speedup in profiling, noise reduction on line timers
492
- * Profiler can now measure `on_load`
493
-
494
- ## 1.1.10
495
-
496
- * Correctly capture raw `remote` for debugger internal use before replacing it with wrapper
497
- * New Command "Generate Typedefs" to convert json docs to EmmyLua docs (and configure general workspace settings)
498
-
499
- ## 1.1.9
500
-
501
- * Correctly reverse-lookup `defines.inventory.artillery_wagon_ammo`
502
- * Warn when using `math.randomseed()` which is disabled in Factorio
503
- * Warn when replacing an existing event handler
504
- * Correctly handle empty `info.json` files in workspace
505
-
506
- ## 1.1.8
507
-
508
- * Mod name and title lengths are now limited to 100 characters
509
- * Correctly validate `~` unordered mod dependencies
510
- * Snippet for creating dependency entries
511
-
512
- ## 1.1.7
513
-
514
- * Fixed `failed locating source` for unpacked mods located through modsPath
515
-
516
- ## 1.1.6
517
-
518
- * Fixed steam detection on mac/linux
519
- * Additional diagnostics for failures while locating source for mods
520
-
521
- ## 1.1.5
522
-
523
- * Added `no_git_tag` option in `info.json`
524
- * Re-enabled expandable log items from `__DebugAdapter.print()`
525
- * Expand embedded expressions in printed strings as variables
526
- * Use "loose" semver parsing in various places, to handle extra leading zeros
527
- * Converted "Output" window messages to debug console output
528
- * Activate Zip Explorer extension before trying to run commands from it
529
- * Added setting `factorio.package.defaultPublishBranch`
530
-
531
- ## 1.1.4
532
-
533
- * Update class data to Factorio 1.1.12
534
- * Fixed "attempt to index local 'lastframe' (a nil value)" when calling `__DebugAdapter.breakpoint`
535
- * Use Command text as source when available
536
- * Disassemble Lua if no source is available
537
- * Correctly resolve `@__core__` paths
538
- * Fixed `script.on_event` would silently ignore filters when registering lists of events
539
-
540
- ## 1.1.3
541
-
542
- * Step-in on api access that raises events will step into handlers
543
- * Fixed "attempt to index local 'lastframe' (a nil value)" when breaking on exception
544
- * Removed break-on-exception when not running in Instrument Mode
545
- * If selected frame has a local or upval `_ENV`, evals will use it instead of the global environment
546
- * Removed Event Check
547
- * Expand functions's upvals as children in Variables view
548
- * `__DebugAdapter.levelPath` is no longer required, as it can be filled automatically from `script.level`
549
-
550
- ## 1.1.2
551
-
552
- * Show best-guess arguments for `__index` and `__newindex` in stack trace
553
- * Collect and display stacks for some api calls that can raise events
554
- * Display enum properties of LuaObjects as names from `defines.*`
555
- * Metatable field `__debugtype` to set the displayed typename of an object
556
- * Show table keys with virtual children `<key>` and `<value>` and rename with unique names
557
- * Upload task now looks for zips in the correct place when Package is configured to place them outside the mod folder
558
- * Launch option `adjustModSettings` to update/clear mod settings before launching a debug session
559
- * Don't hang when `info.json` with `null` exists in workspace
560
- * Don't set extension filter on factorioPath prompt on non-windows
561
- * Update class data to Factorio 1.1.6
562
-
563
- ## 1.1.1
564
-
565
- * Fix setting breakpoints during simulations
566
-
567
- ## 1.1.0
568
-
569
- * Always use `-F -` for tags, even when empty
570
- * Fix infinite recursion when cleaning long refs
571
- * Disabled expandable log items from `__DebugAdapter.print({...})` by default due to issues with vscode debug console
572
- * Updated class data and mod for Factorio 1.1.0
573
-
574
- ## 0.18.49
575
-
576
- * Correctly highlight empty plural
577
- * Fixed crash if an on_tick handler with no argument has a LuaObject in its first temporary when building callstack
578
- * Ignore info.json in scenarios/saves
579
-
580
- ## 0.18.48
581
-
582
- * Fix error when mods replace builtin `print` incorrectly
583
-
584
- ## 0.18.47
585
-
586
- * Pretty-print mod-list.json when adjusting mods
587
- * Stricter check for LuaObjects in isUnsafeLong()
588
-
589
- ## 0.18.46
590
-
591
- * Removed Locale highlighter rule for unrecognized rich text tags
592
- * Fixed script error when setting checkEvents or checkGlobals
593
-
594
- ## 0.18.45
595
-
596
- * Capture `debug` in case someone overwites it
597
-
598
- ## 0.18.44
599
-
600
- * Reworked locale highlighter
601
- * Locale Snippets for various tags/variables
602
- * Correctly highlight locale variable `__CONTROL_MOVE__`
603
- * CodeAction to merge duplicate locale sections
604
-
605
- ## 0.18.43
606
-
607
- * Correctly include `profile-control.lua` when debugadapter itself is not hooked
608
-
609
- ## 0.18.42
610
-
611
- * Fix flamegraph not building trees correctly
612
- * Configuration options for various extra diagnostics
613
- * `postpublish` task
614
- * Open Changelog command in packages view
615
- * Eval now correctly uses the last matching local instead of the first
616
- * Rename shadowed locals in Variables view so they display correctly
617
- * Fixed not correctly differentiating multiple varRefs for the same table with `extra` property set
618
- * Mark generated variables as `virtual`
619
-
620
- ## 0.18.41
621
-
622
- * Debug console supports `__modname__` prefix while in break
623
- * Better error reporting for tasks.json tasks
624
- * Branch name configuration for Publish was not correctly applied
625
- * Timeout on queued stdin commands configurable, raised default to 2s
626
- * Restrict tasks to operate only on the latest version of a mod
627
- * Support `~` in launch.json path options
628
-
629
- ## 0.18.40
630
-
631
- * Fixed incorrect vars showing when first retreived after stopping on first stop in a lua state
632
-
633
- ## 0.18.39
634
-
635
- * Fixed incorrect vars showing when first retreived after stopping
636
-
637
- ## 0.18.38
638
-
639
- * Fixed debug session not ending when factorio closes
640
- * More consistent use of URIs for path mapping
641
- * Debug console supports `__modname__` prefix when named Lua State is available (correctly this time...)
642
-
643
- ## 0.18.37
644
-
645
- * Return original unwrapped handler from `script.get_event_handler`
646
- * Fixed various missing stepIgnores
647
- * stepIgnore and stepIgnoreAll now return the function/table passed in, for convenience
648
- * Most objects printed with `__DebugAdapter.print(obj)` will be expandable in debug console as long as the source Lua State is still active
649
- * Pause button able to break into long running code
650
- * General code cleanup
651
- * Optional arguments `upStack` and `category` on `__DebugAdapter.print()`
652
- * Debug console can be used while running - it will run in the active Lua State for settings/data or in `level` if available for control.
653
- * Correctly display and offer more color formats in locale
654
- * Task "adjustMods" can be used to reconfigure mods from vscode
655
- * Fix infinite loop in eval _ENV lookups when function outlives the eval that created it
656
- * Support vscode vars in launch.json config
657
- * Debug console supports `__modname__` prefix when named Lua State is available
658
- * Branch name for Publish is configurable
659
-
660
- ## 0.18.36
661
-
662
- * Profiler flamegraph label more reliable
663
- * Don't show flamegraph panel when tracking call trees not enabled
664
-
665
- ## 0.18.35
666
-
667
- * Profiler flamegraph works correctly on VSCode 1.48
668
-
669
- ## 0.18.34
670
-
671
- * Add locale vars `__CONTROL_STYLE_BEGIN__` and `__CONTROL_STYLE_END__` (for real this time)
672
- * Locale var `__ALT_CONTROL__` correctly matches two args
673
- * Fix breakpoints not loading initially in settings stage
674
- * Added profiler flamegraph of call trees
675
- * Profiler options to select line/function/calltree timers
676
- * `__DebugAdapter.defineGlobal(name)` to disable warning on global access
677
- * Profiler remote interface
678
-
679
- ## 0.18.33
680
-
681
- * Add locale vars `__CONTROL_STYLE_BEGIN__` and `__CONTROL_STYLE_END__`
682
- * Add options to configure created mod zip location, and automatically remove after successful publish
683
- * Detect and offer to disable prototype caching, which conflicts with part of debugger init
684
- * Added `compile` task which is run in `package` and before launching debug session
685
- * Added variable $MODNAME to git templates
686
- * Added setting "factorio.package.tagName"
687
- * Deprecated setting "factorio.package.tagVPrefix"
688
-
689
- ## 0.18.32
690
-
691
- * Updated class data to Factorio 1.0.0
692
- * Temporarily unlisted property LuaItemStack::blueprint_icons to avoid crash when reading it in Factorio 1.0.0
693
-
694
- ## 0.18.31
695
-
696
- * Allow 1.x in various compatibility version tests
697
-
698
- ## 0.18.30
699
-
700
- * Remove special case for `__self` in eval env
701
- * Support(ish) launching Factorio with a native debugger
702
-
703
- ## 0.18.29
704
-
705
- * Use `rawget` when identifying tables for inspection
706
- * Remove duplicate `@` in function descriptions
707
- * Steam support
708
-
709
- ## 0.18.28
710
-
711
- * Include factorioPath="" in initialConfigurations
712
- * Better error when calling remote interfaces or methods that don't exist
713
- * Merged Factorio Mod Packages views into one. Depending on configuration, you may need to reactivate the view after this update.
714
- * Factorio Mod Packages view has an icon when used as a standalone panel
715
- * Sorted Factorio Mod Packages view alphabetically
716
- * Correctly catch `error(nil)`
717
- * Correctly wrap `script.on_nth_tick` when given an array of ticks
718
-
719
- ## 0.18.27
720
-
721
- * More correct heuristic for attempting to translate tables as LocalisedString, gracefully handle translation failure.
722
-
723
- ## 0.18.26
724
-
725
- * Updated Mod Portal login procedure to work with the new Portal
726
-
727
- ## 0.18.25
728
-
729
- * Report errors and more detail when searching for mods for path mapping
730
-
731
- ## 0.18.24
732
-
733
- * Nicer log() hook on Factorio >= 0.18.34
734
- * Ignore Unicode BOM in Changelog files
735
- * Cleaned up path mapping between factorio/vscode
736
- * Now supports non-versioned unzipped mods
737
- * Correctly loads unzipped mods from mods from modsPath~=workspace before zipped mods
738
- * Correctly parse mod paths with __ in paths
739
- * Load only used zips when launching debug
740
- * Clear previously loaded zips before reloading
741
- * If using manual require in settings stage, it may now be needed to list debugadapter as an optional dependency to ensure Modules event is completed first. Instrument mode handles this automatically.
742
- * Updated class data to Factorio 0.18.34
743
- * Wrap new script.raise_* methods to pass call stack, matching raise_event wrapper
744
- * Don't omit source on stepIgnore stack frames
745
-
746
- ## 0.18.23
747
-
748
- * Correctly encode Infinity, -Infinity and NaN in json
749
- * Set stepIgnore on log hook functions
750
- * Support new metamethod `__debugvisualize(self)` for formatting values for [hediet.debug-visualizer](https://marketplace.visualstudio.com/items?itemName=hediet.debug-visualizer)
751
- * Debug line and visualizer for noise expressions
752
- * Warn on first assignment to undefined Lua global variables
753
-
754
- ## 0.18.22
755
-
756
- * Changed automatic zip exclusion when packaging from `**/*.zip` to `**/modname_*.zip`, to prevent excluding `blueprint.zip` in scenarios.
757
-
758
- ## 0.18.21
759
-
760
- * Fixed incorrect regex in info.json schema
761
-
762
- ## 0.18.20
763
-
764
- * Use Lua Registry to enforce certain libraries are singletons even when package.loaded is cleared in data stage
765
- * Correctly report parse errors in timed eval requests
766
- * Don't flag spaces in mod names in dependencies as errors (old mods with spaces exist)
767
- * Profile line timers now include called function time, added function timers
768
- * Incremental dumping of profile timers to reduce stutter while profiling
769
- * Reworked profile line timer coloring options
770
-
771
- ## 0.18.19
772
-
773
- * Capture `print` and `localised_print` in `profile.lua` for compatiblity with mods that overwrite them
774
- * Better calculation of profile column width
775
- * Fix an error in prior update's change to display of array-like tables
776
-
777
- ## 0.18.18
778
-
779
- * Removed StreamSplitter
780
- * On Factorio>=0.18.24, use `localised_print` to translate various output:
781
- * Error messages, including multi-line output
782
- * LocalisedStrings and LuaProfilers in Variables view
783
- * LocalisedStrings in `log` hook and `__DebugAdapter.print`
784
- * LocalisedStrings in Debug Console output or errors
785
- * Duration of Debug Console commands, timers for profiling
786
- * Alternate hook mode for live-ish profiling in control stage
787
- * Correctly identify tailcalls in `log` hook and `__DebugAdapter.print`, instead of incorrect callsite
788
- * Use a more permissive JSON schema for `info.json` inside `data`
789
- * Correctly exclude locale `info.json` files from mod/data schema
790
- * Support [hediet.debug-visualizer](https://marketplace.visualstudio.com/items?itemName=hediet.debug-visualizer), with eval context "visualize" and user-provided visualization converters
791
- * Print type of invalid objects in json
792
- * Correctly show children of tables with large gaps in array segment
793
- * Live terminal output for mod scripts in packaging tasks
794
- * Updated class data to Factorio 0.18.24
795
-
796
-
797
- ## 0.18.17
798
-
799
- * Fix `Version` task failing when symbols in `info.json` cannot be loaded
800
- * Correct order of comment syntax rules for Locale files
801
- * Show warnings for various problems in Locale files
802
- * Fixed F5 while running would queue up incorrect commands
803
- * Display `[Variables Currently Unavailable]` when variables cannot be displayed for the current stack frame
804
- * Don't pre-load mod zips when launching without debugger
805
-
806
- ## 0.18.16
807
-
808
- * Add allowDisableBaseMod to disable protection on `base` in `adjustMods`
809
- * Hook `log()` to produce Output events with clickable source links. Launch args `hookLog` and `keepOldLog` can adjust this behavior.
810
- * Error hint for missing config.ini
811
- * Launch Args to selectively install hooks in Settings, Data and per-mod in Control stage. Settings and Data now default off and must be enabled if desired, Control defaults to hook all mods.
812
- * Launch Arg factorioPath is no longer required - if absent or empty, will prompt for location
813
- * More correct handling of tables with unusual numeric keys
814
- * Follow `terminal.integrated.shell.*` and `terminal.integrated.automationShell.*` settings
815
-
816
- ## 0.18.15
817
-
818
- * SIGKILL for second attempt to kill Factorio when ending a debug session
819
- * Fix rawlen() fix incorrectly applied to LuaCustomTable
820
- * Add adjustMods and disableExtraMods to launch args
821
- * Step inside zip files with slevesque.vscode-zipexplorer
822
-
823
- ## 0.18.14
824
-
825
- * Include JSON Scheme for clusterio instances.json file
826
- * Use rawlen() in Variables views to correctly handle objects with incorrect __len metamethods
827
-
828
- ## 0.18.13
829
-
830
- * Catch rare condition in Increment Version command where no symbols are found in info.json
831
- * Correctly report missing paths in config.ini
832
- * Don't attempt to translate errors outside of events
833
- * Updated class data to Factorio 0.18.18
834
- * Correctly update level script path after path hint
835
-
836
- ## 0.18.12
837
-
838
- * Accept top level null in scenario/campaign info.json
839
- * Highlight comment and invalid lines in locale
840
- * Provide default GitLens config for changelogs
841
- * Use annotated git tags. Optionally prefix version with 'v' and include commit message.
842
- * Always include trailing slash on `--mod-directory`
843
- * Updated class data to Factorio 0.18.17
844
-
845
- ## 0.18.11
846
-
847
- * Updated class data to Factorio 0.18.13
848
- * Auto-generated git commits now set configurable author, and message templates configurable
849
- * Use `terminal.integrated.env.{platform}` settings to provide additional env vars to mod scripts
850
-
851
- ## 0.18.10
852
-
853
- * Updated Debug Adapter Protocol capabilities report
854
- * Updated class data to Factorio 0.18.12
855
-
856
- ## 0.18.9
857
-
858
- * Fix config.ini failing to auto-detect in many scenarios
859
- * Improved logging of what files are auto-detected where
860
-
861
- ## 0.18.8
862
-
863
- * Fix typo in Increment Version command label
864
- * Fix not always killing Factorio on Macs
865
- * Read config.ini for mods/data paths. Removed dataPath in launch config, added configPath. modsPath and configPath also set the corresponding command line args.
866
- * Don't recheck info.json during a debug session, only when starting a new session.
867
- * Fixed crash when running remote.call() in /c
868
- * Don't attempt to catch an exception if there is no locatable source to show it at (eg. console commands)
869
-
870
- ## 0.18.7
871
-
872
- * Correctly handle `script.on_nth_tick(nil)`
873
-
874
- ## 0.18.6
875
-
876
- * Don't add `--instrument-mod` to command line args when launching without debug
877
-
878
- ## 0.18.5
879
-
880
- * Updated class data to Factorio 0.18.10
881
- * Use Instrument Mode by default (Requires Factorio >= 0.18.10)
882
- * Force canonical-name requires for public-facing files (debugadapter.lua and variables.lua)
883
-
884
- ## 0.18.4
885
-
886
- * Added __DebugAdapter.breakpoint(mesg)
887
- * `\n` escape in locale is now `constant.character.escape.factorio-locale`
888
- * Hook `pcall` and `xpcall` and allow optionally breaking on caught exception
889
- * Use environment vars FACTORIO_PORTAL_USERNAME and FACTORIO_PORTAL_PASSWORD when not configured in settings
890
- * provide environment var FACTORIO_MODNAME and FACTORIO_MODVERSION to all mod scripts
891
- * explicitly save files edited by tasks, instead of saveAll
892
- * packages view may be moved to SCM section
893
- * fixed Package command not waiting to finish building zip before returning, which caused it to sometimes pick up edits made later by Publish
894
-
895
- ## 0.18.3
896
-
897
- * non-standard category in changelog as Hint instead of Information
898
- * Factorio 0.18.2 added LuaEntityPrototype::inserter_pickup_position and inserter_drop_position
899
- * evil translation hack to display translated LocalisedString errors
900
- * changelog linter error for line prefix with no content
901
- * remove changelog diagnostics when a file is removed
902
- * allow two-part version in info.json dependencies
903
- * automatically package and publish mods
904
-
905
- ## 0.18.2
906
-
907
- * Changelog separator line is keyword.control
908
- * correctly highlight changelog version number with only two numeric parts
909
- * changelog linter
910
- * color widget on [color=...] tags in locale
911
- * add support for proposed "Instrument Mode", disabled by default
912
- * fix incorrect link in campaign schema to scenario schema
913
- * outline for locale and changelog
914
- * improved highlighting of plurals in locale files
915
- * correctly highlight inside enclosing tags in locale
916
-
917
- ## 0.18.1
918
-
919
- * __DebugAdapter.print(notstring) will print the object's `describe` lineitem
920
- * don't trim log messages
921
- * fix debugging data stage after entrypoint changes, for real this time
922
- * JSON Schemas for info.json, description.json, server-settings.json, map-settings.json, map-gen-settings.json
923
- * Syntax highlighting for Locale *.cfg and changelog.txt files
924
- * Factorio 0.18.1 added LuaSurface::brightness_visual_weights
925
- * Keep output channel open and reuse between sessions
926
-
927
- ## 0.18.0
928
-
929
- * Update for Factorio 0.18
930
- * use `script.active_mods` to remove last dependencies on `game`. Enables stepping in control.lua main chunk and on_load, and break-on-exception in on_load. Removed various workarounds for not having this.
931
- * use LuaObject.object_name to classify objects. Detailed views of LuaStructs.
932
-
933
- ## 0.17.8
934
-
935
- * better hide frames with no available source
936
- * fix debugging data stage after entrypoint changes
937
- * allow extra args to factorio
938
- * evaluate names for most variables
939
-
940
- ## 0.17.7
941
-
942
- * stepIgnoreAll(t) function to ignore all functions in table
943
- * __DebugAdapter.print() supports `{...}` to fill varargs in string.
944
- * escape 13 in breakpoints
945
- * omit frame source for C functions in call stack
946
- * break-on-exception in most events and improved entrypoint identification
947
- * warn if mod registers probably-incomplete sets of events
948
- * jump to location in stacktrace works
949
-
950
- ## 0.17.6
951
-
952
- * correctly bracket strings ending in partial close brackets
953
- * paged display of large array-like objects
954
- * escape 26 in breakpoints
955
- * disable profiler and coverage when enabling debugadapter
956
- * disable debugadapter mod on "Run Without Debugging"
957
- * better display of custom commands and custom-input event handlers
958
- * reorder scopes in Variables window to be generally innermost to outermost
959
- * optimized remote.call hook
960
-
961
- ## 0.17.5
962
-
963
- * mark various internals as stepIgnore
964
- * binary format for breakpoints, divided up one file per command, to fit better in 250 char limit of debug.debug()
965
- * more consistently update breakpoints before resuming execution
966
-
967
- ## 0.17.4
968
-
969
- * include for loop internals in `<temporaries>` section
970
- * bring my own json to remove many dependencies on `game` object
971
- * optimizations
972
- * name `(main chunk)` in stack traces
973
- * set breakpoints earlier (still can't attach before `game` is available though)
974
- * varargs sorted into special child of Local scope, after fixed args
975
- * automatically install and enable/disable mod
976
- * works if `require`d into data or settings stage
977
- * accumulate stderr until newline, then strip debug prompts and return non-empty strings
978
- * better handling of paths
979
- * "Factorio Mod Debug" output channel listing various info about what paths it found
980
- * detect `mod-list.json` inside workspace and use its location as modsPath
981
-
982
- ## 0.17.3
983
-
984
- * don't remove leading '/' from workspace paths on non-windows
985
- * better path guess on mac
986
- * don't try to instrument remote.call during on_load
987
-
988
- ## 0.17.2
989
-
990
- * more improved escaping
991
- * search for mods inside vscode workspace first, then modsPath
992
- * top level scope for factorio `global`
993
- * filter temporaries to special child of Local scope
994
- * filter "built in" globals to special child of Global scope
995
- * fix display of eval _ENV
996
- * unquote string keys when possible in table describe
997
-
998
- ## 0.17.1
999
-
1000
- * docs improvements
1001
- * tail calls in stack trace
1002
- * provide escapes `{[}` -> `{` and `{]}` -> `}` in interpolated strings
1003
- * support condition and hitCondition in breakpoints
1004
- * improved escaping of various strings
1005
- * don't allow setting `self` (the current object) inside string interpolation for debug lineitems
1006
- * describe main chunk functions
1007
- * mask dostring full-source chunk names as "=(dostring)"
1008
- * omit numeric keys when possible in table describe
1009
- * add `__DebugAdapter.dumpBreakpoints` to manually list breapoints
1010
-
1011
- ## 0.17.0
1012
-
1013
- * Initial Release
1
+ # Changelog
2
+
3
+ [<img height='36' style='border:0px;height:36px;' src='https://az743702.vo.msecnd.net/cdn/kofi2.png?v=2' border='0' alt='Buy Me a Coffee at ko-fi.com'/>](https://ko-fi.com/X8X41IE4T)
4
+
5
+ ## 2.1.2
6
+ * Debugger:
7
+ * Now uses Factorio's native LuaDebugAdapter, removed legacy mod-based debugger
8
+ * VSCode:
9
+ * removed extension dependency on LuaLS (`sumneko.lua`) to facilitate transition to EmmyLua
10
+ * generate a `.luarc.json` file when detecting EmmyLua is installed
11
+ * Lua library package:
12
+ * various tweaks to improve EmmyLua compatibility
13
+ * Tuple types use `[T1, T2, ...]` notation
14
+ * JSON Schema:
15
+ * `+` mod dependency type for recommended mods
16
+
17
+ ## 2.0.14
18
+ * LuaLS library package:
19
+ * fix some `defines.*` types being stringified by table variant type splitting logic
20
+ * preserve the group field in the base class when splitting variant types (some subtypes are not exhaustive)
21
+ * fix iteration types on LuaCustomTable<K,V> and prototype dicts
22
+
23
+ ## 2.0.13
24
+ * VSCode:
25
+ * workaround for [microsoft/vscode#302602](https://github.com/microsoft/vscode/issues/302602)
26
+ * if you encounter the error `bad option: --js-flags=--nodecommit_pooled_pages` from docgen or tasks, try setting `stripjsflags` or `clear` in `factorio.tasks.execArgvOptions` in vscode options. ([#200](https://github.com/justarandomgeek/vscode-factoriomod-debug/issues/200))
27
+
28
+ ## 2.0.12
29
+ * LuaLS library package:
30
+ * add missing `data.ThingName` types when not using prototype dumps
31
+
32
+ ## 2.0.11
33
+ * LuaLS library package:
34
+ * improved annotation of generics on LuaCustomTable<K,V> and LuaLazyLoadedValue<T>
35
+ * generate event-specific overloads for `LuaBootstrap.set_event_filter`
36
+ * **Experimental:** use prototype dumps to fill in known names (vscode enable in settings: `factorio.docs.usePrototypeDumps`, cli provide dump files in args). Run factorio with `--dump-data` manually to generate the data files needed, then re-run the FMTK Factorio Version Selector with your local install to regenerate docs
37
+ * various `data.ThingID` types now also have a corresponding `data.ThingName` for the union of `string` and all known specific names. Runtime `ThingID` union types have the corresponding `data.ThingName` (with `data.` prefix still) inserted as well.
38
+ * `on_event` and `event_handler` distinguish event name strings between CustomEvent and CustomInputEvent
39
+ * various functions which take a param table with subtypes have been split to overloads
40
+ * LuaPrototypes dicts are populated with known names
41
+ * in LuaPrototypes.mod_data, `data_type` is used as the LuaLS type for `data`, if set
42
+ * names and types in `settings` are populated
43
+ * Debugger:
44
+ * `tags` in launch config to pass arbirary (small please) data to lua code as `__DebugAdapter.tags`
45
+ * escape `\n` in strings when displayed
46
+ * VSCode:
47
+ * word-wrap locale files by default
48
+ * more feedback on doc generation, especially on errors
49
+
50
+ ## 2.0.10
51
+ * NPM:
52
+ * correct some npm package metadata errors
53
+ * VSCode:
54
+ * show commits since last tag in Mod Package view, if applicable
55
+ * match filename pattern `**/locale/*/*.cfg` instead of just extension `.cfg` for Locale files
56
+ * LuaLS library package:
57
+ * added types for `math2d` library
58
+ * don't prefix `defines.*` with `data.*`
59
+ * fix some aux page links
60
+ * Changelog LSP:
61
+ * improved diagnostic rules, better recognition of some edge cases
62
+ * auto-fixes can now apply across a whole file at once
63
+ * Locale LSP:
64
+ * update diagnostics and fixes to use the same AST-rule-based system as Changelog LSP
65
+
66
+ ## 2.0.9
67
+ * JSON Schema:
68
+ * Added several missing types to migration schema, warn on unknown types
69
+ * Tasks:
70
+ * Don't escape `&` in markdown files
71
+ * Use [dateformat](https://www.npmjs.com/package/dateformat) for generating changelog datestamps
72
+ * `package.datestamp_format` to set the format to anything supported by `dateformat` (default `isoDate`)
73
+ * named format `factorioDate` to match factorio's `dd. mm. yyyy`
74
+ * LuaLS library package:
75
+ * Add `feature_flags` global var for data stage (for real this time)
76
+ * Fix some parent class links generated incorrectly with `.struct` suffixes
77
+ * VSCode:
78
+ * updated `script.dat` viewer
79
+ * Sync Mod Details task now works correctly when launched from vscode
80
+
81
+ ## 2.0.8
82
+ * Debugger:
83
+ * Add missing locale for Restart Session control
84
+ * Fix incorrectly not firing Loaded Sources events when no breakpoints in file
85
+ * LuaLS library package:
86
+ * Fix incorrectly generating types `data.number` and `data.table` in prototype docs
87
+ * Fix comments ending with a dot on the line before `storage` making the plugin not transform it into the mod specific `storage`
88
+
89
+ ## 2.0.7
90
+ * VSCode:
91
+ * Support online-docs-only options in version selector
92
+ * Active status no longer recorded in settings
93
+ * Autodetected and Online-only versons need not be listed in settings to be selected
94
+ * Debugger:
95
+ * Fixed that debug console would attempt to use `helpers.create_profiler` to time commands in data stage
96
+ * Hide `LuaEntity::crafting_speed` in factorio 2.0.56/57 due to a crash
97
+
98
+ ## 2.0.6
99
+ * VSCode:
100
+ * Migrate extension to ESM. Requires VSCode >=1.100
101
+ * Changed some required prompts to modal, so they cut through Do Not Disturb instead of appearing to do nothing
102
+ * LuaLS library package:
103
+ * remove `(exact)` from generated class `event_handler.events`
104
+ * set `"Lua.language.fixIndent": false` by default due to bugs in LuaLS causing incorrect code deletions
105
+ * `sound-util` library (#171)
106
+ * `LuaObject` inherits from `userdata` (#170)
107
+ * Add `feature_flags` global var for data stage
108
+ * Omit `GuiStyle` from `AnyPrototype`, to reduce incorrect type deduction on data:extend's argument
109
+ * `LuaObject`s now narrow on `object_name` without plugin assistance
110
+ * include string builtin event name overloads for `on_event`, and fields in `event_handler.events`
111
+ * add deprecation tags on defines.inventory
112
+ * fix incorrectly generated type on defines.prototypes
113
+ * Debugger:
114
+ * fix incorrect error when remote.call is called with invalid arguments
115
+ * fix incorrect nesting of values in Output events
116
+ * `__DebugAdapter.restart()` api for code to request a session restart
117
+ * factorio custom-input `ctrl-shift-F5` to restart session from within factorio
118
+ * fix incorrect error handling when hitting and error while stepping over in data stage
119
+ * JSON Schema:
120
+ * Fix some regex validations to correctly match the whole value
121
+ * Changelog LSP:
122
+ * Complete rewrite. Improved diagnostics and auto-fixes.
123
+
124
+ ## 2.0.5
125
+ * Changelog LSP:
126
+ * updated list of categories
127
+ * warning for duplicate lines
128
+ * Debugger:
129
+ * fix unclear error when indexing invalid fields on some hooked API objects
130
+ * fix on_event hook incorrectly erroring on Custom Input/Custom Event prototype registrations
131
+
132
+ ## 2.0.4
133
+ * LuaLS library package:
134
+ * added types for `meld` library
135
+ * corrected some types in `lualib/util` (#149)
136
+ * Remove support for Factorio JSON Docs v4, v5 (Factorio < 2.0)
137
+ * Update event type special cases for Factorio 2.0.24
138
+ * VSCode:
139
+ * add `mod-list.json` and `mod-settings.dat` activation events
140
+ * partial update of `script.dat` viewer
141
+ * support `onlineDocs` in Factorio Version config
142
+ * JSON Schema:
143
+ * add `quality` to migration schema
144
+
145
+ ## 2.0.3
146
+ * LuaLS library package:
147
+ * display `@deprecated` message on more removed/moved apis
148
+ * mark most generated classes as `@class (exact)` for more precise diagnostics
149
+ * add entries for backports of `string.pack`/`unpack`/`packsize`
150
+ * Debugger
151
+ * removed version check when launching
152
+
153
+ ## 2.0.2
154
+ * LuaLS library package:
155
+ * display `@deprecated` message on some removed/moved apis
156
+
157
+ ## 2.0.1
158
+ * LuaLS library package:
159
+ * generate correct overloads for data.extend
160
+ * double-update `Lua.workspace.userThirdParty` when installing to trigger a library reload even if `Lua.workspace.library` was untouched
161
+ * Debugger
162
+ * Fix pause after threads request when unavailable
163
+
164
+ ## 2.0.0
165
+ * Pre-release for Factorio 2.0
166
+ * LuaLS library package:
167
+ * `factorio.workspace.manageLibraryDataLinks` default changed to false, removes link when set to false
168
+ * Locale
169
+ * `__plural_for_parameter_x_` -> `__plural_for_parameter__x__`, new tags for 2.0
170
+ * Debugger
171
+ * Fix missing properties on some classes
172
+
173
+ ## 1.1.47
174
+ * Fix tasks broken by bundling changes
175
+
176
+ ## 1.1.46
177
+ * Improved Neovim setup docs (#132)
178
+ * VSCode's migration to ESM interally breaks context detection and requires splitting the all-in-one bundle. Now separate bundles for cli/vscode/shared.
179
+ * LuaLS library package:
180
+ * Add `data.ModSettingsPrototype` types for settings stage (#137)
181
+ * Add support for Factorio JSON Docs v6 (Factorio >= 2.0)
182
+ * Support generating from online docs (cli only for now)
183
+ * Debugger
184
+ * Fix error when listing LuaObjects with `operator[]` but no `operator#`
185
+ * Fix error when calling `__DebugAdapter.print(nil)`
186
+
187
+ ## 1.1.45
188
+ * Debugger
189
+ * Don't choke on metatables with broken metatables
190
+ * Add `readOnly` to `RenderOptions` for custom variable views
191
+ * Locale:
192
+ * Don't crash when diagnosing file with empty keys
193
+ * LuaLS library package:
194
+ * Remove hard-coded defines.prototype list, they're included in the json docs starting from Factorio 1.1.110
195
+
196
+ ## 1.1.44
197
+ * Debugger
198
+ * Set `SteamAppId` when launching for `--version`
199
+ * Fix Eval not available if not enough lua events running
200
+ * Pin GC-able values from eval results or `__DebugAdapter.print(obj)` to allow expanding (some) fields when not paused
201
+ * Display the registered name of metatables, if available
202
+ * Fix possible race when adjusting settings at launch
203
+ * VSCode:
204
+ * Check LuaLS plugin files in Check Config
205
+ * Cleanup mismatched workspace links when updating `Lua.workspace.userThirdParty`
206
+ * LuaLS library package:
207
+ * Plugin option `--ignore` to disable the plugin for certain files or folders
208
+ * Plugin option `--clusterio-modules` to enable handling clusterio requires
209
+ * Note that a bug in LuaLS 3.9.3 currently prevents passing more than one argument in some workspaces
210
+
211
+ ## 1.1.43
212
+ * Locale:
213
+ * Don't emit documentSymbols with empty names (#118)
214
+ * Warn on key ending with whitespace
215
+ * PropertyTree: (mod settings, etc)
216
+ * Correct saving mid-length (129-254) strings
217
+ * VSCode:
218
+ * Use "Restart Extension Host" instead of "Reload Window" to restart the LuaLS (#119)
219
+ * Trim whitespace off API keys (#117)
220
+ * Set extensionDependency on LuaLS for easier installation
221
+ * Debugger:
222
+ * Fixed some missing captures that could cause errors if mods overwrite Lua builtins
223
+ * Fixed hang when attemping to debug simulations
224
+ * Use `--version` to check the binary's version instead of relying on json version
225
+ * Fixed that `on_nth_tick` hook could hide errors for some incorrect calls
226
+ * LuaLS library package:
227
+ * Changed enums to generate typed values instead of `integer`
228
+ * Generate overloads for `script.on_event`, removed plugin `on_event` module
229
+ * Add Support for Factorio JSON Runtime Docs v5 (Factorio >= 1.1.108)
230
+ * Remove Support for Factorio JSON Runtime Docs v3 (Factorio < 1.1.89)
231
+ * Fill in `defines.prototypes` with dumped values instead of `{[string]:{[string]:0}}`
232
+ * Include `.base` type in the union for `variant_parameter_groups` types
233
+
234
+ ## 1.1.42
235
+ * Debugger:
236
+ * Display each Lua VM as a DAP "Thread"
237
+ * Selectively un-set hook when not stepping and no breakpoints active in file
238
+ * VSCode:
239
+ * JSON Schema for migrations
240
+ * Sumneko library package:
241
+ * Fixed that `---@plugin disable-line` would also affect the previous lines if they had comments
242
+ * Improved plugin performance by ~500%. Unfortunately this isn't really noticeable, because other parts of the LuaLS take up much more time
243
+
244
+ ## 1.1.41
245
+ * Sumneko library package:
246
+ * correctly resolve `data-lifecycle` link in docs
247
+ * Omit `MapGenPresets` from `AnyPrototype`, to reduce incorrect type deduction on data:extend's argument
248
+ * Don't use `AnyPrototype` on versions that don't have it defined yet
249
+
250
+ ## 1.1.40
251
+ * Sumneko library package:
252
+ * Generate even if some doc links are broken
253
+ * Correctly mark Attributes as optional
254
+ * Set Lua.workspace.checkThirdParty=ApplyInMemory to work around LuaLS's broken defaults
255
+ * Improved plugin's string and comment matching correctness and performance (#113)
256
+ * Added ---@plugin annotation to selectively disable parts of the plugin. Very similar to how ---@diagnostic works
257
+ * Correct type for `data:extend`'s argument (using `AnyPrototype` instead of `PrototypeBase`)
258
+ * Debugger:
259
+ * Correctly update breakpoints when edited (conditions, log message)
260
+ * Fixed that `__DebugAdapter.print()` and `log`, and logpoints would print messages with no trailing newline
261
+
262
+ ## 1.1.39
263
+ * VSCode:
264
+ * Added commands to adjust config.ini settings (prototype cache, mouse auto capture)
265
+ * Check config.ini settings in Check Config
266
+ * Sumneko library package:
267
+ * Correctly mark function optional table params
268
+ * Fix `global` rename only being applied once per line
269
+
270
+ ## 1.1.38
271
+ * Debugger:
272
+ * Pass `SteamAppId` environment variable instead of trying to create `steam_appid.txt`
273
+ * Removed `checkGlobals` warning on newly created variables
274
+ * VSCode:
275
+ * Added Output channel for general logging and diagnostics
276
+ * Added Check Config command (run from command pallete)
277
+ * Sumneko library package:
278
+ * Updated library generator remaining runtime types
279
+ * Split up table types with variant_parameter_groups for better diagnostics
280
+
281
+ ## 1.1.37
282
+ * No longer use `keytar` which VSCode has removed.
283
+
284
+ ## 1.1.36
285
+ * Debugger:
286
+ * Fixed that fast bytecode dumps (1.1.33) would hang on some mods (for real this time)
287
+ * Sumneko library package:
288
+ * Updated library generator for some runtime types (events, defines)
289
+
290
+ ## 1.1.35
291
+ * Debugger:
292
+ * Fixed that fast bytecode dumps (1.1.33) would hang on some mods
293
+ * Added support for passing environment variables via launch configuration to spawned factorio process (#95)
294
+ * Sumneko library package:
295
+ * Now generates prototype-api types
296
+ * Disables `lowercase-global` diagnostic
297
+
298
+ ## 1.1.34
299
+ * Add Support for Factorio JSON Runtime Docs v4 (Factorio >= 1.1.89)
300
+ * Remove Support for Factorio JSON Runtime Docs v1 and v2 (Factorio < 1.1.62)
301
+
302
+ ## 1.1.33
303
+ * JSON Schema:
304
+ * Mod name must be >3 and <50 characters
305
+ * Tasks:
306
+ * Calculate changelog date only once
307
+ * Sumneko plugin:
308
+ * Detect campaigns and tutorials for distinguishing `global`s
309
+ * Added missing optional tag on various serpent options
310
+ * Debugger:
311
+ * Changed how lua function dumps are passed for substantial speedup in data stage (~3x for `base`)
312
+
313
+ ## 1.1.32
314
+ * Debugger:
315
+ * Fixed error when attempting to map paths for zipped mods when zip handling not ready
316
+
317
+ ## 1.1.31
318
+ * VSCode:
319
+ * Fixed profiler path mapping
320
+ * Fixed running Debugger in external process
321
+
322
+ ## 1.1.30
323
+ * Debugger:
324
+ * Fixed catching pcall/xpcall caught errors in settings & data stage
325
+ * Adjust breakpoints at end of file back to last active line
326
+ * Fixed some output events from lua not being emitted correctly
327
+ * VSCode:
328
+ * Don't try to auto-detect attached debugger to debug forked processes (false positive on some systems)
329
+
330
+ ## 1.1.29
331
+ * CLI:
332
+ * Added `fmtk settings unset` to remove a mod setting
333
+ * Various commands now set exitcode 1 when exiting with an error
334
+ * Changelog:
335
+ * Fixed some CodeActions providing incorrect fix edits
336
+ * Debugger:
337
+ * Abort launch when enabling `debugadapter` mod fails
338
+ * Correctly supports DAP clients using `path` path format instead of `uri`
339
+ * Sumneko plugin:
340
+ * Include `__modname__` tag when ingoring commands at start of line
341
+ * Strip file extension from slashed `require` paths to better match Factorio's resolution
342
+ * VSCode:
343
+ * Migrate Mod Portal API key from VSCode key storage to `keytar` for consistent behavior across packages
344
+ * Ignore key storage if key is set in environment
345
+ * Custom Editor for `mod-settings.dat`
346
+ * Re-check if active version is Steam before launching debug
347
+ * Experimental Read-only Editor for `script.dat` (saved `global` data)
348
+ * Plain lua values should all load correctly, but not all LuaObject types have been tested.
349
+
350
+ ## 1.1.28
351
+ * Debugger:
352
+ * Fixed some cases where mods could clobber builtins that debugger relies on
353
+ * Fixed breakpoint validation incorrectly moving breakpoints from valid locations
354
+
355
+ ## 1.1.27
356
+ * Tasks:
357
+ * Fix PATH variable separator used on non-windows when adding `fmtk` from extension for scripts
358
+ * added `fmtk details` to update mod details and gallery from info.json, readme.md, faq.md
359
+ * CLI tasks store api key in OS keychain if available
360
+ * Locale:
361
+ * Various TextMate grammar tweaks
362
+ * New AST-based parser for more accurate LSP features
363
+ * Mod Manager:
364
+ * `fmtk mod install` can now download from portal
365
+ * Debugger:
366
+ * Moved `modsPath` deduction from environment from extension to common DAP code
367
+ * Fixed conditional breakpoints not skipping correctly
368
+ * Fixed display of fetchable functions on LuaObjects with json v3
369
+ * Breakpoints now start unverified until the file is loaded
370
+ * Disassembly now formats instruction raw bytes with leading zeros
371
+ * Use `console` type Output Events for messages printed from debugger internals
372
+ * Profiler:
373
+ * Fixed some instances of profiler UI not being created/disposed correctly
374
+ * Sumneko plugin:
375
+ * Ignore `/c`, `/command`, `/sc`, etc at start of a line
376
+
377
+ ## 1.1.26
378
+
379
+ * Fixed debugadapter mod package bundled incorrectly (for real this time)
380
+ * Fixed require of a removed file
381
+
382
+ ## 1.1.25
383
+
384
+ * Fixed debugadapter mod package bundled incorrectly
385
+
386
+ ## 1.1.24
387
+
388
+ * Sumneko 3rd party library package:
389
+ * Generated docs are no longer in workspace, instead a 3rd party library package is built in workspace-storage to reduce clutter and better support multi-root workspaces. Note this will not automatically clean up the old files/settings you may have had, to avoid clobbering any customizations.
390
+ * Includes [FactorioSumnekoLuaPlugin](https://github.com/JanSharp/FactorioSumnekoLuaPlugin) automatically
391
+ * Includes some additional static library files for `serpent`, `mod-gui`, `util`, etc
392
+ * Additional tweaks to libraries (`math`, `package`, `debug`, etc...) to reflect factorio's changes to Lua builtin libraries
393
+ * Generated docs now use `@enum` tags for `defines`
394
+ * Removed generated type aliases for bare event names. Use `EventData.eventname` instead (introduced 1.1.16).
395
+ * Callable classes now use `@overload` tags
396
+ * Locale:
397
+ * Added syntax highlighting for `__FLUID__name__`, and move/click controls
398
+ * Added snippet for `__FLUID__name__`
399
+
400
+ ## 1.1.23
401
+
402
+ * Fixed library management incorrectly truncating the end of the array
403
+ * Convert Locale and Changelog support to LSP
404
+ * Small DAP protocol fixes
405
+ * Go To Definition and Completion support for locale keys in Lua
406
+ * Fixed an issue where preparing debug views of a table could inadvertantly cause it to rehash ("invalid key to next" when iterating while deleting)
407
+ * Tasks all converted to standalone processes:
408
+ * No longer automatically runs `compile` tasks before debug session. Use `preLaunchTask` if you want these tasks still run.
409
+ * Publish subtasks have been reordered for easier recovery from failed uploads
410
+ * Default publish branch now follows the value of `git config init.defaultBranch`
411
+ * Disabled `checkGlobals` in simulations by default.
412
+ * Fixed an incorrect warning when unregistering/reregistering command handlers.
413
+
414
+ ## 1.1.22
415
+
416
+ * Add `global` back to `Lua.diagnostics.globals`
417
+ * Offer to regenerate docs when they seem to be out of date
418
+ * Generate operators for sumneko 3.5
419
+ * Option to not generate docs when selecting a version
420
+ * Bundle extension with esbuild (overall ~1/4 download size)
421
+ * WIP support for running debug adapter and some mod management commands outside vscode for other editors/debug adapter clients
422
+
423
+ ## 1.1.21
424
+
425
+ * Support v3 json docs
426
+ * Some overlay corrections to `BlueprintControlBehavior`
427
+ * Automatically manage data and docs links in `Lua.workspace.library`
428
+ * General cleanup of docs generator
429
+ * Added command to clear saved API key
430
+
431
+ ## 1.1.20
432
+
433
+ * Fix some ts->js files with inconsistent file case
434
+
435
+ ## 1.1.19
436
+
437
+ * Added missing config definition for `factorio.workspace.library`
438
+ * Support `${env:ENVVAR}` in path settings
439
+ * Correctly generate `enum` concept types
440
+ * Migrate API keys to secure storage from settings
441
+ * Clarify prompts on manaul factorio version configuration
442
+ * New default numeric type option: Use `alias` for numeric types which exactly match `number` (or `integer` if enabled), and `class` otherwise
443
+
444
+ ## 1.1.18
445
+
446
+ * Restored incorrectly removed definiton for `modsPath` in launch.json
447
+ * Use `integer` as the base type for factorio's int builtins
448
+
449
+ ## 1.1.17
450
+
451
+ * Doc Generation Options:
452
+ * Alias or class for specialized number types
453
+ * Version for online doc links
454
+ * Correctly handle no `.vscode/factorio` dir in cleanup before generation
455
+ * `LuaObject` as base class for all classes, instead of union of all classes
456
+ * `__debugchildren` has been replaced by `__debugcontents`
457
+ * Debug console evals that return multiple results will show all results
458
+
459
+ ## 1.1.16
460
+
461
+ * Generate an indexed type for `defines.prototypes`
462
+ * Factorio Version Selector
463
+ * Generate Sumneko EmmyLua typdefs in multiple files, and automatically when switching versions
464
+ * Correctly locate files in `core` and `base` when debugging
465
+ * `__DebugAdapter.dumpIgnore(source:string|string[])` to disable dumping (disassembly, breakpoint validation) for specific files. This is useful for very large data files where stepping is not relevant and dumping is expensive (long hang when `require`ing the file).
466
+ * Moved event data types to `EventData.eventname` type names, with (temporary) aliases from `eventname` for compatiblity
467
+ * Improved generation of union and table_or_array concepts and defines types
468
+ * Correctly locate files in user scenarios
469
+ * Removed `__DebugAdapter.levelPath` stub
470
+
471
+ ## 1.1.15
472
+
473
+ * Terminate sessions instead of hanging when failing to read JSON docs
474
+ * Read correct JSON docs path on mac
475
+
476
+ ## 1.1.14
477
+
478
+ * Load LuaObject type data from Factorio's JSON docs for listing properties when debugging
479
+ * List some property-like function on LuaObjects as fetchable properties
480
+ * `__DebugAdapter.stepIgnore()` now handles both tables and functions. `__DebugAdapter.stepIgnoreAll()` has been removed.
481
+ * Updated Sumneko EmmyLua typdef generator for Sumneko 3
482
+
483
+ ## 1.1.13
484
+
485
+ * Added `__REMARK_COLOR_BEGIN__` and `__REMARK_COLOR_END__` to locale highlighter
486
+ * Publishing mods now uses the new Mod Portal Upload API.
487
+
488
+ ## 1.1.12
489
+
490
+ * __DebugAdapter.terminate() to end session from script
491
+ * __DebugAdapter.raise_event(event,data,modname) to call event handlers directly for testing
492
+ * Updated LuaObject recongition for debug views to reflect implementation detail changes in Factorio's API (no longer uses `__self`)
493
+ * Don't accept `nil` filters on custom-input events
494
+ * TypeDef generator now accepts Factorio Machine-Readable-Docs V2
495
+ * Various disassembler view fixes
496
+
497
+ ## 1.1.11
498
+
499
+ * Don't offer ! and version in depencency snippets
500
+ * Add overlay for tweaks to generated typedefs
501
+ * Various disassembler fixes
502
+ * Support "Loaded Sources" view
503
+ * Significant (~2x) speedup in profiling, noise reduction on line timers
504
+ * Profiler can now measure `on_load`
505
+
506
+ ## 1.1.10
507
+
508
+ * Correctly capture raw `remote` for debugger internal use before replacing it with wrapper
509
+ * New Command "Generate Typedefs" to convert json docs to EmmyLua docs (and configure general workspace settings)
510
+
511
+ ## 1.1.9
512
+
513
+ * Correctly reverse-lookup `defines.inventory.artillery_wagon_ammo`
514
+ * Warn when using `math.randomseed()` which is disabled in Factorio
515
+ * Warn when replacing an existing event handler
516
+ * Correctly handle empty `info.json` files in workspace
517
+
518
+ ## 1.1.8
519
+
520
+ * Mod name and title lengths are now limited to 100 characters
521
+ * Correctly validate `~` unordered mod dependencies
522
+ * Snippet for creating dependency entries
523
+
524
+ ## 1.1.7
525
+
526
+ * Fixed `failed locating source` for unpacked mods located through modsPath
527
+
528
+ ## 1.1.6
529
+
530
+ * Fixed steam detection on mac/linux
531
+ * Additional diagnostics for failures while locating source for mods
532
+
533
+ ## 1.1.5
534
+
535
+ * Added `no_git_tag` option in `info.json`
536
+ * Re-enabled expandable log items from `__DebugAdapter.print()`
537
+ * Expand embedded expressions in printed strings as variables
538
+ * Use "loose" semver parsing in various places, to handle extra leading zeros
539
+ * Converted "Output" window messages to debug console output
540
+ * Activate Zip Explorer extension before trying to run commands from it
541
+ * Added setting `factorio.package.defaultPublishBranch`
542
+
543
+ ## 1.1.4
544
+
545
+ * Update class data to Factorio 1.1.12
546
+ * Fixed "attempt to index local 'lastframe' (a nil value)" when calling `__DebugAdapter.breakpoint`
547
+ * Use Command text as source when available
548
+ * Disassemble Lua if no source is available
549
+ * Correctly resolve `@__core__` paths
550
+ * Fixed `script.on_event` would silently ignore filters when registering lists of events
551
+
552
+ ## 1.1.3
553
+
554
+ * Step-in on api access that raises events will step into handlers
555
+ * Fixed "attempt to index local 'lastframe' (a nil value)" when breaking on exception
556
+ * Removed break-on-exception when not running in Instrument Mode
557
+ * If selected frame has a local or upval `_ENV`, evals will use it instead of the global environment
558
+ * Removed Event Check
559
+ * Expand functions's upvals as children in Variables view
560
+ * `__DebugAdapter.levelPath` is no longer required, as it can be filled automatically from `script.level`
561
+
562
+ ## 1.1.2
563
+
564
+ * Show best-guess arguments for `__index` and `__newindex` in stack trace
565
+ * Collect and display stacks for some api calls that can raise events
566
+ * Display enum properties of LuaObjects as names from `defines.*`
567
+ * Metatable field `__debugtype` to set the displayed typename of an object
568
+ * Show table keys with virtual children `<key>` and `<value>` and rename with unique names
569
+ * Upload task now looks for zips in the correct place when Package is configured to place them outside the mod folder
570
+ * Launch option `adjustModSettings` to update/clear mod settings before launching a debug session
571
+ * Don't hang when `info.json` with `null` exists in workspace
572
+ * Don't set extension filter on factorioPath prompt on non-windows
573
+ * Update class data to Factorio 1.1.6
574
+
575
+ ## 1.1.1
576
+
577
+ * Fix setting breakpoints during simulations
578
+
579
+ ## 1.1.0
580
+
581
+ * Always use `-F -` for tags, even when empty
582
+ * Fix infinite recursion when cleaning long refs
583
+ * Disabled expandable log items from `__DebugAdapter.print({...})` by default due to issues with vscode debug console
584
+ * Updated class data and mod for Factorio 1.1.0
585
+
586
+ ## 0.18.49
587
+
588
+ * Correctly highlight empty plural
589
+ * Fixed crash if an on_tick handler with no argument has a LuaObject in its first temporary when building callstack
590
+ * Ignore info.json in scenarios/saves
591
+
592
+ ## 0.18.48
593
+
594
+ * Fix error when mods replace builtin `print` incorrectly
595
+
596
+ ## 0.18.47
597
+
598
+ * Pretty-print mod-list.json when adjusting mods
599
+ * Stricter check for LuaObjects in isUnsafeLong()
600
+
601
+ ## 0.18.46
602
+
603
+ * Removed Locale highlighter rule for unrecognized rich text tags
604
+ * Fixed script error when setting checkEvents or checkGlobals
605
+
606
+ ## 0.18.45
607
+
608
+ * Capture `debug` in case someone overwites it
609
+
610
+ ## 0.18.44
611
+
612
+ * Reworked locale highlighter
613
+ * Locale Snippets for various tags/variables
614
+ * Correctly highlight locale variable `__CONTROL_MOVE__`
615
+ * CodeAction to merge duplicate locale sections
616
+
617
+ ## 0.18.43
618
+
619
+ * Correctly include `profile-control.lua` when debugadapter itself is not hooked
620
+
621
+ ## 0.18.42
622
+
623
+ * Fix flamegraph not building trees correctly
624
+ * Configuration options for various extra diagnostics
625
+ * `postpublish` task
626
+ * Open Changelog command in packages view
627
+ * Eval now correctly uses the last matching local instead of the first
628
+ * Rename shadowed locals in Variables view so they display correctly
629
+ * Fixed not correctly differentiating multiple varRefs for the same table with `extra` property set
630
+ * Mark generated variables as `virtual`
631
+
632
+ ## 0.18.41
633
+
634
+ * Debug console supports `__modname__` prefix while in break
635
+ * Better error reporting for tasks.json tasks
636
+ * Branch name configuration for Publish was not correctly applied
637
+ * Timeout on queued stdin commands configurable, raised default to 2s
638
+ * Restrict tasks to operate only on the latest version of a mod
639
+ * Support `~` in launch.json path options
640
+
641
+ ## 0.18.40
642
+
643
+ * Fixed incorrect vars showing when first retreived after stopping on first stop in a lua state
644
+
645
+ ## 0.18.39
646
+
647
+ * Fixed incorrect vars showing when first retreived after stopping
648
+
649
+ ## 0.18.38
650
+
651
+ * Fixed debug session not ending when factorio closes
652
+ * More consistent use of URIs for path mapping
653
+ * Debug console supports `__modname__` prefix when named Lua State is available (correctly this time...)
654
+
655
+ ## 0.18.37
656
+
657
+ * Return original unwrapped handler from `script.get_event_handler`
658
+ * Fixed various missing stepIgnores
659
+ * stepIgnore and stepIgnoreAll now return the function/table passed in, for convenience
660
+ * Most objects printed with `__DebugAdapter.print(obj)` will be expandable in debug console as long as the source Lua State is still active
661
+ * Pause button able to break into long running code
662
+ * General code cleanup
663
+ * Optional arguments `upStack` and `category` on `__DebugAdapter.print()`
664
+ * Debug console can be used while running - it will run in the active Lua State for settings/data or in `level` if available for control.
665
+ * Correctly display and offer more color formats in locale
666
+ * Task "adjustMods" can be used to reconfigure mods from vscode
667
+ * Fix infinite loop in eval _ENV lookups when function outlives the eval that created it
668
+ * Support vscode vars in launch.json config
669
+ * Debug console supports `__modname__` prefix when named Lua State is available
670
+ * Branch name for Publish is configurable
671
+
672
+ ## 0.18.36
673
+
674
+ * Profiler flamegraph label more reliable
675
+ * Don't show flamegraph panel when tracking call trees not enabled
676
+
677
+ ## 0.18.35
678
+
679
+ * Profiler flamegraph works correctly on VSCode 1.48
680
+
681
+ ## 0.18.34
682
+
683
+ * Add locale vars `__CONTROL_STYLE_BEGIN__` and `__CONTROL_STYLE_END__` (for real this time)
684
+ * Locale var `__ALT_CONTROL__` correctly matches two args
685
+ * Fix breakpoints not loading initially in settings stage
686
+ * Added profiler flamegraph of call trees
687
+ * Profiler options to select line/function/calltree timers
688
+ * `__DebugAdapter.defineGlobal(name)` to disable warning on global access
689
+ * Profiler remote interface
690
+
691
+ ## 0.18.33
692
+
693
+ * Add locale vars `__CONTROL_STYLE_BEGIN__` and `__CONTROL_STYLE_END__`
694
+ * Add options to configure created mod zip location, and automatically remove after successful publish
695
+ * Detect and offer to disable prototype caching, which conflicts with part of debugger init
696
+ * Added `compile` task which is run in `package` and before launching debug session
697
+ * Added variable $MODNAME to git templates
698
+ * Added setting "factorio.package.tagName"
699
+ * Deprecated setting "factorio.package.tagVPrefix"
700
+
701
+ ## 0.18.32
702
+
703
+ * Updated class data to Factorio 1.0.0
704
+ * Temporarily unlisted property LuaItemStack::blueprint_icons to avoid crash when reading it in Factorio 1.0.0
705
+
706
+ ## 0.18.31
707
+
708
+ * Allow 1.x in various compatibility version tests
709
+
710
+ ## 0.18.30
711
+
712
+ * Remove special case for `__self` in eval env
713
+ * Support(ish) launching Factorio with a native debugger
714
+
715
+ ## 0.18.29
716
+
717
+ * Use `rawget` when identifying tables for inspection
718
+ * Remove duplicate `@` in function descriptions
719
+ * Steam support
720
+
721
+ ## 0.18.28
722
+
723
+ * Include factorioPath="" in initialConfigurations
724
+ * Better error when calling remote interfaces or methods that don't exist
725
+ * Merged Factorio Mod Packages views into one. Depending on configuration, you may need to reactivate the view after this update.
726
+ * Factorio Mod Packages view has an icon when used as a standalone panel
727
+ * Sorted Factorio Mod Packages view alphabetically
728
+ * Correctly catch `error(nil)`
729
+ * Correctly wrap `script.on_nth_tick` when given an array of ticks
730
+
731
+ ## 0.18.27
732
+
733
+ * More correct heuristic for attempting to translate tables as LocalisedString, gracefully handle translation failure.
734
+
735
+ ## 0.18.26
736
+
737
+ * Updated Mod Portal login procedure to work with the new Portal
738
+
739
+ ## 0.18.25
740
+
741
+ * Report errors and more detail when searching for mods for path mapping
742
+
743
+ ## 0.18.24
744
+
745
+ * Nicer log() hook on Factorio >= 0.18.34
746
+ * Ignore Unicode BOM in Changelog files
747
+ * Cleaned up path mapping between factorio/vscode
748
+ * Now supports non-versioned unzipped mods
749
+ * Correctly loads unzipped mods from mods from modsPath~=workspace before zipped mods
750
+ * Correctly parse mod paths with __ in paths
751
+ * Load only used zips when launching debug
752
+ * Clear previously loaded zips before reloading
753
+ * If using manual require in settings stage, it may now be needed to list debugadapter as an optional dependency to ensure Modules event is completed first. Instrument mode handles this automatically.
754
+ * Updated class data to Factorio 0.18.34
755
+ * Wrap new script.raise_* methods to pass call stack, matching raise_event wrapper
756
+ * Don't omit source on stepIgnore stack frames
757
+
758
+ ## 0.18.23
759
+
760
+ * Correctly encode Infinity, -Infinity and NaN in json
761
+ * Set stepIgnore on log hook functions
762
+ * Support new metamethod `__debugvisualize(self)` for formatting values for [hediet.debug-visualizer](https://marketplace.visualstudio.com/items?itemName=hediet.debug-visualizer)
763
+ * Debug line and visualizer for noise expressions
764
+ * Warn on first assignment to undefined Lua global variables
765
+
766
+ ## 0.18.22
767
+
768
+ * Changed automatic zip exclusion when packaging from `**/*.zip` to `**/modname_*.zip`, to prevent excluding `blueprint.zip` in scenarios.
769
+
770
+ ## 0.18.21
771
+
772
+ * Fixed incorrect regex in info.json schema
773
+
774
+ ## 0.18.20
775
+
776
+ * Use Lua Registry to enforce certain libraries are singletons even when package.loaded is cleared in data stage
777
+ * Correctly report parse errors in timed eval requests
778
+ * Don't flag spaces in mod names in dependencies as errors (old mods with spaces exist)
779
+ * Profile line timers now include called function time, added function timers
780
+ * Incremental dumping of profile timers to reduce stutter while profiling
781
+ * Reworked profile line timer coloring options
782
+
783
+ ## 0.18.19
784
+
785
+ * Capture `print` and `localised_print` in `profile.lua` for compatiblity with mods that overwrite them
786
+ * Better calculation of profile column width
787
+ * Fix an error in prior update's change to display of array-like tables
788
+
789
+ ## 0.18.18
790
+
791
+ * Removed StreamSplitter
792
+ * On Factorio>=0.18.24, use `localised_print` to translate various output:
793
+ * Error messages, including multi-line output
794
+ * LocalisedStrings and LuaProfilers in Variables view
795
+ * LocalisedStrings in `log` hook and `__DebugAdapter.print`
796
+ * LocalisedStrings in Debug Console output or errors
797
+ * Duration of Debug Console commands, timers for profiling
798
+ * Alternate hook mode for live-ish profiling in control stage
799
+ * Correctly identify tailcalls in `log` hook and `__DebugAdapter.print`, instead of incorrect callsite
800
+ * Use a more permissive JSON schema for `info.json` inside `data`
801
+ * Correctly exclude locale `info.json` files from mod/data schema
802
+ * Support [hediet.debug-visualizer](https://marketplace.visualstudio.com/items?itemName=hediet.debug-visualizer), with eval context "visualize" and user-provided visualization converters
803
+ * Print type of invalid objects in json
804
+ * Correctly show children of tables with large gaps in array segment
805
+ * Live terminal output for mod scripts in packaging tasks
806
+ * Updated class data to Factorio 0.18.24
807
+
808
+
809
+ ## 0.18.17
810
+
811
+ * Fix `Version` task failing when symbols in `info.json` cannot be loaded
812
+ * Correct order of comment syntax rules for Locale files
813
+ * Show warnings for various problems in Locale files
814
+ * Fixed F5 while running would queue up incorrect commands
815
+ * Display `[Variables Currently Unavailable]` when variables cannot be displayed for the current stack frame
816
+ * Don't pre-load mod zips when launching without debugger
817
+
818
+ ## 0.18.16
819
+
820
+ * Add allowDisableBaseMod to disable protection on `base` in `adjustMods`
821
+ * Hook `log()` to produce Output events with clickable source links. Launch args `hookLog` and `keepOldLog` can adjust this behavior.
822
+ * Error hint for missing config.ini
823
+ * Launch Args to selectively install hooks in Settings, Data and per-mod in Control stage. Settings and Data now default off and must be enabled if desired, Control defaults to hook all mods.
824
+ * Launch Arg factorioPath is no longer required - if absent or empty, will prompt for location
825
+ * More correct handling of tables with unusual numeric keys
826
+ * Follow `terminal.integrated.shell.*` and `terminal.integrated.automationShell.*` settings
827
+
828
+ ## 0.18.15
829
+
830
+ * SIGKILL for second attempt to kill Factorio when ending a debug session
831
+ * Fix rawlen() fix incorrectly applied to LuaCustomTable
832
+ * Add adjustMods and disableExtraMods to launch args
833
+ * Step inside zip files with slevesque.vscode-zipexplorer
834
+
835
+ ## 0.18.14
836
+
837
+ * Include JSON Scheme for clusterio instances.json file
838
+ * Use rawlen() in Variables views to correctly handle objects with incorrect __len metamethods
839
+
840
+ ## 0.18.13
841
+
842
+ * Catch rare condition in Increment Version command where no symbols are found in info.json
843
+ * Correctly report missing paths in config.ini
844
+ * Don't attempt to translate errors outside of events
845
+ * Updated class data to Factorio 0.18.18
846
+ * Correctly update level script path after path hint
847
+
848
+ ## 0.18.12
849
+
850
+ * Accept top level null in scenario/campaign info.json
851
+ * Highlight comment and invalid lines in locale
852
+ * Provide default GitLens config for changelogs
853
+ * Use annotated git tags. Optionally prefix version with 'v' and include commit message.
854
+ * Always include trailing slash on `--mod-directory`
855
+ * Updated class data to Factorio 0.18.17
856
+
857
+ ## 0.18.11
858
+
859
+ * Updated class data to Factorio 0.18.13
860
+ * Auto-generated git commits now set configurable author, and message templates configurable
861
+ * Use `terminal.integrated.env.{platform}` settings to provide additional env vars to mod scripts
862
+
863
+ ## 0.18.10
864
+
865
+ * Updated Debug Adapter Protocol capabilities report
866
+ * Updated class data to Factorio 0.18.12
867
+
868
+ ## 0.18.9
869
+
870
+ * Fix config.ini failing to auto-detect in many scenarios
871
+ * Improved logging of what files are auto-detected where
872
+
873
+ ## 0.18.8
874
+
875
+ * Fix typo in Increment Version command label
876
+ * Fix not always killing Factorio on Macs
877
+ * Read config.ini for mods/data paths. Removed dataPath in launch config, added configPath. modsPath and configPath also set the corresponding command line args.
878
+ * Don't recheck info.json during a debug session, only when starting a new session.
879
+ * Fixed crash when running remote.call() in /c
880
+ * Don't attempt to catch an exception if there is no locatable source to show it at (eg. console commands)
881
+
882
+ ## 0.18.7
883
+
884
+ * Correctly handle `script.on_nth_tick(nil)`
885
+
886
+ ## 0.18.6
887
+
888
+ * Don't add `--instrument-mod` to command line args when launching without debug
889
+
890
+ ## 0.18.5
891
+
892
+ * Updated class data to Factorio 0.18.10
893
+ * Use Instrument Mode by default (Requires Factorio >= 0.18.10)
894
+ * Force canonical-name requires for public-facing files (debugadapter.lua and variables.lua)
895
+
896
+ ## 0.18.4
897
+
898
+ * Added __DebugAdapter.breakpoint(mesg)
899
+ * `\n` escape in locale is now `constant.character.escape.factorio-locale`
900
+ * Hook `pcall` and `xpcall` and allow optionally breaking on caught exception
901
+ * Use environment vars FACTORIO_PORTAL_USERNAME and FACTORIO_PORTAL_PASSWORD when not configured in settings
902
+ * provide environment var FACTORIO_MODNAME and FACTORIO_MODVERSION to all mod scripts
903
+ * explicitly save files edited by tasks, instead of saveAll
904
+ * packages view may be moved to SCM section
905
+ * fixed Package command not waiting to finish building zip before returning, which caused it to sometimes pick up edits made later by Publish
906
+
907
+ ## 0.18.3
908
+
909
+ * non-standard category in changelog as Hint instead of Information
910
+ * Factorio 0.18.2 added LuaEntityPrototype::inserter_pickup_position and inserter_drop_position
911
+ * evil translation hack to display translated LocalisedString errors
912
+ * changelog linter error for line prefix with no content
913
+ * remove changelog diagnostics when a file is removed
914
+ * allow two-part version in info.json dependencies
915
+ * automatically package and publish mods
916
+
917
+ ## 0.18.2
918
+
919
+ * Changelog separator line is keyword.control
920
+ * correctly highlight changelog version number with only two numeric parts
921
+ * changelog linter
922
+ * color widget on [color=...] tags in locale
923
+ * add support for proposed "Instrument Mode", disabled by default
924
+ * fix incorrect link in campaign schema to scenario schema
925
+ * outline for locale and changelog
926
+ * improved highlighting of plurals in locale files
927
+ * correctly highlight inside enclosing tags in locale
928
+
929
+ ## 0.18.1
930
+
931
+ * __DebugAdapter.print(notstring) will print the object's `describe` lineitem
932
+ * don't trim log messages
933
+ * fix debugging data stage after entrypoint changes, for real this time
934
+ * JSON Schemas for info.json, description.json, server-settings.json, map-settings.json, map-gen-settings.json
935
+ * Syntax highlighting for Locale *.cfg and changelog.txt files
936
+ * Factorio 0.18.1 added LuaSurface::brightness_visual_weights
937
+ * Keep output channel open and reuse between sessions
938
+
939
+ ## 0.18.0
940
+
941
+ * Update for Factorio 0.18
942
+ * use `script.active_mods` to remove last dependencies on `game`. Enables stepping in control.lua main chunk and on_load, and break-on-exception in on_load. Removed various workarounds for not having this.
943
+ * use LuaObject.object_name to classify objects. Detailed views of LuaStructs.
944
+
945
+ ## 0.17.8
946
+
947
+ * better hide frames with no available source
948
+ * fix debugging data stage after entrypoint changes
949
+ * allow extra args to factorio
950
+ * evaluate names for most variables
951
+
952
+ ## 0.17.7
953
+
954
+ * stepIgnoreAll(t) function to ignore all functions in table
955
+ * __DebugAdapter.print() supports `{...}` to fill varargs in string.
956
+ * escape 13 in breakpoints
957
+ * omit frame source for C functions in call stack
958
+ * break-on-exception in most events and improved entrypoint identification
959
+ * warn if mod registers probably-incomplete sets of events
960
+ * jump to location in stacktrace works
961
+
962
+ ## 0.17.6
963
+
964
+ * correctly bracket strings ending in partial close brackets
965
+ * paged display of large array-like objects
966
+ * escape 26 in breakpoints
967
+ * disable profiler and coverage when enabling debugadapter
968
+ * disable debugadapter mod on "Run Without Debugging"
969
+ * better display of custom commands and custom-input event handlers
970
+ * reorder scopes in Variables window to be generally innermost to outermost
971
+ * optimized remote.call hook
972
+
973
+ ## 0.17.5
974
+
975
+ * mark various internals as stepIgnore
976
+ * binary format for breakpoints, divided up one file per command, to fit better in 250 char limit of debug.debug()
977
+ * more consistently update breakpoints before resuming execution
978
+
979
+ ## 0.17.4
980
+
981
+ * include for loop internals in `<temporaries>` section
982
+ * bring my own json to remove many dependencies on `game` object
983
+ * optimizations
984
+ * name `(main chunk)` in stack traces
985
+ * set breakpoints earlier (still can't attach before `game` is available though)
986
+ * varargs sorted into special child of Local scope, after fixed args
987
+ * automatically install and enable/disable mod
988
+ * works if `require`d into data or settings stage
989
+ * accumulate stderr until newline, then strip debug prompts and return non-empty strings
990
+ * better handling of paths
991
+ * "Factorio Mod Debug" output channel listing various info about what paths it found
992
+ * detect `mod-list.json` inside workspace and use its location as modsPath
993
+
994
+ ## 0.17.3
995
+
996
+ * don't remove leading '/' from workspace paths on non-windows
997
+ * better path guess on mac
998
+ * don't try to instrument remote.call during on_load
999
+
1000
+ ## 0.17.2
1001
+
1002
+ * more improved escaping
1003
+ * search for mods inside vscode workspace first, then modsPath
1004
+ * top level scope for factorio `global`
1005
+ * filter temporaries to special child of Local scope
1006
+ * filter "built in" globals to special child of Global scope
1007
+ * fix display of eval _ENV
1008
+ * unquote string keys when possible in table describe
1009
+
1010
+ ## 0.17.1
1011
+
1012
+ * docs improvements
1013
+ * tail calls in stack trace
1014
+ * provide escapes `{[}` -> `{` and `{]}` -> `}` in interpolated strings
1015
+ * support condition and hitCondition in breakpoints
1016
+ * improved escaping of various strings
1017
+ * don't allow setting `self` (the current object) inside string interpolation for debug lineitems
1018
+ * describe main chunk functions
1019
+ * mask dostring full-source chunk names as "=(dostring)"
1020
+ * omit numeric keys when possible in table describe
1021
+ * add `__DebugAdapter.dumpBreakpoints` to manually list breapoints
1022
+
1023
+ ## 0.17.0
1024
+
1025
+ * Initial Release