<body><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000;text-align: left" dir="ltr">
                                        <img id="75cd41f8-a13d-4d6d-8549-4b3241440679" src="cid:6cfb52a6-5446-4390-a653-ee1e96a3cac7" width="269" height="316"></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 11.04.2022 10:25:35 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.57.mcz<br><br>==================== Summary ====================<br><br>Name: VMMakerUI-mt.57<br>Author: mt<br>Time: 11 April 2022, 10:25:28.069975 am<br>UUID: f752708f-00fc-fe4e-b082-82981358e1be<br>Ancestors: VMMakerUI-eem.56<br><br>Updates the update dialog:<br>- More compact badges<br>- More compact date-and-time display of last build<br>- Add macOS ARM builds<br><br>=============== Diff against VMMakerUI-eem.56 ===============<br><br>Item was changed:<br>  ----- Method: TheWorldMainDockingBar>>osvm_GitHubActions_statusBadgeUrl: (in category '*VMMakerUI-updater') -----<br>  osvm_GitHubActions_statusBadgeUrl: workflowName<br>  <br>       | id |<br>        id := workflowName encodeForHTTP.<br>+    ^ 'https://raster.shields.io/github/workflow/status/OpenSmalltalk/opensmalltalk-vm/{1}?style=flat&logo=github&label='<br>-        ^ 'https://raster.shields.io/github/workflow/status/OpenSmalltalk/opensmalltalk-vm/{1}?style=flat&logo=github'<br>            format: {id}!<br><br>Item was changed:<br>  ----- Method: TheWorldMainDockingBar>>osvm_GitHubActions_statusTimestamp: (in category '*VMMakerUI-updater') -----<br>  osvm_GitHubActions_statusTimestamp: workflow<br>        "Slow. Fetch HTML page, extract first occurrence of<br>              ... <time-ago datetime='2021-08-04T14:24:20Z' ...=""></time-ago><br>  <br>    | statusPage begin end dateAndTime |<br>          statusPage := (WebClient httpGet: (self osvm_GitHubActions_statusPageUrl: workflow)) content.<br>         begin := statusPage findString: 'datetime' startingAt: 100000. "Skip the first X bytes decoration."<br>         end := statusPage findString: 'Z' startingAt: begin.<br>          dateAndTime := DateAndTime readFrom: (statusPage copyFrom: begin + 10 to: end) 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 respondsTo: #printHMOn:)<br>+                        ifTrue: [dateAndTime printHMOn: s]<br>+                   ifFalse: [dateAndTime printHMSOn: s] ]!<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 := 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<br>                        "N.B. the first version in a package's history will have empty ancestors."<br>                          ifEmpty: [nil] ifNotEmpty: [:ancestors| 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: [oldVersionInfo 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 succesful.<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>+          #('macOS (x86)' macos 'Build for macOS'<br>+              'macOS (ARM)' 'macos-arm' 'Build for macOS (ARM)'<br>-            #('macOS' macos 'Build for macOS'<br>             'Windows' win 'Build for Windows'<br>             'Linux (x86)' linux 'Build for Linux (x86)'<br>           'Linux (ARM)' 'linux-arm' 'Build for Linux (ARM)')<br>                    groupsDo: [:label :workflow :workflowName |<br>+                          s nextPutAll: ('<br><a href="{2}"><img></img> {4}</a> {1}'<br>-                           s nextPutAll: ('<br>{1} status: <a href="{2}"><img></img> {4}</a>'<br>                                    format: {<br>                                             label.<br>                                                self osvm_GitHubActions_statusPageUrl: workflow.<br>                                              self osvm_GitHubActions_statusBadgeUrl: workflowName.<br>                                                 self osvm_GitHubActions_statusTimestamp: workflow})].<br>                 <br>+             s nextPutAll: ('<br><br>Note that updated platform sources might be available, too: <a href="{1}">{1}</a>' format: {'https://github.com/OpenSmalltalk/opensmalltalk-vm'}).<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><br></updater:></div></blockquote>
                                        </div></body>