• Ryan Groch's avatar
    Add AppImage maker (#2068) · e0dcedc1
    Ryan Groch 提交于
    Closes #817.
    
    A while back, I had opened #960 for the same issue, and I thought I
    would give it a second try. Unlike my previous PR, this time I
    implemented the AppImage maker myself.
    
    Given that security concerns came up last time, I feel obligated to
    mention the following:
    1. This code does run `mksquashfs` (technically a third-party
    executable) in the same environment as the signing keys. However, it's
    widely used and is present on the GitHub runner by default.
    2. My code also fetches the AppImage runtime during build, but this gets
    embedded in the AppImage and never runs on the server. As such, it would
    not be able to access the signing keys even if it theoretically had a
    vulnerability or was infected.
    
    If we're including an AppImage in the releases going forward, I don't
    think that either of the above two points are easily avoidable. We
    _could_ handle the second point by storing our own static version of the
    AppImage runtime, but I don't think that's particularly elegant or
    desirable.
    
    Of course, please feel free to let me know if you'd like any changes.
    Thanks!
    
    <!-- This is an auto-generated description by cubic. -->
    ---
    ## Summary by cubic
    Adds an AppImage maker to Electron Forge and includes a Linux x86_64
    AppImage in release assets.
    
    - **New Features**
    - Implements MakerAppImage that builds the AppDir, generates the
    .desktop file, embeds the app icon, sets AppRun, and packs with
    mksquashfs.
    - Fetches the AppImage runtime at build time, verifies its SHA-256, and
    embeds it; it never executes on CI.
    - Integrates into forge.config and release asset checks. Output:
    dyad_{version}_x86_64.AppImage.
    
    - **Dependencies**
      - Requires mksquashfs on the build host (available on GitHub runners).
    
    <sup>Written for commit 8bdb3840b906cc74a852704be50acb1b4d08fc97.
    Summary will update on new commits.</sup>
    
    <!-- End of auto-generated description by cubic. -->
    
    <!-- CURSOR_SUMMARY -->
    ---
    
    > [!NOTE]
    > Introduces Linux AppImage packaging and aligns release checks.
    > 
    > - Adds `MakerAppImage` that assembles `AppDir`, generates `.desktop`,
    embeds icon, creates `AppRun` symlink, packs with `mksquashfs`, and
    prepends the fetched AppImage runtime after SHA-256 verification
    > - Integrates maker in `forge.config.ts` (outputs
    `dyad_{version}_x86_64.AppImage`; linux x64; requires `mksquashfs`)
    > - Updates `scripts/verify-release-assets.js` to include the AppImage
    in expected assets
    > 
    > <sup>Written by [Cursor
    Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
    8bdb3840b906cc74a852704be50acb1b4d08fc97. This will update automatically
    on new commits. Configure
    [here](https://cursor.com/dashboard?tab=bugbot).</sup>
    <!-- /CURSOR_SUMMARY -->
    e0dcedc1
verify-release-assets.js 4.7 KB