factoriomod-debug 2.0.14 → 2.1.3

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