diff --git a/CHANGELOG.md b/CHANGELOG.md
index b2a6ca1c8..c7d063102 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,44 +3,44 @@ All notable changes to this project will be documented in this file.
## [14.1.0] - 2021-03-05
### Added
-- #1561 Font editing - import ascent, descent, leading, kerning
+- [#1561] Font editing - import ascent, descent, leading, kerning
- Font editing - font name, ascent, descent, leading
- PlaceObject tags matrix editation - FreeTransform tool (move, resize, rotate, shear)
### Fixed
-- #1623 Right side marker (gray line) in P-code
-- #1622 Slow scrolling (search results, advanced settings and others)
-- #1626 AS3 decompilation - unpopped obfuscated function
-- #1624 Saving last searches saves only first results
-- #1627 Previously decompiled scripts not cached
+- [#1623] Right side marker (gray line) in P-code
+- [#1622] Slow scrolling (search results, advanced settings and others)
+- [#1626] AS3 decompilation - unpopped obfuscated function
+- [#1624] Saving last searches saves only first results
+- [#1627] Previously decompiled scripts not cached
- SWF is not garbage collected on close in some situations
- AS1/2 script search does not show all results
-- #1633 AS3 decompilation - return in for..in clause
+- [#1633] AS3 decompilation - return in for..in clause
- AS3 p-code/AS hilighting when outside trait
- AS3 p-code/AS hilighting after p-code save
- Decompilation - Goto handling
- Not selecting proper script after restoring session
-- #1603 empty script after search selection
+- [#1603] empty script after search selection
- Generic tag tree exception on save
- Copying to clipboard does not support transparency
-- #1634 AS3 slot/const editor loses focus on edit button press
-- #1636 Exception after search - traitslist with not properly set abc, other ui exception
+- [#1634] AS3 slot/const editor loses focus on edit button press
+- [#1636] Exception after search - traitslist with not properly set abc, other ui exception
- Flash viewer- cyclic DefineSprite usage
-- #1570 Incorrect shape rendering when edge is reversed
-- #1643 Separate AS1/2 and AS3 editor hilighting
+- [#1570] Incorrect shape rendering when edge is reversed
+- [#1643] Separate AS1/2 and AS3 editor hilighting
- AS3 direct editation - slot/const default values
-- #1328 AS1/2/3 direct editation - empty commands (just semicolon)
-- #1310 AS1/2/3 direct editation - modulo operator precedence
+- [#1328] AS1/2/3 direct editation - empty commands (just semicolon)
+- [#1310] AS1/2/3 direct editation - modulo operator precedence
- AS3 - escaping star import
-- #1298 AS1 colon syntax handling
-- #1298 AS1 direct editation of add,eq,ne and such operations
-- #1260 AS1/2 direct editation - is/as/:: are not reserved operators
+- [#1298] AS1 colon syntax handling
+- [#1298] AS1 direct editation of add,eq,ne and such operations
+- [#1260] AS1/2 direct editation - is/as/:: are not reserved operators
- Goto declaration - exception when exists QName with 0 namespace index
-- #1179 FLA Export - button sounds
+- [#1179] FLA Export - button sounds
- FLA export - sound effects - fade in / out / left to right / right to left
### Removed
-- #1631 ActiveX Flash component download in windows installer
+- [#1631] ActiveX Flash component download in windows installer
### Changed
- Spaces around ternar operators, parenthesis on ternar inside ternat
@@ -50,66 +50,66 @@ All notable changes to this project will be documented in this file.
- AS3 goto definition on imports
### Fixed
-- #1336 AS3 direct editation - Regexp / character escaping
-- #1615 Turning off Checking for modifications disables SWF loading
-- #1100, #1123, #1516 AS1/2/3 direct editation - comma operator
-- #1618 Export to PDF selectable text escaping and text size
-- #1101 AS3 direct editation - handling imported vars
-- #1169 AS1/2 direct editation - getmember after new operator
-- #1338, #1480 AS3 direct editation - Vector in combination with activation
+- [#1336] AS3 direct editation - Regexp / character escaping
+- [#1615] Turning off Checking for modifications disables SWF loading
+- [#1100], [#1123], [#1516] AS1/2/3 direct editation - comma operator
+- [#1618] Export to PDF selectable text escaping and text size
+- [#1101] AS3 direct editation - handling imported vars
+- [#1169] AS1/2 direct editation - getmember after new operator
+- [#1338], [#1480] AS3 direct editation - Vector in combination with activation
- AS3 decompilation - do not show setslot on activation when has same name as method parameter
-- #1450 AS3 direct editation - handling types from same package
+- [#1450] AS3 direct editation - handling types from same package
- AS3 goto definition for types in another ABC tag
- AS3 goto definition for obfuscated names
- AS3 direct editation - compilation of top level classes
-- #1494 AS1/2 Direct editation - GetURL not properly saved caused by case
+- [#1494] AS1/2 Direct editation - GetURL not properly saved caused by case
- AS1/2 Direct editation - functions case sensitivity
### Changed
-- #1616 Close SWF menuitem is last in the context menu
-- #1620 Search results - Using list component instead of tree when searching in single SWF
+- [#1616] Close SWF menuitem is last in the context menu
+- [#1620] Search results - Using list component instead of tree when searching in single SWF
## [14.0.0] - 2021-02-24
### Added
-- #1202 Check for modifications outside FFDec and ask user to reload
-- #1155, #1602 AS3 remove trait button
-- #1260, #1438 AS1/2 direct editing on(xxx), onClipEvent(xxx) handlers
-- #1366, #1409, #1429, #1573, #1598 AS1/2/3 Add script/class (context menu on scripts folder)
+- [#1202] Check for modifications outside FFDec and ask user to reload
+- [#1155], [#1602] AS3 remove trait button
+- [#1260], [#1438] AS1/2 direct editing on(xxx), onClipEvent(xxx) handlers
+- [#1366], [#1409], [#1429], [#1573], [#1598] AS1/2/3 Add script/class (context menu on scripts folder)
- Removing BUTTONCONDACTION, CLIPACTIONRECORD
- Removing whole AS1/2 script folders (frame, DefineSprite, packages)
- Removing AS3 scripts and whole packages
- Japanese translation
-- #428, #583, #1373 Exporting PDFs with selectable text
+- [#428], [#583], [#1373] Exporting PDFs with selectable text
- Goto address dialog in Hex view (Ctrl+G or via context menu)
- AS3 P-code editation checking all referenced labels exist
-- #1595 History of script search results per SWF
+- [#1595] History of script search results per SWF
- Ignore case and RegExp options displayed on search results dialog
-- #1611 Warning about initializers has do not show again checkbox
+- [#1611] Warning about initializers has do not show again checkbox
- Scoped script text search and search across multiple SWFs
-- #1601 Option to hide AS3 docs panel and traitslist/constants panel
+- [#1601] Option to hide AS3 docs panel and traitslist/constants panel
### Fixed
-- #1298 AS1/2 properly decompiled setProperty/getProperty
+- [#1298] AS1/2 properly decompiled setProperty/getProperty
- AS1/2 Direct editation mark line on error
- Collapsing tag tree on SWF reload
-- #1339 AS1/2 direct editation - targetPath as an expression
-- #1467 AS1/2 direct editation - allow new Number call
-- #1489 AS1/2 direct editation - reversed negations
-- #1489 AS1/2 direct editation - for in loop
-- #1490, #1493 AS1/2 direct editation - cast op
+- [#1339] AS1/2 direct editation - targetPath as an expression
+- [#1467] AS1/2 direct editation - allow new Number call
+- [#1489] AS1/2 direct editation - reversed negations
+- [#1489] AS1/2 direct editation - for in loop
+- [#1490], [#1493] AS1/2 direct editation - cast op
- AS1/2 cast op decompilation
- Only last DoInitAction tag displayed
-- #1606 Run/Debug SWF that is embedded (has no file associated)
-- #1270, #1336 AS3 direct editation - unnecessary coerce in setproperty
+- [#1606] Run/Debug SWF that is embedded (has no file associated)
+- [#1270], [#1336] AS3 direct editation - unnecessary coerce in setproperty
- AS3 direct editation - unary minus (negate) compiled as 0 - value
- AS3 direct editation - using finally clause for continue and break
- AS3 direct editation - popscope in catch on continue and break
-- #1159, #1608 Regexp syntax hilight when not a regexp (only division) again
+- [#1159], [#1608] Regexp syntax hilight when not a regexp (only division) again
- Graphviz Graph not showing AS3 exception end
-- #1609 First frame missing in frame to PDF export
+- [#1609] First frame missing in frame to PDF export
- AS3 with statement decompilation
-- #1610 AS3 unnecessary adding namespaces
-- #1610 AS3 P-code editation - true/false/undefined/null has value_index same as value_kind
+- [#1610] AS3 unnecessary adding namespaces
+- [#1610] AS3 P-code editation - true/false/undefined/null has value_index same as value_kind
- Ribbon stealing focus when pressing Alt (for example in editors)
- Focused byte barely visible in hex view
- AS3 P-code editation - only first try offset was saved when multiple try with same label
@@ -117,28 +117,28 @@ All notable changes to this project will be documented in this file.
- AS3 decompilation: increment/decrement on properties
- AS1/2 Goto search result not properly selecting line (delay)
- ActiveX exceptions when FlashPlayer disabled in classic GUI
-- #1569 AS3 direct editation - incorrect slot names handling (IndexOutOfBounds)
-- #1153, #1347, #1400, #1552, #1553 Images export for some nonstandard JPEGs
+- [#1569] AS3 direct editation - incorrect slot names handling (IndexOutOfBounds)
+- [#1153], [#1347], [#1400], [#1552], [#1553] Images export for some nonstandard JPEGs
### Changed
-- #1565, #1407, #1350 On BinaryData SWF save, parent SWF is saved
+- [#1565], [#1407], [#1350] On BinaryData SWF save, parent SWF is saved
- Mouseover / focused bytes in hexview displayed with border
instead of background color change to improve readability
-- #692 Search results dialog Goto button does not close dialog
+- [#692] Search results dialog Goto button does not close dialog
## [13.0.3] - 2021-02-12
### Added
-- #1594 Option to disable AS3 P-code indentation, label on separate line
-- #1594 Option to use old style of getlocalx, setlocalx with underscore in AS3 P-code
-- #1597 Option to use old style lookupswitch in AS3 P-code
+- [#1594] Option to disable AS3 P-code indentation, label on separate line
+- [#1594] Option to use old style of getlocalx, setlocalx with underscore in AS3 P-code
+- [#1597] Option to use old style lookupswitch in AS3 P-code
### Fixed
-- #1114 Script search results dialogs closing on swf close
-- #1159 Regexp syntax hilight when not a regexp (only division)
-- #1227 AS3 avoid recursion (stackoverflow) caused by newfunction instruction
-- #1360 Precedence of increment/decrement operations
-- #1407 NullPointer on Save as in BinaryData SWF subtree
-- #1596 Infinite loop when sorting traits according to dependencies
+- [#1114] Script search results dialogs closing on swf close
+- [#1159] Regexp syntax hilight when not a regexp (only division)
+- [#1227] AS3 avoid recursion (stackoverflow) caused by newfunction instruction
+- [#1360] Precedence of increment/decrement operations
+- [#1407] NullPointer on Save as in BinaryData SWF subtree
+- [#1596] Infinite loop when sorting traits according to dependencies
- Cannot properly cancel script searching
## [13.0.2] - 2021-02-10
@@ -147,11 +147,11 @@ All notable changes to this project will be documented in this file.
### Fixed
- AS1/2 script export to single file maintains script order
-- #1088 ECMA Number to string conversion
+- [#1088] ECMA Number to string conversion
- AS3 getslot/setslot in certain situations
-- #1185 AS3 Incorrect imports in obfuscated files
-- #1186 Missing import when item is fully qualified
-- #1188 AS3 reorder traits if one slot/const references another
+- [#1185] AS3 Incorrect imports in obfuscated files
+- [#1186] Missing import when item is fully qualified
+- [#1188] AS3 reorder traits if one slot/const references another
## [13.0.1] - 2021-02-09
### Fixed
@@ -164,7 +164,7 @@ All notable changes to this project will be documented in this file.
### Added
- Graphviz graphs colorized
- AS3: Show try graph heads in Graphviz distinguished
-- #341, #1379 AS3: Support for scripts not using kill instruction
+- [#341], [#1379] AS3: Support for scripts not using kill instruction
- AS3 method trait p-code indentation, (optional) instruction name padding
- AS3 editation of method body traits (slot/const only)
@@ -181,7 +181,7 @@ All notable changes to this project will be documented in this file.
- AS3: return in finally
- AS3 docs not correctly displayed under p-code when metadata present
- Improper initialization of ActiveX component when Flash not available causing FFDec not start
-- #1206 Switch with multiple default clauses
+- [#1206] Switch with multiple default clauses
- ASC2 §§push of function calls before returning from a method
- Support for ASC2 and swftools try..catch..finally block
- Dot parent operator not detected in some cases
@@ -190,12 +190,12 @@ All notable changes to this project will be documented in this file.
- AS3 deobfuscator of registers parsing of exception targets
- AS3 code with exception start/end not matching instruction boundary
- AS3 deobfuscator in some cases
-- #349 AS3 - better handling of declarations
-- #735 AS3 - index out of bounds in deobfuscator
+- [#349] AS3 - better handling of declarations
+- [#735] AS3 - index out of bounds in deobfuscator
- AS3 deobfuscator on &&, || operators
- Merged continues in try..catch
- AS3 method display in GUI when method name is null
-- #1195 this keyword in functions outside class
+- [#1195] this keyword in functions outside class
- AS3 p-code parser adding ;trait comment to last instruction
### Changed
@@ -245,9 +245,9 @@ All notable changes to this project will be documented in this file.
- Correct line matching in debugger of AS3 after using deobfuscation
- Concurrent access while in debugger
- Correct body index for script initializer in P-code debugging
-- #1550 TTF export - correctly handle duplicate unicode codes
-- #1548 correctly handle empty generated file names
-- #1379 AS3 - better handling local registers postincrement/decrement
+- [#1550] TTF export - correctly handle duplicate unicode codes
+- [#1548] correctly handle empty generated file names
+- [#1379] AS3 - better handling local registers postincrement/decrement
- Better unresolved if handling
- Escaping in P-code Graphviz exporter (Problems with graphs containing backslash strings)
@@ -257,16 +257,16 @@ All notable changes to this project will be documented in this file.
- Updated turkish translation
### Fixed
-- #1500 Maximum SWF version constant increased, which is used by the memory search and also in the header editor
-- #1457 AS3 switch without lookupswitch ins detection
-- #1457 pushing on stack before exit item (return/throw)
-- #1503 NullPointer Exception on commandline FLA export
+- [#1500] Maximum SWF version constant increased, which is used by the memory search and also in the header editor
+- [#1457] AS3 switch without lookupswitch ins detection
+- [#1457] pushing on stack before exit item (return/throw)
+- [#1503] NullPointer Exception on commandline FLA export
- AS3 direct editation - invalid generation of lookupswitch
- AS3 direct editation - fix access to protected members with super
-- #1529 commandline selection of tag ids now applies to sprites and buttons
+- [#1529] commandline selection of tag ids now applies to sprites and buttons
### Changed
-- #1378 Transparent background on PNG/GIF sprite export
+- [#1378] Transparent background on PNG/GIF sprite export
- SWF background on shape BMP export
## [11.2.0] - 2018-09-08
@@ -295,8 +295,8 @@ All notable changes to this project will be documented in this file.
- DefineBits (with JPEGTables) tag export
- No disabling autoOpenLoadedSWFs checkbox when ActiveX player not available (User can use Run button)
- Displaying contents of local variables (AS3) while debugging
-- #1415 freezing on manually closing Flash player debug session
-- #1484 AS import error printout on commandline (NullPointer)
+- [#1415] freezing on manually closing Flash player debug session
+- [#1484] AS import error printout on commandline (NullPointer)
## [11.1.0] - 2018-05-24
### Added
@@ -1953,7 +1953,18 @@ All notable changes to this project will be documented in this file.
### Added
- Initial public release
-[Unreleased]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version11.0.0...dev
+[14.1.0]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version14.0.1...version14.1.0
+[14.0.1]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version14.0.0...version14.0.1
+[14.0.0]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version13.0.3...version14.0.0
+[13.0.3]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version13.0.2...version13.0.3
+[13.0.2]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version13.0.1...version13.0.2
+[13.0.1]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version13.0.0...version13.0.1
+[13.0.0]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version12.0.1...version13.0.0
+[12.0.1]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version12.0.0...version12.0.1
+[12.0.0]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version11.3.0...version12.0.0
+[11.3.0]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version11.2.0...version11.3.0
+[11.2.0]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version11.1.0...version11.2.0
+[11.1.0]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version11.0.0...version11.1.0
[11.0.0]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version10.0.0...version11.0.0
[10.0.0]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version9.0.0...version10.0.0
[9.0.0]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version8.0.1...version9.0.0
@@ -2050,6 +2061,133 @@ All notable changes to this project will be documented in this file.
[alpha 9]: https://github.com/jindrapetrik/jpexs-decompiler/compare/alpha8...alpha9
[alpha 8]: https://github.com/jindrapetrik/jpexs-decompiler/compare/alpha7...alpha8
[alpha 7]: https://github.com/jindrapetrik/jpexs-decompiler/releases/tag/alpha7
+[#1561]: https://www.free-decompiler.com/flash/issues/1561
+[#1623]: https://www.free-decompiler.com/flash/issues/1623
+[#1622]: https://www.free-decompiler.com/flash/issues/1622
+[#1626]: https://www.free-decompiler.com/flash/issues/1626
+[#1624]: https://www.free-decompiler.com/flash/issues/1624
+[#1627]: https://www.free-decompiler.com/flash/issues/1627
+[#1633]: https://www.free-decompiler.com/flash/issues/1633
+[#1603]: https://www.free-decompiler.com/flash/issues/1603
+[#1634]: https://www.free-decompiler.com/flash/issues/1634
+[#1636]: https://www.free-decompiler.com/flash/issues/1636
+[#1570]: https://www.free-decompiler.com/flash/issues/1570
+[#1643]: https://www.free-decompiler.com/flash/issues/1643
+[#1328]: https://www.free-decompiler.com/flash/issues/1328
+[#1310]: https://www.free-decompiler.com/flash/issues/1310
+[#1298]: https://www.free-decompiler.com/flash/issues/1298
+[#1260]: https://www.free-decompiler.com/flash/issues/1260
+[#1179]: https://www.free-decompiler.com/flash/issues/1179
+[#1631]: https://www.free-decompiler.com/flash/issues/1631
+[#1336]: https://www.free-decompiler.com/flash/issues/1336
+[#1615]: https://www.free-decompiler.com/flash/issues/1615
+[#1100]: https://www.free-decompiler.com/flash/issues/1100
+[#1123]: https://www.free-decompiler.com/flash/issues/1123
+[#1516]: https://www.free-decompiler.com/flash/issues/1516
+[#1618]: https://www.free-decompiler.com/flash/issues/1618
+[#1101]: https://www.free-decompiler.com/flash/issues/1101
+[#1169]: https://www.free-decompiler.com/flash/issues/1169
+[#1338]: https://www.free-decompiler.com/flash/issues/1338
+[#1480]: https://www.free-decompiler.com/flash/issues/1480
+[#1450]: https://www.free-decompiler.com/flash/issues/1450
+[#1494]: https://www.free-decompiler.com/flash/issues/1494
+[#1616]: https://www.free-decompiler.com/flash/issues/1616
+[#1620]: https://www.free-decompiler.com/flash/issues/1620
+[#1202]: https://www.free-decompiler.com/flash/issues/1202
+[#1155]: https://www.free-decompiler.com/flash/issues/1155
+[#1602]: https://www.free-decompiler.com/flash/issues/1602
+[#1438]: https://www.free-decompiler.com/flash/issues/1438
+[#1366]: https://www.free-decompiler.com/flash/issues/1366
+[#1409]: https://www.free-decompiler.com/flash/issues/1409
+[#1429]: https://www.free-decompiler.com/flash/issues/1429
+[#1573]: https://www.free-decompiler.com/flash/issues/1573
+[#1598]: https://www.free-decompiler.com/flash/issues/1598
+[#428]: https://www.free-decompiler.com/flash/issues/428
+[#583]: https://www.free-decompiler.com/flash/issues/583
+[#1373]: https://www.free-decompiler.com/flash/issues/1373
+[#1595]: https://www.free-decompiler.com/flash/issues/1595
+[#1611]: https://www.free-decompiler.com/flash/issues/1611
+[#1601]: https://www.free-decompiler.com/flash/issues/1601
+[#1339]: https://www.free-decompiler.com/flash/issues/1339
+[#1467]: https://www.free-decompiler.com/flash/issues/1467
+[#1489]: https://www.free-decompiler.com/flash/issues/1489
+[#1490]: https://www.free-decompiler.com/flash/issues/1490
+[#1493]: https://www.free-decompiler.com/flash/issues/1493
+[#1606]: https://www.free-decompiler.com/flash/issues/1606
+[#1270]: https://www.free-decompiler.com/flash/issues/1270
+[#1159]: https://www.free-decompiler.com/flash/issues/1159
+[#1608]: https://www.free-decompiler.com/flash/issues/1608
+[#1609]: https://www.free-decompiler.com/flash/issues/1609
+[#1610]: https://www.free-decompiler.com/flash/issues/1610
+[#1569]: https://www.free-decompiler.com/flash/issues/1569
+[#1153]: https://www.free-decompiler.com/flash/issues/1153
+[#1347]: https://www.free-decompiler.com/flash/issues/1347
+[#1400]: https://www.free-decompiler.com/flash/issues/1400
+[#1552]: https://www.free-decompiler.com/flash/issues/1552
+[#1553]: https://www.free-decompiler.com/flash/issues/1553
+[#1565]: https://www.free-decompiler.com/flash/issues/1565
+[#1407]: https://www.free-decompiler.com/flash/issues/1407
+[#1350]: https://www.free-decompiler.com/flash/issues/1350
+[#692]: https://www.free-decompiler.com/flash/issues/692
+[#1594]: https://www.free-decompiler.com/flash/issues/1594
+[#1597]: https://www.free-decompiler.com/flash/issues/1597
+[#1114]: https://www.free-decompiler.com/flash/issues/1114
+[#1227]: https://www.free-decompiler.com/flash/issues/1227
+[#1360]: https://www.free-decompiler.com/flash/issues/1360
+[#1596]: https://www.free-decompiler.com/flash/issues/1596
+[#1088]: https://www.free-decompiler.com/flash/issues/1088
+[#1185]: https://www.free-decompiler.com/flash/issues/1185
+[#1186]: https://www.free-decompiler.com/flash/issues/1186
+[#1188]: https://www.free-decompiler.com/flash/issues/1188
+[#341]: https://www.free-decompiler.com/flash/issues/341
+[#1379]: https://www.free-decompiler.com/flash/issues/1379
+[#1206]: https://www.free-decompiler.com/flash/issues/1206
+[#349]: https://www.free-decompiler.com/flash/issues/349
+[#735]: https://www.free-decompiler.com/flash/issues/735
+[#1195]: https://www.free-decompiler.com/flash/issues/1195
+[#1550]: https://www.free-decompiler.com/flash/issues/1550
+[#1548]: https://www.free-decompiler.com/flash/issues/1548
+[#1500]: https://www.free-decompiler.com/flash/issues/1500
+[#1457]: https://www.free-decompiler.com/flash/issues/1457
+[#1503]: https://www.free-decompiler.com/flash/issues/1503
+[#1529]: https://www.free-decompiler.com/flash/issues/1529
+[#1378]: https://www.free-decompiler.com/flash/issues/1378
+[#1415]: https://www.free-decompiler.com/flash/issues/1415
+[#1484]: https://www.free-decompiler.com/flash/issues/1484
+[#1449]: https://www.free-decompiler.com/flash/issues/1449
+[#1456]: https://www.free-decompiler.com/flash/issues/1456
+[#1240]: https://www.free-decompiler.com/flash/issues/1240
+[#1308]: https://www.free-decompiler.com/flash/issues/1308
+[#1333]: https://www.free-decompiler.com/flash/issues/1333
+[#1365]: https://www.free-decompiler.com/flash/issues/1365
+[#1369]: https://www.free-decompiler.com/flash/issues/1369
+[#1327]: https://www.free-decompiler.com/flash/issues/1327
+[#1343]: https://www.free-decompiler.com/flash/issues/1343
+[#1348]: https://www.free-decompiler.com/flash/issues/1348
+[#1354]: https://www.free-decompiler.com/flash/issues/1354
+[#1367]: https://www.free-decompiler.com/flash/issues/1367
+[#1401]: https://www.free-decompiler.com/flash/issues/1401
+[#1402]: https://www.free-decompiler.com/flash/issues/1402
+[#1430]: https://www.free-decompiler.com/flash/issues/1430
+[#1254]: https://www.free-decompiler.com/flash/issues/1254
+[#907]: https://www.free-decompiler.com/flash/issues/907
+[#1311]: https://www.free-decompiler.com/flash/issues/1311
+[#1313]: https://www.free-decompiler.com/flash/issues/1313
+[#1189]: https://www.free-decompiler.com/flash/issues/1189
+[#1274]: https://www.free-decompiler.com/flash/issues/1274
+[#1275]: https://www.free-decompiler.com/flash/issues/1275
+[#1278]: https://www.free-decompiler.com/flash/issues/1278
+[#1281]: https://www.free-decompiler.com/flash/issues/1281
+[#1289]: https://www.free-decompiler.com/flash/issues/1289
+[#1283]: https://www.free-decompiler.com/flash/issues/1283
+[#1294]: https://www.free-decompiler.com/flash/issues/1294
+[#1302]: https://www.free-decompiler.com/flash/issues/1302
+[#1309]: https://www.free-decompiler.com/flash/issues/1309
+[#1312]: https://www.free-decompiler.com/flash/issues/1312
+[#1303]: https://www.free-decompiler.com/flash/issues/1303
+[#1314]: https://www.free-decompiler.com/flash/issues/1314
+[#1320]: https://www.free-decompiler.com/flash/issues/1320
+[#1323]: https://www.free-decompiler.com/flash/issues/1323
[#1156]: https://www.free-decompiler.com/flash/issues/1156
[#1171]: https://www.free-decompiler.com/flash/issues/1171
[#1170]: https://www.free-decompiler.com/flash/issues/1170
@@ -2233,7 +2371,6 @@ All notable changes to this project will be documented in this file.
[#709]: https://www.free-decompiler.com/flash/issues/709
[#732]: https://www.free-decompiler.com/flash/issues/732
[#730]: https://www.free-decompiler.com/flash/issues/730
-[#735]: https://www.free-decompiler.com/flash/issues/735
[#722]: https://www.free-decompiler.com/flash/issues/722
[#725]: https://www.free-decompiler.com/flash/issues/725
[#715]: https://www.free-decompiler.com/flash/issues/715
@@ -2294,14 +2431,12 @@ All notable changes to this project will be documented in this file.
[#593]: https://www.free-decompiler.com/flash/issues/593
[#594]: https://www.free-decompiler.com/flash/issues/594
[#579]: https://www.free-decompiler.com/flash/issues/579
-[#428]: https://www.free-decompiler.com/flash/issues/428
[#337]: https://www.free-decompiler.com/flash/issues/337
[#584]: https://www.free-decompiler.com/flash/issues/584
[#576]: https://www.free-decompiler.com/flash/issues/576
[#250]: https://www.free-decompiler.com/flash/issues/250
[#580]: https://www.free-decompiler.com/flash/issues/580
[#510]: https://www.free-decompiler.com/flash/issues/510
-[#583]: https://www.free-decompiler.com/flash/issues/583
[#586]: https://www.free-decompiler.com/flash/issues/586
[#574]: https://www.free-decompiler.com/flash/issues/574
[#570]: https://www.free-decompiler.com/flash/issues/570
@@ -2627,39 +2762,4 @@ All notable changes to this project will be documented in this file.
[#35]: https://www.free-decompiler.com/flash/issues/35
[#32]: https://www.free-decompiler.com/flash/issues/32
[#31]: https://www.free-decompiler.com/flash/issues/31
-[#1240]: https://www.free-decompiler.com/flash/issues/1240
-[#1308]: https://www.free-decompiler.com/flash/issues/1308
-[#1333]: https://www.free-decompiler.com/flash/issues/1333
-[#1365]: https://www.free-decompiler.com/flash/issues/1365
-[#1369]: https://www.free-decompiler.com/flash/issues/1369
-[#1327]: https://www.free-decompiler.com/flash/issues/1327
-[#1343]: https://www.free-decompiler.com/flash/issues/1343
-[#1348]: https://www.free-decompiler.com/flash/issues/1348
-[#1354]: https://www.free-decompiler.com/flash/issues/1354
-[#1367]: https://www.free-decompiler.com/flash/issues/1367
-[#1401]: https://www.free-decompiler.com/flash/issues/1401
-[#1402]: https://www.free-decompiler.com/flash/issues/1402
-[#1430]: https://www.free-decompiler.com/flash/issues/1430
-[#1254]: https://www.free-decompiler.com/flash/issues/1254
-[#907]: https://www.free-decompiler.com/flash/issues/907
-[#1311]: https://www.free-decompiler.com/flash/issues/1311
-[#1313]: https://www.free-decompiler.com/flash/issues/1313
-[#1308]: https://www.free-decompiler.com/flash/issues/1308
-[#1189]: https://www.free-decompiler.com/flash/issues/1189
-[#1274]: https://www.free-decompiler.com/flash/issues/1274
-[#1275]: https://www.free-decompiler.com/flash/issues/1275
-[#1278]: https://www.free-decompiler.com/flash/issues/1278
-[#1281]: https://www.free-decompiler.com/flash/issues/1281
-[#1254]: https://www.free-decompiler.com/flash/issues/1254
-[#1289]: https://www.free-decompiler.com/flash/issues/1289
-[#1283]: https://www.free-decompiler.com/flash/issues/1283
-[#1294]: https://www.free-decompiler.com/flash/issues/1294
-[#1302]: https://www.free-decompiler.com/flash/issues/1302
-[#1309]: https://www.free-decompiler.com/flash/issues/1309
-[#1312]: https://www.free-decompiler.com/flash/issues/1312
-[#1303]: https://www.free-decompiler.com/flash/issues/1303
-[#1314]: https://www.free-decompiler.com/flash/issues/1314
-[#1320]: https://www.free-decompiler.com/flash/issues/1320
-[#1323]: https://www.free-decompiler.com/flash/issues/1323
[#27]: https://www.free-decompiler.com/flash/issues/27
-[#1449]: https://www.free-decompiler.com/flash/issues/1449
diff --git a/src/com/jpexs/decompiler/flash/gui/ChangelogUpdater.java b/src/com/jpexs/decompiler/flash/gui/ChangelogUpdater.java
new file mode 100644
index 000000000..3ce689c29
--- /dev/null
+++ b/src/com/jpexs/decompiler/flash/gui/ChangelogUpdater.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2021 JPEXS
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package com.jpexs.decompiler.flash.gui;
+
+import com.jpexs.helpers.Helper;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ *
+ * @author JPEXS
+ */
+public class ChangelogUpdater {
+
+ private static final String GITHUB_ADDRESS = "https://github.com/jindrapetrik/jpexs-decompiler/";
+ private static final String ISSUE_TRACKER_ADDRESS = "https://www.free-decompiler.com/flash/issues/";
+
+ public static void main(String[] args) throws UnsupportedEncodingException {
+ String changeLog = Helper.readTextFile("CHANGELOG.md");
+ changeLog = changeLog.replaceAll("\\[[^\\]]+\\]: [^\\r\\n]+\\r\\n", "");
+
+ changeLog = changeLog.replaceAll("\\[#([0-9]+)\\]", "#$1");
+
+ changeLog = changeLog.replaceAll("#([0-9]+)", "[#$1]");
+
+ Pattern issuePattern = Pattern.compile("\\[#([0-9]+)\\]");
+
+ Matcher issueMatcher = issuePattern.matcher(changeLog);
+ Set issues = new LinkedHashSet<>();
+ while (issueMatcher.find()) {
+ issues.add(Integer.parseInt(issueMatcher.group(1)));
+ }
+
+ Pattern headerPattern = Pattern.compile("## \\[([^\\]]+)\\]");
+
+ Matcher headerMatcher = headerPattern.matcher(changeLog);
+ List versionNames = new ArrayList<>();
+ List tagNames = new ArrayList<>();
+ while (headerMatcher.find()) {
+ String versionName = headerMatcher.group(1);
+ Pattern updatePattern = Pattern.compile("([0-9]+\\.[0-9]+\\.[0-9]+) update ([0-9]+)");
+ Matcher updateMatcher = updatePattern.matcher(versionName);
+ String tagName;
+ if (versionName.matches("[0-9]+\\.[0-9]+\\.[0-9]+")) {
+ tagName = "version" + versionName;
+ } else if (updateMatcher.matches()) {
+ tagName = "version" + updateMatcher.group(1) + "u" + updateMatcher.group(2);
+ } else {
+ tagName = versionName.replace(" ", "");
+ }
+ versionNames.add(versionName);
+ tagNames.add(tagName);
+ }
+
+ for (int i = 0; i < versionNames.size(); i++) {
+ String versionName = versionNames.get(i);
+ String tagName = tagNames.get(i);
+ String nextTagName = i == versionNames.size() - 1 ? null : tagNames.get(i + 1);
+
+ if (nextTagName == null) {
+ changeLog += "[" + versionName + "]: " + GITHUB_ADDRESS + "releases/tag/" + tagName + "\r\n";
+ } else {
+ changeLog += "[" + versionName + "]: " + GITHUB_ADDRESS + "compare/" + nextTagName + "..." + tagName + "\r\n";
+ }
+ }
+
+ for (int issue : issues) {
+ changeLog += "[#" + issue + "]: " + ISSUE_TRACKER_ADDRESS + issue + "\r\n";
+ }
+
+ Helper.writeFile("CHANGELOG.md", changeLog.getBytes("UTF-8"));
+ }
+}