<body><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000;text-align: left" dir="ltr">
                                        <img id="b4a77258-29a8-4f3c-816b-dfa5c217fd7c" src="cid:70bc27b1-f19f-4df8-b503-d24369e0f7e5" width="293" height="196"></img><br><div class="mb_sig"></div><blockquote class='history_container' type='cite' style='border-left-style:solid;border-width:1px; margin-top:20px; margin-left:0px;padding-left:10px;'>
                        <p style='color: #AAAAAA; margin-top: 10px;'>Am 06.07.2021 18:28:57 schrieb commits@source.squeak.org <commits@source.squeak.org>:</p><div style='font-family:Arial,Helvetica,sans-serif'> <br>Marcel Taeumel uploaded a new version of VMMakerUI to project VM Maker:<br>http://source.squeak.org/VMMaker/VMMakerUI-mt.39.mcz<br><br>==================== Summary ====================<br><br>Name: VMMakerUI-mt.39<br>Author: mt<br>Time: 6 July 2021, 6:28:49.096706 pm<br>UUID: 7957bd9a-fdbe-964b-8972-d4a4c3579eb4<br>Ancestors: VMMakerUI-mt.38<br><br>Adds more information to the update dialog. It now looks similar to the one for Squeak itself.<br><br>=============== Diff against VMMakerUI-mt.38 ===============<br><br>Item was added:<br>+ ----- Method: TheWorldMainDockingBar>>osvm_AppVeyor_statusBadgeUrl (in category '*VMMakerUI-updater') -----<br>+ osvm_AppVeyor_statusBadgeUrl<br>+ <br>+     ^ 'https://ci.appveyor.com/api/projects/status/ecrpcrqt844n8lkm/branch/Cog'!<br><br>Item was added:<br>+ ----- Method: TheWorldMainDockingBar>>osvm_AppVeyor_statusPageUrl (in category '*VMMakerUI-updater') -----<br>+ osvm_AppVeyor_statusPageUrl<br>+ <br>+       ^ 'https://ci.appveyor.com/project/OpenSmalltalk/vm/branch/Cog'!<br><br>Item was added:<br>+ ----- Method: TheWorldMainDockingBar>>osvm_AppVeyor_statusTimestamp (in category '*VMMakerUI-updater') -----<br>+ osvm_AppVeyor_statusTimestamp<br>+ <br>+       | url stamp  dateAndTime |<br>+   url := 'https://ci.appveyor.com/api/projects/OpenSmalltalk/vm/branch/Cog'.<br>+   stamp := ((WebUtils jsonDecode: (WebClient httpGet: url) content readStream) at: 'build') at: 'finished'.<br>+    stamp ifEmpty: [^ stamp].<br>+    dateAndTime := DateAndTime readFrom: stamp readStream.<br>+       ^ String streamContents: [:s |<br>+               dateAndTime asDate = Date today<br>+                      ifTrue: [s nextPutAll: 'Today' translated, ',']<br>+                      ifFalse: [dateAndTime asDate = Date yesterday<br>+                                ifTrue: [s nextPutAll: 'Yesterday' translated, ',']<br>+                          ifFalse: [dateAndTime printYMDOn: s]].<br>+               s space.<br>+             dateAndTime printHMSOn: s]!<br><br>Item was added:<br>+ ----- Method: TheWorldMainDockingBar>>osvm_TravisCI_statusBadgeUrl (in category '*VMMakerUI-updater') -----<br>+ osvm_TravisCI_statusBadgeUrl<br>+ <br>+      ^ 'https://api.travis-ci.com/OpenSmalltalk/opensmalltalk-vm.png?branch=Cog'!<br><br>Item was added:<br>+ ----- Method: TheWorldMainDockingBar>>osvm_TravisCI_statusPageUrl (in category '*VMMakerUI-updater') -----<br>+ osvm_TravisCI_statusPageUrl<br>+ <br>+       ^ 'https://travis-ci.com/OpenSmalltalk/opensmalltalk-vm'!<br><br>Item was added:<br>+ ----- Method: TheWorldMainDockingBar>>osvm_TravisCI_statusTimestamp (in category '*VMMakerUI-updater') -----<br>+ osvm_TravisCI_statusTimestamp<br>+ <br>+      | stamp " 'Mon, 05 Jul 2021 17:52:11 GMT' " dateAndTime |<br>+  stamp := (WebClient httpGet: self osvm_TravisCI_statusBadgeUrl) headerAt: 'last-modified'.<br>+   stamp ifEmpty: [^ stamp].<br>+    dateAndTime := DateAndTime readFrom: (((stamp allButFirst: 4) allButLast: 4), ' Z') readStream.<br>+      ^ String streamContents: [:s |<br>+               dateAndTime asDate = Date today<br>+                      ifTrue: [s nextPutAll: 'Today' translated, ',']<br>+                      ifFalse: [dateAndTime asDate = Date yesterday<br>+                                ifTrue: [s nextPutAll: 'Yesterday' translated, ',']<br>+                          ifFalse: [dateAndTime printYMDOn: s]].<br>+               s space.<br>+             dateAndTime printHMSOn: s]!<br><br>Item was changed:<br>  ----- Method: TheWorldMainDockingBar>>updateVMMaker (in category '*VMMakerUI-updater') -----<br>  updateVMMaker<br>       <updater: 'update="" vmmaker'=""><br>  <br>+      | updater history message |<br>-  | updater |<br>   updater := MCMcmUpdater<br>               updateMapNamed: 'update.oscog'<br>                repository: 'http://source.squeak.org/VMMaker'.<br>       updater lastUpdateMap ifEmpty: [<br>              "If this is the first time that you use the updater, start at 5.mcm to avoid loading old code."<br>             updater lastUpdateMap at: updater repository put: 5].<br>+ <br>+    history := updater dependentPackages<br>+                 collect: [:package | package name -> package workingCopy ancestors first]<br>+                 as: OrderedDictionary.<br>+ <br>+   updater doUpdate: false.<br>+     <br>+     "Set update history to the packages that actually changed."<br>+        updater dependentPackages do: [:package | | oldVersionInfo newVersionInfo |<br>+          oldVersionInfo := history at: package name ifAbsent: [].<br>+             newVersionInfo := package workingCopy ancestors first.<br>+               (oldVersionInfo ifNil: [0] ifNotNil: [:v | v versionNumber]) < newVersionInfo versionNumber<br>+                       ifTrue: [history at: package name put: {oldVersionInfo. newVersionInfo}]<br>+                     ifFalse: [history removeKey: package name]].<br>+         <br>+     "Prepare message, including the update history and OSVM ci badges."<br>+        message := String streamContents: [:s |<br>+              s nextPutAll: 'VMMaker update succesfully.<br><br>'.<br>+             history<br>+                      ifEmpty: [s nextPutAll: 'All packages were already up-to-date.']<br>+                     ifNotEmpty: [s nextPutAll: 'Updated packages:'].<br>+             history keysAndValuesDo: [:packageName :updateInfo |<br>+                         s nextPutAll: '<br> - '.<br>+                       s nextPutAll: packageName; space.<br>+                    updateInfo isArray<br>+                           ifFalse: [s nextPutAll: '*removed*' translated]<br>+                              ifTrue: [<br>+                                    updateInfo first<br>+                                             ifNil: [s nextPutAll: '*added*' translated]<br>+                                          ifNotNil: [s print: updateInfo first versionNumber].<br>+                                         s nextPutAll: ' -> <b>'.<br>+                                    s print: updateInfo second versionNumber.<br>+                                    s nextPutAll: '</b>']].<br>+                s nextPutAll: ('<br><br>Url: <a href="{1}">{1}</a>' format: {updater repository}).<br>+                 s nextPutAll: '<br>Map: '; print: updater updateMapName.<br>+       <br>+             s nextPutAll: ('<br><br>TravisCI status: <a href="{1}"><img></img> {3}</a>'<br>+                    format: {<br>+                            self osvm_TravisCI_statusPageUrl.<br>+                            self osvm_TravisCI_statusBadgeUrl.<br>+                           self osvm_TravisCI_statusTimestamp}).<br>+                s nextPutAll: ('<br>AppVeyor status: <a href="{1}"><img></img> {3}</a>'<br>+                      format: {<br>+                            self osvm_AppVeyor_statusPageUrl.<br>+                            self osvm_AppVeyor_statusBadgeUrl.<br>+                           self osvm_AppVeyor_statusTimestamp}).<br>+                <br>+             s nextPutAll: ('<br><br>NOTE THAT updated platform sources might be available, too:<br> -> <a href="{1}">{1}</a>' format: {'https://github.com/OpenSmalltalk/opensmalltalk-vm'}).<br>+                         <br>+                     ].<br>+   self inform: message asTextFromHtml.!<br>-        updater doUpdate: true.!<br><br></updater:></div></blockquote>
                                        </div></body>