github egoist/mygo v0.7.0
MyGo 0.7.0

latest release: v0.7.1
4 hours ago

Breaking changes

  • macOS child windows stay put when their parent moves, as they do on Windows and Linux. (#764)
  • Apps with Chinese, Japanese or Korean names get a new default slug, such as yun-yin-le for 云音乐. If you've already shipped on Linux, set slug to your current one, since a changed slug leaves the old executable and Debian package installed. (#768)
  • Disk images and Windows installers are named after the slug, such as my-app-1.2.0-arm64.dmg and my-app-setup-1.2.0-amd64.exe. Update download links and CI globs that use the old names. Installed apps update as before. (#769)
  • audio.Player.Position reports where playback is heard, so it reads about 40 ms later than before (250 ms with LatencyPlayback). Lyrics, progress bars and visualizers drawn from it are in sync with the sound. (#746)

Highlights

  • Sharp zoom for native UI. Context.SetZoom zooms a window's content the way a browser does: text, icons, vectors and images are drawn crisp at the zoomed size, and the pointer, IME, accessibility, menus, drags and web views all follow. The gallery example zooms with Ctrl/Cmd =, - and 0. (#739, @HeroSizy)
  • Flyouts and windows that size to their page. FitContent on FlyoutOptions and WindowOptions sizes a flyout or window to its web page's content and follows it as it changes, within the limits you set, like a browser extension's popup. (#787)
  • Icons on menu items. NewMenuIcon and MenuItem.Icon show a full-color or template icon beside a menu item's label, in app menus, context menus and tray menus, on macOS, Windows and Linux. (#776)
  • One-command install on macOS and Windows. Apps with updates get an install.sh that installs on macOS as well as Linux, and an install.ps1 for Windows. Both check the download's signature or checksum before installing. (#748, @HeroSizy)
  • Smoother animation that costs less. Spinners, progress bars and other moving drawings repaint only themselves, and the GPU redraws only the areas that changed. Painter.AnimationFrameRate lets slow motion (a turning record) draw at 30 or 60 frames a second instead of the display's 120, and Element.Cache keeps a still part of the window as one bitmap. (#753, #754, #757, #759, #760)

New

Windows and pages

  • Page.ThemeColor and OnThemeColorChanged read a page's <meta name="theme-color">, so you can tint your title bar or toolbar to match the page. (#778)
  • Page.IsAudible, OnAudibleChanged and SetAudioMuted tell you when a page plays sound and mute it as a browser mutes a tab. (#781)
  • Page.ProcessID gives the ID of the process that runs a page (on macOS and Windows). (#777)
  • WindowOpenRequest.UserInitiated tells a window-open handler whether the user clicked to open the window, so you can allow those and block pop-ups a script opens on its own. (#785)
  • On Windows, Window.SetWindowButtonsTheme draws the caption buttons of a hidden title bar for a light or dark background, regardless of the app's own appearance. (#763)
  • App.IsActive reports whether your app is the one in front. (#775)

Native UI

  • Element.Hidden hides an element and gives its room back, like CSS's display: none, while keeping the state of everything inside it. (#772)
  • Paths can be stroked with butt or square caps, miter or bevel joins, and dashes, like SVG strokes. (#774, @firede)
  • Glass.Clarity makes large glass panes, like sidebars and inspectors, clearer so the content under them reads through. (#736, @HeroSizy)
  • Markdown can draw inline math on the text line with your own renderer (Options.InlineMath), and unfinished $… math shows as math while a document streams in. (#737)
  • On Linux, native UI works with a touchscreen: tap to click, hold to right-click, drag to scroll and pinch to zoom. (#800)
  • The code editor highlights Dart, GraphQL, R and Scala. (#791)
  • In the terminal, Shift-click extends or shrinks the current selection, across lines too. (#590, @xierenyuan)

Audio

  • audio.SetLatency(audio.LatencyPlayback) lets music players buffer further ahead, so playback stays smooth when macOS switches between light and dark mode. (#743)

Updates and distribution

  • Updater.SetPrereleases offers prereleases to users who chose a beta, while everyone else stays on stable releases. mygo build suggests publishing a pre-release version as a prerelease. (#761, @HeroSizy)
  • A new slug config field names your app's files where plain ASCII is needed: the Linux executable and package, update archives and install scripts. (#768)
  • windows.displayName shows your app under another name than its executable's in the Start menu, shortcuts, Settings > Apps and the installer, such as "天气助手" for weather.exe. (#782)
  • Windows installers and install.ps1 close a running app before upgrading it, tray apps included, and the new publisher field shows in Settings > Apps. (#748, @HeroSizy)

Fixes

Updates

  • Apps with non-ASCII names (like "MyGo 云音乐") download updates reliably. They used to fail with "400 Bad Request". (#773)
  • On macOS, an installed update keeps the app's single Dock tile. (#806)
  • An update found by a background check opens in front of the app's windows, or waits until the app comes to the front. (#775)
  • On macOS, an app relaunched after an update keeps its child processes running when a program it started quits. (#747)

UI and apps

  • Cmd-Q and other quits always end the app. (#805)
  • SearchField, Combobox and TokenField with AutoFocus or Focus put the focus in the input, so typing and Submit work right away. (#793)
  • Scroll views and clipped boxes animate smoothly as they move, such as a sidebar folding on Windows. (#795, thanks @ikexing-cn)
  • The terminal's Mirror clears the old session's images when the other program starts a new session. (#792)

macOS

  • Child windows work on another display: they show and take clicks there, and the one you focus comes to the front. They stay above their parent, follow it into full screen and keep its level. (#764, @li-yifei)
  • A quick press and drag on a drag region always moves the window. (#765)
  • A tray title that shows a changing number (a timer, a rate) keeps its width, so the icon and its neighbours stay in place. (#766)
  • Fixed a crash when an accessibility client sets a number as a text field's value. (#803)

Windows

  • The terminal scrolls three rows per mouse wheel notch, like Windows Terminal. (#784)
  • With "Show accent color on title bars" on, windows with a hidden title bar show no accent strip at the top. (#804)
  • Hidden or off-screen windows no longer stall the app for a second on each frame. (#767)
  • Windows drawn without the GPU (MYGO_GPU=0) animate at the display's rate instead of using a whole CPU core. (#758)

Website

  • A Showcase page lists apps built with MyGo. Add yours by pull request. (#744)

New Contributors

Full Changelog: v0.6.4...v0.7.0

Don't miss a new mygo release

NewReleases is sending notifications on new releases.