Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

macOS Support #4

Closed
lucsoft opened this issue Jan 26, 2024 · 37 comments
Closed

macOS Support #4

lucsoft opened this issue Jan 26, 2024 · 37 comments
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@lucsoft
Copy link

lucsoft commented Jan 26, 2024

No description provided.

@jgillich jgillich added enhancement New feature or request help wanted Extra attention is needed labels Jan 26, 2024
@jgillich
Copy link
Collaborator

Would be great if Mac users could help with setting up a CI pipeline. I don't own any Apple devices.

@lucsoft
Copy link
Author

lucsoft commented Jan 26, 2024

@jgillich sorry didn't look at the code but is there already a macOS build target?

@jgillich
Copy link
Collaborator

There's no platform-specific code, go build what you'd use to build. Also need to have the dependencies. For distribution, we'll probably have to bundle them along with some other files like icons.

@air3ijai
Copy link
Contributor

I'm experimenting with the following configuration

.goreleaser.darwin.yaml

version: 1

before:
  hooks:
    - go generate ./...

builds:
  - flags:
      -trimpath
    goos:
      - darwin
    goarch:
      - amd64

archives:
  - format: tar.gz
    name_template: "{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}"

changelog:
  sort: asc
  filters:
    include:
      - "^feat:"
      - "^fix:"

release.yaml

  darwin:
    # needs: goreleaser
    runs-on: macos-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Install brew
        run: |
          /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
          brew --version
      - name: Install dependencies
        run: |
          brew install gtk4 pkg-config gobject-introspection gtksourceview5 libadwaita
      - name: Build
        run: |
          go run github.com/goreleaser/goreleaser@latest build -f .goreleaser.darwin.yaml --single-target --snapshot
          ls -la dist

And I get the following error at the build step
Screenshot 2024-01-27 at 22 47 52

@air3ijai
Copy link
Contributor

And on local ARM VM it works fine, but why do we get an additional console windows at run?

goreleaser build -f .goreleaser.darwin.yaml --clean --single-target --snapshot

Is there a way to use something like we use for Windows builds?

    ldflags:
      - -H=windowsgui
Screenshot 2024-01-27 at 23 14 06

@air3ijai
Copy link
Contributor

GitHub Actions build was fixed by adding a step

      - uses: actions/setup-go@v4
        with:
          go-version: '1.21'

@air3ijai
Copy link
Contributor

I've tried to copy all dependencies to be able to run app in a portable mode, but something is not working

  1. We need to copy a lot of libraries and shared files and part of the libraries were defined manually(is there another way to do that?)
  2. In order to use libraries from a binary folder it is required to define export DYLD_LIBRARY_PATH=. - otherwise, app will try to find libraries in a different location
    dyld[83960]: Library not loaded: /opt/homebrew/opt/libadwaita/lib/libadwaita-1.0.dylib
    
  3. We also need to define export GSETTINGS_SCHEMA_DIR="share/glib-2.0/schemas" - otherwise, we will get the error
     2024/01/28 12:24:21 Critical: GLib-GIO: g_settings_schema_source_lookup: assertion 'source != NULL' failed
    

After all that, app is running but not all assets are loaded - should we copy icon folder and if yes, where?

screenshots

On builder

Screenshot 2024-01-28 at 12 34 43

On end system

Screenshot 2024-01-28 at 12 33 18
.goreleaser.darwin.yaml
version: 1

before:
  hooks:
    - go generate ./...

builds:
  - flags:
      -trimpath
    goos:
      - darwin
    goarch:
      - amd64

archives:
  - format: tar.gz
    name_template: "{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}"

changelog:
  sort: asc
  filters:
    include:
      - "^feat:"
      - "^fix:"
