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")); + } +}