Breaking changes
- Every key reaches
HandleInput, named by its position.InputEvent.Codeis the key by its place on any keyboard, named as the web'sKeyboardEvent.code: it tells left from right (ui.CodeShiftLeft,ui.CodeAltRight) and names keysKeyhas no name for, such as Caps Lock, the keypad, Print Screen and the 102nd key.HandleInputandObserveInputnow get every key the system reports, as a web page's listeners do: modifiers pressed and released alone (a lone tap of Super among them), the lock keys, and keys the layout types noKeyfor arrive asInputKeyDownandInputKeyUpwithKeyset toui.KeyUnknown. A game or an emulator can now map keys by position, and an app can react to a tap of a modifier alone. (#1328)- Handlers that pick keys with a
switchsee no change. - Handlers that react to any key, such as "stop the demo on the first key", now also fire on Shift. Check
ev.Key != ui.KeyUnknown. - Handlers that return true for every key now take Alt, so it no longer opens the menu bar on Windows and Linux. Return false for the keys you don't use.
plugins/terminal'sOnKeyno longer sees keys without aKey, which on macOS and in browsers includes keys such as F13.
- Handlers that pick keys with a
Changes in behavior
- Inactive windows look inactive. While another window is in front, a MyGo window fades its accent to gray, as native apps do. To keep the accent in every window, set
Theme.InactiveAccent = Theme.Accent. (#1022, requested by @xc2 in #1019) Opacityfades an element and its children as one, as CSS does. Overlapping children of a faded element no longer darken each other, so a faded card with a badge over its edge looks the same as on the web. (#1321, requested by @cunninghamcard-bit in #1289)- Presses and drags follow the primary button.
Pressed,Dragged,DragVelocityandDragEndedno longer start on a right or middle press, so a right-button drag no longer moves a card, a slider, a split or a table column. It still right-clicks and opens context menus.PressedButtontells which button presses an element. (#1156) - A cancelled press commits nothing. When the system takes a press, as a window losing the mouse capture or a touch turning into scrolling in a browser, there is no click, drop,
DragEndedor context menu, and aDraggablegoes back to where it was picked up.HandleInputstill gets the release, withInputEvent.Canceledset, andPressCanceledlets a view roll back a preview. (#1365, requested by @cunninghamcard-bit in #1362) - A toast's time keeps running in the background. A tray app whose main window is hidden no longer shows stale toasts when the user opens the window. A toast whose time ran out while the window was in the background closes without showing. (#1064, #1369, requested by @xiyaowong in #1051)
- Frames that only animate wait while a window is minimized on Linux and Windows, as they already did on macOS and the web. (#1325)
- A
Transitionthat names no channel fades shadows too, as it fades colors. (#1211) ui.Shapegives glyphs in visual order on Windows, as it does on macOS and Linux. (#1165, reported by @ikexing-cn in #1161)mygo buildno longer ships Go sources fromresources/, andresourcesExcludeinmygo.jsonleaves out other paths there. Dotfiles inside a resource directory now ship, so a package that reads its own.manifest.jsonworks once built; hidden directories and.DS_Store,Thumbs.dbanddesktop.inistay out. (#1063, requested by @xiyaowong in #1052; #1167, @baka-world, reported in #1166)
Highlights
- Edit styles live in the inspector. As in Chrome's DevTools, a click on a value in the Styles tab edits it, with the window following as you type. A checkbox turns a declaration off, + adds one, and Up and Down step a number. Copy as Go writes what you changed as calls to paste into the view. The Styles tab can also force
:hover,:activeand the focus states on an element, the flex and grid badges in the tree draw a container's layout over the content, and themain.go:42beside an element opens that line in your editor (MYGO_EDITOR,VISUALorEDITOR). Production builds leave all of it out. (#1146, #1147, #1148, #1160, #1162) mygo-automation, a command line for AI agents. An agent driving the app it develops gets compact text snapshots of a window with short refs (@e2 [button] "Add"), acts on them withpress,filland app keys, and with--settlesees a diff of what changed.mygo-automation skillsprints a SKILL.md that matches the installed version. (#1117, #1175, requested by @fondoger in #1112)- Magic Move for shared elements.
ElementTransition.Flyflies an element from the one it takes over from, as Keynote's Magic Move and Flutter's Hero do. A playlist tile can open into its page with the cover flying from the grid into the header, its corners, opacity, colors and 3D transforms blending on the way.ContentTransition.Morphturns one text into another character by character, so a tile's "Ocean" grows into the page's "Ocean at dusk".Router.Transition = TransitionMatchfades pages into each other while their shared elements fly. The gallery's Motion page has a demo. (#890, #1016, @hronro) - Faster native UI on Windows. GPU time per frame is about halved, a scene of 9,600 boxes runs at 60 fps instead of 30, and input under load reaches the screen in 25 ms instead of 43. Pages of text use less memory on every platform, because glyph atlases are sized by the glyphs they hold. (#1012)
- Faster text on macOS. Resizing a window of text, sliding a sidebar or dragging a split takes about half the CPU it did: 4.2 ms a frame instead of 8.1 on a document of 40 paragraphs. A dashboard of 600 changing numbers takes 5.0 ms instead of 7.2. (#1318, #1333)
- Windows 11 menus. Tray menus open above the taskbar, centered on the icon, as the system's do. Menus MyGo draws get Windows 11's Acrylic material, rounded corners and shortcut labels, with a solid fallback when transparency effects are off or a contrast theme is on. (#1178, requested by @godcop in #1169)
- Liquid Glass over web views. On macOS 26,
glass.Glass{Native: true}puts the system's real Liquid Glass under a native toolbar or sidebar that sits over a page.glass.Groupmerges nearby panes into one surface that bridges and separates as they move, and glass follows Reduce Transparency and Increase Contrast. (#1107, @kyya) - Screen readers read hand-built widgets as the web does. A data grid, a tree, a suggestion list or a form of your own can now say everything ARIA can: grid and tree grid roles with row and column counts, list boxes and options, "3 of 50" and selection, live regions and alerts that the engine announces itself, descriptions, error messages, invalid fields, current items, busy content, keyboard shortcuts, autocomplete, and controls that are unavailable but still focusable. They reach VoiceOver, Narrator and Orca.
Tester.Accessreads an element's role, name and states in tests. (#1104, #1158, #1179, #1199, #1208, #1209, #1256, #1280, #1316, #1319, #1322, #1366, #1371, requested by @cunninghamcard-bit in #1093, #1172, #1181, #1193, #1293, #1295 and #1309) - Ask for permissions, and guide users through System Settings. The new
plugins/permissionflowchecks and requests Accessibility, Screen Recording, Input Monitoring, Full Disk Access, the microphone, the camera and more on macOS. Where the user has to drag the app into a list in System Settings,Guideopens the right page and shows a panel with the app's card to drag. On Windows it reads the microphone and camera switches and opens their settings. (#655) - Snippets in the code editor.
editor.ParseSnippetandState.InsertSnippetinsert templates such asprint(${1:value})$0, with fields that are edited together and Tab stops between them, and aCompletioncan carry one. (#1361, @zzstar101)
New
Layout and painting
Element.Stickykeeps an element in view inside its scroll container, as CSS'sposition: sticky: a timeline's day heading stays at the top until the next day pushes it out. (#1195)ScrollSnapandSnapAlignsnap a scroll container to the places its elements mark, as CSS's scroll snap, for carousels and paged galleries. (#1187)Element.ZIndexorders an element's painting among its siblings, as CSS'sz-index. (#1226, requested by @cunninghamcard-bit in #1205)ClipInset,ClipInsetPercent,Painter.ClipPath, andMaskLinearGradient,MaskRadialGradientandMaskConicGradientclip and mask an element.Maskslayers several masks, as CSS'smask-composite, andObjectPositionplaces an image's picture whereFitcrops it.ui.ParsePathreads SVG path data. (#1110, #1210, requested by @cunninghamcard-bit in #1100)Path.FillRule(ui.EvenOdd)fills and clips a ring with its hole,Path.Containstells whether a point is inside a path, andElement.HitTestmakes an element take the pointer only where you say, such as inside a round button. (#1315)TranslationZ,Translation3DandElement.TranslateZmove content toward or away from the viewer, for depth stacks, carousels and cards that lift as they turn. (#1364, requested by @cunninghamcard-bit in #1363)Element.TextShadowandSpan.Shadowcast a shadow of text, so a caption over a photo stands out.TextStrokeoutlines text, andTabSizesets tab stops. (#1217, #1327)Element.Balancewraps a heading into lines of about the same width, andPrettykeeps a paragraph's last line from holding a single word. (#1110, #1327)PreserveSpaceskeeps a text's spaces, aswhite-space: break-spaces. (#1201, @cunninghamcard-bit, requested in #1200)CaretColorsets the color of a text input's caret. (#1215, @cunninghamcard-bit, requested in #1214)NoShadowtakes off the shadows an element has, so a card a helper returns with a shadow can be made flat. (#1267, @cunninghamcard-bit, requested in #1265)- A
Spancan reset letter spacing withNoLetterSpacingand pad its background withPaddingXandPaddingY, for inline tags and code. (#1257, requested by @cunninghamcard-bit in #1227) Track.MinandTrack.MinContentgive grid tracks a minimum, as CSS'sminmax(240px, 1fr). (#1255, requested by @cunninghamcard-bit in #1240)MaxWidthandMaxWidthPercentapply together, as CSS'smax-width: min(78%, 34rem)for a chat bubble, and so do the other minimum and maximum sizes.DimDisabled(false)keeps a disabled element at full opacity, for a design that styles its own disabled look. (#1176)
Motion
Motion.Blurblurs an Enter or Exit,TranslatePercentand theXPercent/YPercentof motions and poses move by a share of the element's own size, andAnimation.OklabandColor.MixOklabmix colors in Oklab.ElementTransition.AfterExitsholds an element back until its siblings have left, andElement.ChildExitlets a page that turns around mid-step leave the new way. (#1106, requested by @cunninghamcard-bit in #1095)ElementTransitionanimates shadows (Shadows), times exits withExitDurationandExitEase, and animatesWidthorHeightalone, so a panel springs open while its width follows a drag.AttachedOriginand a motion'sFlipmake a popover grow from the sideAttachToput it on. (#1211, #1259, requested by @cunninghamcard-bit in #1253)NonMotionkeeps a fade or a blur animating while the desktop asks for less motion. (#1312, requested by @cunninghamcard-bit in #1290)ScrollIntoViewlines an element up at the start, center or end, and can glide there. (#1273, requested by @cunninghamcard-bit in #1264)
Input and focus
Element.ObserveInputlets a container see the keys, text and presses inside it before the focused element gets them, as the web's capture phase. (#1221, requested by @cunninghamcard-bit in #1206)Context.KeyDownandKeysDowntell the keys held in the window, whatever has the focus, for a shortcut cheat sheet that lights the keys held. (#1177)Context.ShortcutRepeatedtells a shortcut's auto-repeat from a press, andContext.OnWindowShortcutdeclares a window shortcut from anywhere in the tree. (#1198)Element.FocusLefttells the focus leaving an element, so a combobox closes on blur but not as the focus moves into its list.Context.FocusTakesTexttells whether the focused element takes text. (#1202)TabStop(false)makes an element focusable but leaves it out of Tab's order, astabindex="-1". (#1314, requested by @cunninghamcard-bit in #1308)LabelledByties a caption the view draws to its control: it names the control, and a click on it focuses the control or toggles a check box. (#1319, requested by @cunninghamcard-bit in #1309)PressedInsidetells a press inside an element without taking the pointer, so a table cell can notice an Alt-click while its row still chooses. (#431, @saanuregh)DragMissedtells a drag's source it was let go over no target, and where, for tearing a tab out into a window of its own. (#1351, @saanuregh)- Presses carry their pointer type and pressure, for pen and touch. More cursors (progress, wait, help, cell, zoom and others), and the result of a clipboard write. (#1204)
Preferences.Pointer,AnyPointer,NoHoverandNoAnyHovertell whether the pointer is coarse and can hover, as CSS's media queries, so a touch-first layout can give larger targets. (#1326)Context.WindowHiddentells whether the window is hidden, minimized or covered, so a dashboard can pause its polling. (#1325)InViewMarginandInViewAmounttell an element in view with a margin, or by a share of its area, as Intersection Observer does, to load a thumbnail ahead of time or count an impression once half a card shows. (#1274, #1324, requested by @cunninghamcard-bit in #1266)MaxLengthlimits how long a text input's value can be typed. (#1269, @cunninghamcard-bit, requested in #1261)SplitResetmakes a double click on a split's divider put the pane back at a size you choose. (#1313, @BABA983)- A value made with
Localthat is anio.Closeris closed when its element goes. (#1233, requested by @cunninghamcard-bit in #1225)
Widgets
MenuBase,ContextMenuBaseandAccordionBasegive menus and accordions with your own layout the keyboard and focus of the built-in ones, andCheckboxStateBasehas a mixed state for a "select all" box. A base's focus ring can be set. (#1108, requested by @cunninghamcard-bit in #1096)TreeBaseis a tree without a look, with a tree's keys and accessibility, and an outline's rows can start with your own content (Prefix). (#1155)- A
MenuBaseitem can keep its menu open as it is chosen (KeepOpen), andGroupputs a row of items, such as Light, Dark and System, in one stop of the keys. (#1154) - A
SelectBasecan be opened and closed by its caller (SetOpen). (#1183) - A
ComboboxBasecan show a "No matches" row. (#1150) - Menu items take an icon (
Icon), a subtitle (Subtitle) and a tooltip (Tooltip). (#1297, #1299, @baranwang, requested in #1296 and #1298; #1367, @saanuregh) Context.SetMenuPresentation(ui.PopoverMenus)draws every menu of a window in the window, the table's, the code editor's and text inputs' editing menu included. (#1359, @saanuregh)ListState.HeaderCellbuilds into a table's header cells, andListState.CellsStylepaints a spreadsheet's chosen cell, its row and stripes. (#432, @saanuregh; #1379, @Kuangcp)ListState.DragRowsdrags a list's rows out to targets elsewhere, such as files into a folder row. (#1089, @MichaelC001)AttachEdgeMarginkeeps an attached panel a chosen distance from the window's edges. (#1285, @cunninghamcard-bit, requested in #1283)Theme.TooltipDelaysets how long the pointer rests before a tooltip shows, for all of a window or part of it. (#1062, requested by @xiyaowong in #1056)Theme.WindowButtonstells which window controls the desktop's title bars have, so an app drawing its own shows none under Hyprland or Sway. (#1320)KeepScrollbars(true)keeps a scroll container's or a table's bars showing while its content overflows. (#999, requested by @Binaryify in #998)
Code editor, terminal and Markdown
- The line between a split diff's sides can be dragged, or moved with the arrow keys, and
DiffState.SplitPercentholds the share for the app to save. (#1021, requested by @yangdev02 in #1020) DiffState.ScrollY,SetScrollY,ViewportHeightandLineToplet an app draw a minimap beside a diff. The code editor and the diff view takeKeepScrollbarsandNoScrollbars. (#999, requested by @Binaryify in #998)State.HoverDelaysets when the code editor's hover shows, andNoPointerHovershows it only from the keys. (#433, @saanuregh)terminal.Options.ShellIntegrationmarks zsh prompts, so zsh redraws its prompt cleanly as the window resizes. (#1077, @daodao97)- Option-click (Alt-click elsewhere) on the command at a shell's prompt moves the cursor there, as in Ghostty and kitty. (#1085, requested by @Th1nkK1D in #1070)
Font.CellWidthwidens the terminal's columns while glyphs keep their size. (#1229, @iFwu)- The terminal links paths in Chinese and Japanese prose, quoted paths with spaces, and places such as
app.ts(12,3)andapp.go#L12C3. (#1302, @daodao97) markdown.Options.LinkMenugives each link a context menu of its own, such as Copy Path and Reveal in Finder for a file link, andOptions.LinkIconputs an icon before a link's text. (#1136, requested by @miniers in #1130; #1131, @HarriesCC)markdown.Revealedtells when a streamed reply has finished showing, so a chat can show its time and actions then. (#1381, requested by @tsugumi42 in #1380)
Platform
plugins/sfsymbolsdraws Apple's SF Symbols in native UI on macOS, and reports none elsewhere so apps fall back to their own icons. (#1149, @kyya)NotificationOptions.Imageshows a picture with a notification, such as a track's cover. (#1011, requested by @fzn0x in #1009)Shell.TypeIcongives the system's icon for a file type with no file on disk. (#984, @baranwang, requested in #983)FileFilter.MIMETypesfilters a file dialog by MIME type, such asimage/*. (#1325)- Flyouts of native UI size to their content with
FitContent, and a window with a flyout as itsParentandModalopens over it. (#1069, #1067, requested by @xiyaowong in #1054 and #1055) - A rounded web view is cut to its corners, and a scaled one shows its page scaled, on every platform. (#1034, requested by @ourongxing in #1026)
- A web view gives the native UI around it the keys its page doesn't handle. (#1040, requested by @ichts in #1036)
audio.Player.SetPreservesPitchkeeps a voice's pitch at 1.5x or 2x, for podcast and lecture players. (#1254, requested by @cunninghamcard-bit in #1228)- On Linux,
Theme.SetGTKCSSstyles GTK's own widgets, such as header bars and title buttons, andApp.SetDMABUFRendererturns WebKitGTK's faster DMA-BUF renderer on, everywhere or only on hosts where it's safe. (#1126, #1124, requested by @baka-world in #1121 and #1122)
Formatting
NumberOptions.Notationwrites compact numbers ("1.2K"),NumberOptions.Currencyamounts of money, andNumberOptions.SignDisplaya plus, as in "+3.4%".FormatDateRangewrites ranges of dates, andFormatRelativeTimewrites "3 minutes ago" in each language. (#1218, #1258; #1287, @cunninghamcard-bit, requested in #1286; #1348, @zzstar101)
Build and distribution
mygo.jsontakes alicense, used by the PKGBUILD. (#1119, @baka-world, requested in #1118)- The Linux desktop entry names the window class, so X11 taskbars group the window with its launcher and can pin it. (#1129, @baka-world, reported in #1128)
Fixes
UI and apps
- A drag released between two frames reaches the release point, so dividers, columns, sliders, text selection and rows chosen by dragging no longer stop short. (#1008, #1015, @liby)
- A click is no longer swallowed after a press that moved its element. (#1003, reported by @lixw1994 in #1001)
- Apps that keep many fonts in use no longer crash on macOS and Linux when text laid out earlier is drawn again. (#990, reported by @caelyreth in #982)
- Text moved by a fraction of a pixel inside rounded clips no longer costs tens of MB of memory, and text that changes width is laid out faster. (#1005, reported by @saminnet in #1002; #1013, @hronro)
- Long stroked paths, such as a chart's lines, no longer vanish from frames. (#1090, #1113, reported by @SakuraToErii in #1086)
- A closed window lets go of everything it showed, so a screen capture tool no longer keeps old captures in memory.
ReleasePixelsfrees a bitmap's pixels at once. (#1282, reported by @douglarek in #1281) - Code that keeps the window from
NewWindowin a variable and reads it in the view no longer crashes on the first frame. (#1068, reported by @xiyaowong in #1053) Evalreturns an error when its window closes or the app quits, instead of waiting forever. (#1065)- The pointer goes through a tooltip to what is under it, so the wheel scrolls the view under a tip. (#1091, @wibus-wee)
- A tooltip shows when the keys move to a menu item or an option, not only under the pointer. (#1368, @saanuregh)
- Popovers animate their content, and their Enter and Exit transitions play, including an Enter's travel on a panel placed with
AttachTo. (#1137; #1140, #1192, @cunninghamcard-bit, reported in #1139 and #1191) - A trigger no longer goes dark for a frame when the popup over it closes. (#1377)
- An element focused as it is first built, such as a popover's search field, shows its focus within at once. (#1142, @cunninghamcard-bit, reported in #1141)
- Typing while a press is held no longer moves the caret back to the pointer. (#1159, @1bit-JS, reported in #1152)
SelectBaseandTabsBasepass over disabled options and tabs, Tab enters a radio group or tab list at the one chosen, and Up opens a menu button on its last item. (#1135, #1153, #1186, @cunninghamcard-bit, reported in #1151 and #1185; #1150)- A focused link takes Enter alone; Space scrolls, as on the web. (#1278, reported by @cunninghamcard-bit in #1276)
- The calendar's next and previous month buttons no longer skip a month from the 31st. (#1157, @wiptgdxv)
- Turning the wheel back at the end of content turns at once. (#1356, @sugarbearr)
- A
NumberInputorDecimalInputkeeps its buttons within the width it is given, and anAlertDialogfits or wraps its buttons. (#1349, @saanuregh; #1329) - A text's
ContentTransitionno longer stays half faded beside a blinking caret. (#1350, @saanuregh) - A blur or effect inside a
BlurorCacheelement is no longer cut off at the element's box. (#1375) - An inline
Textfades with itsOpacity, a transparent color orInvisible. (#1272, reported by @cunninghamcard-bit in #1262) - A text ending in a no-break space keeps it, and an invisible child gives its box a baseline, as on the web. (#1134, #1133, @cunninghamcard-bit)
- Screen readers reach the buttons inside headings and column headers, leave text hidden with
AccessHiddenout of a paragraph's name, read a range's value text, and VoiceOver no longer says "collapsed" on elements that never open. (#1310, @HiPanJin, reported in #1307; #1279, reported by @cunninghamcard-bit in #1275; #1268, #1223, @cunninghamcard-bit, reported in #1260 and #1222; #1188) - Window states, recent documents and recovery copies no longer read as missing on Windows while they are being saved. (#1138)
- Documents no longer lose edits when a save and an edit cross, and recovery keeps copies it can't restore yet. (#1125, @puresky271)
- A document follows its file when another app renames it. (#1127)
Tester's clicks on a named element fail when the element is hidden or covered, instead of clicking what is there. (#1116, @echoVic)mygo migrate-ui -writeno longer turns nil checks of values that aren't elements into code that doesn't compile. (#996, reported by @tacshi in #994)
Code editor, terminal and Markdown
- A long diff that fits its content scrolls without working through every line, a minified JSON file's diff shows in milliseconds instead of seconds, and a split diff with large fillers no longer drops frames. (#876, @hyoban, reported in #1300; #1335, @hyoban, reported in #1334; #1197, @overcat, reported in #1194)
- A patch's hunks are highlighted one by one, so a hunk ending in a block comment no longer colors the next one gray. (#1048, reported by @Binaryify in #1047)
- What an input method composes in the code editor is underlined. (#989, @goSeeFuture, reported in #987)
- The terminal no longer crashes reading its keyboard modes on Windows. (#1145, reported by @NriotHrreion in #1143)
- A program's synchronized update shows after a second even when it never ends it. (#1305, @daodao97)
- A full-screen terminal repaint takes less of the main thread, especially on Linux. (#1249, #1250, @Gaurav-Gosain)
- With
OptionAsAlton macOS, Option-E sends only Esc e. (#1004, reported by @lixw1994 in #1000) - On macOS, CJK punctuation keeps its cells in the terminal, and holding a letter key repeats it. (#1084, @UncertaintyDeterminesYou4ndMe, reported in #1083; #1374)
- On Windows, what AltGr types reaches the terminal as text, so AltGr+Q types
@on a German layout. (#1270, reported by @richardkfm in #1203) - In Chinese and Japanese text,
**bold**and~~strikethrough~~work without spaces around them, and a link ends at punctuation such as,or。. (#1057, @daodao97; #985, @baranwang, reported in #980) - A link's hover underline is drawn whole instead of broken at descenders and slashes. (#1058, @daodao97)
macOS
- A window resized from its view no longer keeps showing its old frame stretched. (#1045, reported by @liukun in #1044)
- A native UI window no longer stops drawing as it shows. (#1087)
- A tray's popover closes on a click on its icon. (#1059, reported by @gvenusleo in #1050)
- A page restored with
SessionStatekeeps its scroll position as its window shows. (#1088) - A window dragged by a drag region no longer shakes. (#1378)
- A Liquid Glass window that isn't
Transparentshows what is behind it instead of solid gray. (#1355, reported by @contursofran in #1354) mygo buildmakes disk images on macOS 26.7.1. (#1353, reported by @rawat9 in #1352)- Two-finger clicks open context menus even when security software re-posts them as left clicks. (#997, @roma-glushko)
Windows
- Windows open and come back where they were on displays of different scales. (#1038, #1042)
Restoreleaves a visible maximized window maximized. (#1213, reported by @xiyaowong in #1212)- Edit › Paste in a page pastes the clipboard's HTML, images and files, as Ctrl+V does. (#837, @echoVic)
LoadHTMLwith anabout:blankbase URL shows its document. (#1031, reported by @ichts in #1029)- Esc discards what the Japanese IME was composing. (#1032, reported by @ichts in #1030)
- Drawn menus show the last pixel of Chinese labels. (#1033, reported by @ands11 in #1028)
- An app that shows no page lets go of the hidden web view behind its cookie calls once idle, about 300 MB of WebView2 processes. (#1111, requested by @fondoger in #1109)
- On a maximized window with a material, the hovered Close button stays in the title bar. (#993, @Bush2021, reported in #992)
- Native UI windows report themselves to UI Automation as server-side providers. (#1007, @chengliang4810)
Linux
- Native UI runs at the monitor's refresh rate instead of 60 Hz. (#1231, reported by @xishang0128 in #1219)
- Apps follow the desktop's dark style in GTK and in pages. (#1123, reported by @baka-world in #1120)
- On Wayland at a scale of 2, title buttons and shadows no longer show stale. (#1092, reported by @godcop in #1071)
- The tray shows the app's icon on KDE instead of a theme icon, and its tooltip updates on hosts such as quickshell. (#1216, reported by @Revincx in #1207; #1043, @ZHocean123)
- Subpixel text no longer looks pale with color fringes on old cairo. (#1027, reported by @buumotfa4djz6-tech in #1025)
srcdociframes show when a page handlesOnWillNavigate. (#1190, @baranwang, reported in #1189)- Calling
WebViewAvailablefrom a goroutine no longer makes the next page window abort. (#1384, reported by @r0k1s-i in #1383) - One Ctrl+Z undoes a word committed by fcitx. (#988, @goSeeFuture, reported in #986)
Windows and Linux
- A font registered under a family name of the app's own is found by that name alone, so faces of the same weight can be told apart. (#1232, reported by @fzn0x in #1224)
Pages and plugins
fetchkeeps HttpOnly cookies from pages, honors an abort while a body is read, and keeps a request's body whenbody: nullis passed with aRequest. (#1235, #1345, @HiPanJin; #1105, @wiptgdxv)WebSocketrejects invalid subprotocols, and fails when the server doesn't acknowledge the one requested. (#1236, #1347, @HiPanJin)- A channel passed to a call that failed before sending can be used again. (#1342, @HiPanJin)
- File watch grants no longer extend to a directory that replaced the file. (#1237, @HiPanJin)
- The generated TypeScript client matches the wire format for string-tagged number pointers and embedded fallbacks, and the generator reports names that would not compile instead of writing them. (#1243, #1252, #1234, #1294, #1341, #1337, @HiPanJin)
Build, dev and updates
mygo devno longer hangs after the app exits when a child process keeps its output open. (#1024, @wiptgdxv)mygo devrebuilds whengo.workchanges, andmygo dev -webpicks up configuration changes. (#1338, #1343, @HiPanJin)mygo build -platform webkeeps the old site when installing the new one fails, and bad-platformvalues fail at once. (#1196, #1238, @HiPanJin)- Updates keep files' permissions. (#1340, @HiPanJin)
mygo buildstill makes delta updates when the latest GitHub release is missing a platform's files. (#995, @echoVic)mygo-automation waitfinds its text in a window that keeps drawing. (#1175, @HiPanJin)
Website
/benchmarkscompares MyGo with GPUI, GPUI Fast and egui on the same four scenes, measured on a Mac. (#1311)- The Showcase adds Tomoru, Quaver Astra, Meiro, us3ui, repo-hopper, RcloneDrive, ApiGo, Silverwing, Nodra, NanoDoll, Teebots, Screenpin and Sotto. (#979 @ACAne0320, #1018, #1061 @elianiva, #1094 @pteich, #1144 @younland, #1230 @yArna, #1332 @xijaja, #1370 @wiptgdxv, #1382 @doyuli)
New Contributors
- @goSeeFuture made their first contribution in #988
- @roma-glushko made their first contribution in #997
- @hronro made their first contribution in #1013
- @wiptgdxv made their first contribution in #1024
- @ZHocean123 made their first contribution in #1043
- @elianiva made their first contribution in #1061
- @UncertaintyDeterminesYou4ndMe made their first contribution in #1084
- @wibus-wee made their first contribution in #1091
- @pteich made their first contribution in #1094
- @baka-world made their first contribution in #1119
- @puresky271 made their first contribution in #1125
- @HarriesCC made their first contribution in #1131
- @younland made their first contribution in #1144
- @kyya made their first contribution in #1149
- @1bit-JS made their first contribution in #1159
- @HiPanJin made their first contribution in #1175
- @yArna made their first contribution in #1230
- @Gaurav-Gosain made their first contribution in #1249
- @iFwu made their first contribution in #1229
- @hyoban made their first contribution in #876
- @xijaja made their first contribution in #1332
- @BABA983 made their first contribution in #1313
- @sugarbearr made their first contribution in #1356
- @Kuangcp made their first contribution in #1379
- @doyuli made their first contribution in #1382
Full Changelog: v0.7.4...v0.8.0