release.yaml
  darwin:
    # needs: goreleaser
    runs-on: macos-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - uses: actions/setup-go@v4
        with:
          go-version: '1.21'

      - name: Install brew
        run: |
          /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
          brew --version

      - name: Install dependencies
        run: |
          brew install gtk4 pkg-config gobject-introspection gtksourceview5 libadwaita hicolor-icon-theme adwaita-icon-theme

      - name: Build
        run: |
          # Build
          go run github.com/goreleaser/goreleaser@latest build -f .goreleaser.darwin.yaml --single-target --snapshot

          # Folders
          dist_folder=dist/seabird_darwin_amd64_v1
          brew_prefix=$(brew --prefix)
          mkdir -p $dist_folder/lib/gdk-pixbuf-2.0
          mkdir -p $dist_folder/share/glib-2.0/schemas
          mkdir -p $dist_folder/share/icons

          # Files
          cp README.md LICENSE $dist_folder
          # libs
          otool -L $dist_folder/seabird | awk -v pat="$brew_prefix" '$0~pat {print $1}' | xargs -I '{}' cp '{}' $dist_folder
          for lib in \
            libfribidi.0.dylib \
            libgmodule-2.0.0.dylib \
            libpangoft2-1.0.0.dylib \
            libfreetype.6.dylib \
            libpng16.16.dylib \
            libappstream.5.dylib \
            libepoxy.0.dylib \
            libfontconfig.1.dylib \
            libgraphite2.3.dylib \
            libjpeg.8.dylib \
            libtiff.6.dylib \
            libharfbuzz-gobject.0.dylib \
            libX11.6.dylib \
            libxmlb.2.dylib \
            libcairo-script-interpreter.2.dylib \
            libXext.6.dylib \
            libyaml-0.2.dylib \
            libXrender.1.dylib \
            libxcb.1.dylib \
            libxcb-render.0.dylib \
            libxcb-shm.0.dylib \
            libpixman-1.0.dylib \
            libXau.6.dylib \
            liblzo2.2.dylib \
            libXdmcp.6.dylib \
          ; do
            cp -f $brew_prefix/lib/$lib $dist_folder
          done
          
          # ./lib/gdk-pixbuf-2.0
          cp -r $brew_prefix/opt/gdk-pixbuf/lib/gdk-pixbuf-2.0 $dist_folder/lib
          # ./share/glib-2.0/schemas
          cp -r $brew_prefix/share/glib-2.0/schemas $dist_folder/share/glib-2.0
          # ./share/gtksourceview-5
          cp -r $brew_prefix/opt/gtksourceview5/share/gtksourceview-5 $dist_folder/share/gtksourceview-5 
          # ./share/gtk-4.0
          cp -r $brew_prefix/opt/gtk4/share/gtk-4.0 $dist_folder/share
          # ./share/icons
          cp -r $brew_prefix/opt/adwaita-icon-theme/share/icons/Adwaita $dist_folder/share/icons
          cp -r $brew_prefix/share/icons/hicolor $dist_folder/share/icons

          # Archive
          tar cvzf seabird_darwin_amd64.tar.gz -C $dist_folder .

      - if: ${{ startsWith(github.ref, 'refs/tags/v') }}
        name: Upload binaries to release
        uses: svenstaro/upload-release-action@v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          file: seabird_darwin_amd64.tar.gz
          tag: ${{ github.ref }}

@jgillich
Copy link
Collaborator

jgillich commented Jan 28, 2024

You don't need to copy the icon folder, it's embedded at build time. If the custom icons don't load, you are probably missing librsvg or gdk-pixbuf loaders (d9976f4)

@air3ijai
Copy link
Contributor

air3ijai commented Jan 28, 2024

Found a new directory which contains svg loader as well

88896 Jan 28 13:21 libpixbufloader-ani.so
86576 Jan 28 13:21 libpixbufloader-bmp.so
90464 Jan 28 13:21 libpixbufloader-gif.so
70528 Jan 28 13:21 libpixbufloader-icns.s
87520 Jan 28 13:21 libpixbufloader-ico.so
86352 Jan 28 13:21 libpixbufloader-pnm.so
86624 Jan 28 13:21 libpixbufloader-qtif.s
 4248 Jan 28 13:21 libpixbufloader-svg.a
