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