85840 Jan 28 13:21 libpixbufloader-svg.so
87664 Jan 28 13:21 libpixbufloader-tga.so
88512 Jan 28 13:21 libpixbufloader-tiff.s
87008 Jan 28 13:21 libpixbufloader-xbm.so
88304 Jan 28 13:21 libpixbufloader-xpm.so

and copied

5531888 Jan 28 13:31 librsvg-2.2.dylib
5531888 Jan 28 13:31 librsvg-2.dylib

Set a variable export GDK_PIXBUF_MODULEDIR="./lib/gdk-pixbuf-2.0/2.10.0/loaders"

But still same result.

@jgillich
Copy link
Collaborator

jgillich commented Jan 28, 2024

Found this article that looks helpful: https://www.datatable.online/en/blog/004-how-to-deploy-gtk-app-on-mac.html

Their launcher script also sets GDK_PIXBUF_MODULE_FILE="./lib/gdk-pixbuf-2.0/2.10.0/loaders.cache", perhaps that's what you're missing

@air3ijai
Copy link
Contributor

These steps solved the issue with the icons

  1. In lib/gdk-pixbuf-2.0/2.10.0/loaders.cache it is required to update paths reference to .so files
     sed -i '' "s|$brew_prefix/||" $dist_folder/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
  2. Define 2 variables
    GDK_PIXBUF_MODULEDIR=lib/gdk-pixbuf-2.0
    GDK_PIXBUF_MODULE_FILE=lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
    
  3. Copy librsvg-2.2.dylib

@air3ijai
Copy link
Contributor

air3ijai commented Jan 28, 2024

Copy/paste for local builds on ARM

details

Note

It has 3 differrencese with the GitHub Actions and was tested on macOS 14.3 arm

+ brew install go gtk4 pkg-config gobject-introspection gtksourceview5 libadwaita hicolor-icon-theme adwaita-icon-theme
- brew install gtk4 pkg-config gobject-introspection gtksourceview5 libadwaita hicolor-icon-theme adwaita-icon-theme

+ dist_folder=dist/seabird_darwin_`uname -m`
- dist_folder=dist/seabird_darwin_`uname -m`_v1

Install brew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

Install dependencies

brew install go gtk4 pkg-config gobject-introspection gtksourceview5 libadwaita hicolor-icon-theme adwaita-icon-theme

Get sources

git clone https://github.com/getseabird/seabird
cd seabird

Build

go run github.com/goreleaser/goreleaser@latest build -f .goreleaser.darwin.yaml --clean --single-target --snapshot

Create an archive

# Folders
dist_folder=dist/seabird_darwin_`uname -m`
lib_folder=$dist_folder/lib
share_folder=$dist_folder/share
brew_prefix=$(brew --prefix)
mkdir -p $lib_folder/gdk-pixbuf-2.0
mkdir -p $share_folder/glib-2.0/schemas
mkdir -p $share_folder/icons

# Files
cp README.md LICENSE $dist_folder

# libs
otool -L $dist_folder/seabird | awk -v pat="$brew_prefix" '$0~pat {print $1}' | xargs -I '{}' cp '{}' $lib_folder

for lib in \
  libfribidi.0.dylib \
  libgmodule-2.0.0.dylib \
  libpangoft2-1.0.0.dylib \
  libfreetype.6.dylib \
  libpng16.16.dylib \
  libappstream.5.dylib \
  libepoxy.0.dylib \
  libfontconfig.1.dylib \
  libgraphite2.3.dylib \
  libjpeg.8.dylib \
  libtiff.6.dylib \
  libharfbuzz-gobject.0.dylib \
  libX11.6.dylib \
  libxmlb.2.dylib \
  libcairo-script-interpreter.2.dylib \
  libXext.6.dylib \
  libyaml-0.2.dylib \
  libXrender.1.dylib \
  libxcb.1.dylib \
  libxcb-render.0.dylib \
  libxcb-shm.0.dylib \
  libpixman-1.0.dylib \
  libXau.6.dylib \
  liblzo2.2.dylib \
  libXdmcp.6.dylib \
  librsvg-2.2.dylib \
; do
  cp -f $brew_prefix/lib/$lib $lib_folder
done

# ./lib/gdk-pixbuf-2.0
cp -r $brew_prefix/lib/gdk-pixbuf-2.0 $lib_folder
sed -i '' "s|$brew_prefix/||" $lib_folder/gdk-pixbuf-2.0/2.10.0/loaders.cache
# ./share/glib-2.0/schemas
cp -r $brew_prefix/share/glib-2.0/schemas $share_folder/glib-2.0
# ./share/gtksourceview-5
cp -r $brew_prefix/opt/gtksourceview5/share/gtksourceview-5 $share_folder/gtksourceview-5 
# ./share/gtk-4.0
cp -r $brew_prefix/opt/gtk4/share/gtk-4.0 $share_folder
# ./share/icons
cp -r $brew_prefix/opt/adwaita-icon-theme/share/icons/Adwaita $share_folder/icons
cp -r $brew_prefix/share/icons/hicolor $share_folder/icons

# Runner file
launcher_file=$dist_folder/seabird_launcher.sh
echo 'cd "$(dirname "$0")"' >>$launcher_file
echo 'LAUNCH_DIR="$(pwd)"' >>$launcher_file
echo 'export DYLD_LIBRARY_PATH="$LAUNCH_DIR/lib"' >>$launcher_file
echo 'export GSETTINGS_SCHEMA_DIR="$LAUNCH_DIR/share/glib-2.0/schemas"' >>$launcher_file
echo 'export GDK_PIXBUF_MODULEDIR="$LAUNCH_DIR/lib/gdk-pixbuf-2.0"' >>$launcher_file
echo 'export GDK_PIXBUF_MODULE_FILE="$LAUNCH_DIR/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache"' >>$launcher_file
echo '"$LAUNCH_DIR/seabird"'
chmod 777 $launcher_file

# Archive
tar cvzf seabird_darwin_`uname -m`.tar.gz -C $dist_folder .

@air3ijai
Copy link
Contributor

@jgillich, we miss one line from the shell script

"$LAUNCH_DIR/seabird"

Should be added to the build/darwin/seabird.sh.

@jgillich
Copy link
Collaborator

oops, fixed

@lucsoft
Copy link
Author

lucsoft commented Jan 31, 2024

if i run the file from the release i get "cannot execute binary file"

@air3ijai
Copy link
Contributor

What is your macOS architecture?

@lucsoft
Copy link
Author

lucsoft commented Feb 1, 2024

Its arm64 (i thought Rosetta could translate it?)

But yeah if i compile it for arm64 it works, would be great to add arm64 support also in the CI

@air3ijai
Copy link
Contributor

air3ijai commented Feb 1, 2024

Is there a way to implement that on amd64?

macOS ARM runners a part of the Large runners and available for Organizations with GitHub Team plan - 4 $/m per user.
Also, they will always be billed at the per-minute rate.

But looks like we have a free option - 500 min/m using non-github runners.

@air3ijai
Copy link
Contributor

air3ijai commented Feb 1, 2024

Did some experiments with the FlyCI

build/darwin/.goreleaser.yaml
version: 1

before:
  hooks:
    - go generate ./...

builds:
  - flags:
      -trimpath
    # goos:
    #   - darwin
    # goarch:
    #   - arm64

archives:
  - format: tar.gz
    name_template: "{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}"

changelog:
  sort: asc
  filters:
    include:
      - "^feat:"
      - "^fix:"
.github/workflows/release.yaml
name: release

on:
  workflow_dispatch:

permissions:
  contents: write

jobs:
  darwin:
    runs-on: flyci-macos-large-latest-m1
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Set up Homebrew
        id: set-up-homebrew
        uses: Homebrew/actions/setup-homebrew@master
      - uses: actions/setup-go@v4
        with:
          go-version: "1.21"
      - name: Install dependencies
        run: |
          brew install gtk4 pkg-config gobject-introspection gtksourceview5 libadwaita hicolor-icon-theme adwaita-icon-theme
      - name: Build
        run: |
          go run github.com/goreleaser/goreleaser@latest build -f build/darwin/.goreleaser.yaml --single-target --snapshot

          dist=dist/seabird_darwin_arm64
          brew_prefix=$(brew --prefix)
          mkdir -p $dist/lib/gdk-pixbuf-2.0 $dist/share/glib-2.0/schemas $dist/share/icons

          cp README.md LICENSE build/darwin/seabird.sh $dist
          otool -L $dist/seabird | awk -v pat="$brew_prefix" '$0~pat {print $1}' | xargs -I '{}' cp '{}' $dist/lib

          for lib in \
            libfribidi.0.dylib \
            libgmodule-2.0.0.dylib \
            libpangoft2-1.0.0.dylib \
            libfreetype.6.dylib \
            libpng16.16.dylib \
            libappstream.5.dylib \
            libepoxy.0.dylib \
            libfontconfig.1.dylib \
            libgraphite2.3.dylib \
            libjpeg.8.dylib \
            libtiff.6.dylib \
            libharfbuzz-gobject.0.dylib \
            libX11.6.dylib \
            libxmlb.2.dylib \
            libcairo-script-interpreter.2.dylib \
            libXext.6.dylib \
            libyaml-0.2.dylib \
            libXrender.1.dylib \
            libxcb.1.dylib \
            libxcb-render.0.dylib \
            libxcb-shm.0.dylib \
            libpixman-1.0.dylib \
            libXau.6.dylib \
            liblzo2.2.dylib \
            libXdmcp.6.dylib \
            librsvg-2.2.dylib \
          ; do
            cp -f $brew_prefix/lib/$lib $dist/lib
          done

          cp -r $brew_prefix/lib/gdk-pixbuf-2.0 $dist/lib
          sed -i '' "s|$brew_prefix/||" $dist/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
          cp -r $brew_prefix/share/glib-2.0/schemas $dist/share/glib-2.0
          cp -r $brew_prefix/opt/gtksourceview5/share/gtksourceview-5 $dist/share/gtksourceview-5 
          cp -r $brew_prefix/opt/gtk4/share/gtk-4.0 $dist/share
          cp -r $brew_prefix/share/icons/hicolor $brew_prefix/opt/adwaita-icon-theme/share/icons/Adwaita $dist/share/icons

          tar cvzf seabird_darwin_arm64.tar.gz -C $dist .
      - uses: actions/upload-artifact@v4
        with:
          name: darwin
          path: seabird_darwin_arm64.tar.gz
          if-no-files-found: error
      - if: ${{ startsWith(github.ref, 'refs/tags/v') }}
        name: Upload binaries to release
        uses: svenstaro/upload-release-action@v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          file: seabird_darwin_arm64.tar.gz
          tag: ${{ github.ref }}
  1. File .goreleaser.yaml probably can be generalized
  2. We should have a separate workflow for macOS ARM builds and only for releases to fit the limit. And we also may consider to use matrix for macOS releases.
  3. We can use almost same code for amd64 and arm64 but should update all occurrences (uname -m) and Why is there a _v1 suffix on amd64 builds?
    + dist=dist/seabird_darwin_arm64
    - dist=dist/seabird_darwin_amd64_v1
    
    - seabird_darwin_amd64.tar.gz
    + seabird_darwin_arm64.tar.gz
  4. Build was created but at run macOS didn't permit me to run it and asked permissions for every library - Apple can’t check app for malicious software.
    Is there a way to bypass that?
    Screenshot 2024-02-01 at 12 41 27

@jgillich
Copy link
Collaborator

jgillich commented Feb 1, 2024

There is a M1 runner in beta: https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories

But the amd64 build should work with rosetta. Are you sure you didn't accidentally download the linux build? 😄

@jgillich jgillich reopened this Feb 1, 2024
@jgillich
Copy link
Collaborator

jgillich commented Feb 1, 2024

Goreleaser also supports universal binaries: https://goreleaser.com/customization/universalbinaries/

But that requires cross-compilation. Not idea how to set that up on Mac, Google didn't bring up much

@air3ijai
Copy link
Contributor

air3ijai commented Feb 1, 2024

There is a M1 runner in beta: https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories

Oh, that's a good news - just did a test and it works on macOS arm, but as it was mentioned we need to disable app verification

sudo spctl --master-disable

But the amd64 build should work with rosetta. Are you sure you didn't accidentally download the linux build? 😄

That issue was mentioned in the initial PR and I was not able to check amd64 builds on arm.

Goreleaser also supports universal binaries: https://goreleaser.com/customization/universalbinaries/
But that requires cross-compilation. Not idea how to set that up on Mac, Google didn't bring up much

That didn't work during initial PR implementation because missed components.

@jgillich
Copy link
Collaborator

jgillich commented Feb 1, 2024

Re the crash, try setting XDG_DATA_DIRS to $(pwd)/share.

@air3ijai
Copy link
Contributor

air3ijai commented Feb 1, 2024

That fixed the issue, thanks!

Added to the PR and checked the artifact.

@jgillich jgillich closed this as completed Feb 1, 2024
@jgillich
Copy link
Collaborator

jgillich commented Feb 2, 2024

I set up OSX in a VM and the binary doesn't work for me either, getting "exec format error" on x64. Very strange 🤔

@jgillich jgillich reopened this Feb 2, 2024
@jgillich
Copy link
Collaborator

jgillich commented Feb 2, 2024

zip produces a valid binary whereas tar does not. bsd tar produces a corrupt archive. Amazing actions/runner-images#2619

@air3ijai
Copy link
Contributor

air3ijai commented Feb 2, 2024

Yeah, good catch :)

Did a check of the one of the latest builds with gnu tar

  1. x64 binary is running on arm with a missing library (libzstd.1.dylib), but at least no exec format error anymore
  2. arm binary runs as expected on arm
  3. arm dmg does not work on arm - will check latests builds, we can see that at installation step and at run
    Screenshot 2024-02-02 at 09 42 03
    Screenshot 2024-02-02 at 09 42 23

@air3ijai
Copy link
Contributor

air3ijai commented Feb 2, 2024

Oh, nice - dmg from latest PR work just fine on arm.

@air3ijai
Copy link
Contributor

air3ijai commented Feb 2, 2024

Confirmed that x64 binary can be run on arm when libzstd.1.dylib is included in the lib folder.

@jgillich
Copy link
Collaborator

jgillich commented Feb 2, 2024

The x64 build is incredibly flaky too

hdiutil: create failed - Resource busy

Apparently it's because OSX detects the dmg as a virus or something, happens to a lot of people on GH actions

@air3ijai
Copy link
Contributor

air3ijai commented Feb 2, 2024

Also discussed on the create-dmg/create-dmg#143 and for M1 (arm) as well.

@jgillich
Copy link
Collaborator

jgillich commented Feb 2, 2024

Yea, killing XProtect doesn't seem to work very well. Going to have it retry until it succeeds. Total BS

@air3ijai
Copy link
Contributor

air3ijai commented Feb 2, 2024

Builds with the dylibbundler return me to the p.3

# dm from mentioned commit
ls /Applications/Seabird.app/Contents/MacOS/lib | grep librsvg-2.2.dylib

# dmg from latest release
ls /Volumes/Seabird/Seabird.app/Contents/MacOS/lib | grep librsvg-2.2.dylib
librsvg-2.2.dylib
Screenshot 2024-02-02 at 11 54 22

@jgillich
Copy link
Collaborator

jgillich commented Feb 2, 2024

Yea librsvg is loaded dynamically, same on windows. Just fixed that 7448059

@jgillich
Copy link
Collaborator

jgillich commented Feb 2, 2024

Alright, I might have figured it out. Do these builds work for you? https://github.com/getseabird/seabird/actions/runs/7754598109

@air3ijai
Copy link
Contributor

air3ijai commented Feb 2, 2024

On arm - dmg check

  • amd64 ✅
  • arm64 ✅

@jgillich jgillich closed this as completed Feb 2, 2024
@ajax-bychenok-y
Copy link

Is it possible to increase app fonts on Mac?

@getseabird getseabird locked as resolved and limited conversation to collaborators Apr 23, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

4 participants