Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Git files
.git
.gitignore
.gitattributes

# Build artifacts
*.deb
.theos/obj
.theos/_/
*.o
*.dylib
*.a

# Xcode
*.xcodeproj/xcuserdata
*.xcodeproj/project.xcworkspace/xcuserdata
*.xcworkspace/xcuserdata
*.xcodeproj/project.xcworkspace/*.xcuserstate
*.xcuserstate
DerivedData/

# IDE
.vscode/
.idea/

# macOS
.DS_Store
._*

# Logs
*.log

# Temporary files
*.tmp
*.swp
*~
61 changes: 61 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: Build WebMessage .deb

on:
push:
branches: [ main, develop ]
tags:
- 'v*'
pull_request:
branches: [ main ]
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
Comment on lines +18 to +21
Copy link

Copilot AI Dec 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The workflow uses actions/checkout@v3 and docker/setup-buildx-action@v2 which are outdated. GitHub Actions v4 versions are now available and recommended for better performance and security. Consider updating to actions/checkout@v4 and docker/setup-buildx-action@v3.

Suggested change
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

Copilot uses AI. Check for mistakes.

- name: Build Docker image
run: |
docker build -t webmessage-builder:latest .

- name: Build .deb package
run: |
docker run --name webmessage-build webmessage-builder:latest
mkdir -p output
docker cp webmessage-build:/build/WebMessage.deb ./output/
docker rm webmessage-build

- name: Get package info
run: |
echo "## Package Information" >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
dpkg-deb --info output/WebMessage.deb >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "## Package Size" >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
ls -lh output/WebMessage.deb >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY

- name: Upload .deb artifact
uses: actions/upload-artifact@v3
with:
name: WebMessage-deb
path: output/WebMessage.deb
retention-days: 30

- name: Create Release (on tag)
if: startsWith(github.ref, 'refs/tags/v')
uses: softprops/action-gh-release@v1
Comment on lines +47 to +55
Copy link

Copilot AI Dec 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The actions/upload-artifact@v3 and softprops/action-gh-release@v1 actions are outdated. Consider updating to actions/upload-artifact@v4 for better performance and security. The v4 version also has improved handling of artifacts and better compression.

Copilot uses AI. Check for mistakes.
with:
files: output/WebMessage.deb
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
LatestBuild
Packages

output/WebMessage.deb

# OS generated files #
######################
.DS_Store
Expand Down
167 changes: 167 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
# Dockerfile for building WebMessage Sileo jailbreak tweak
Copy link

Copilot AI Dec 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment refers to "Sileo jailbreak tweak" but Sileo is just one of several package managers that can install .deb packages on jailbroken iOS devices (others include Cydia, Zebra, Installer). The comment should be more generic, such as "WebMessage iOS jailbreak tweak" since the .deb format is not Sileo-specific.

Suggested change
# Dockerfile for building WebMessage Sileo jailbreak tweak
# Dockerfile for building WebMessage iOS jailbreak tweak

Copilot uses AI. Check for mistakes.
# This builds the .deb package for iOS jailbroken devices

FROM ubuntu:22.04

# Prevent interactive prompts during installation
ENV DEBIAN_FRONTEND=noninteractive

# Set environment variables for Theos
ENV THEOS=/opt/theos
ENV PATH="${THEOS}/bin:${PATH}"

# Install required dependencies
RUN apt-get update && apt-get install -y \
curl \
git \
make \
perl \
zip \
unzip \
build-essential \
clang \
libssl-dev \
fakeroot \
dpkg-dev \
libplist-dev \
libplist-utils \
python3 \
python3-pip \
ca-certificates \
wget \
libtinfo5 \
libncurses5 \
rsync \
&& rm -rf /var/lib/apt/lists/*

# Install ldid (code signing tool) - build from source with all required libraries
RUN git clone https://github.com/ProcursusTeam/ldid.git /tmp/ldid && \
cd /tmp/ldid && \
make LDFLAGS="-lcrypto -lssl -lplist-2.0" && \
cp -f ./ldid /usr/local/bin/ldid && \
chmod +x /usr/local/bin/ldid && \
cd / && \
rm -rf /tmp/ldid

# Install Theos
RUN git clone --recursive https://github.com/theos/theos.git /opt/theos

# Install iOS toolchain for cross-compilation
RUN mkdir -p /opt/theos/toolchain && \
cd /opt/theos/toolchain && \
wget -q https://github.com/sbingner/llvm-project/releases/download/v10.0.0-1/linux-ios-arm64e-clang-toolchain.tar.lzma && \
tar --lzma -xf linux-ios-arm64e-clang-toolchain.tar.lzma && \
rm linux-ios-arm64e-clang-toolchain.tar.lzma && \
mkdir -p linux/iphone && \
mv ios-arm64e-clang-toolchain/* linux/iphone/ && \
rmdir ios-arm64e-clang-toolchain && \
find linux/iphone/bin -type f -exec chmod +x {} \;

# Download and install iOS SDKs (extract all then use iOS 13.7 which works with clang 10)
RUN mkdir -p /opt/theos/sdks && \
cd /opt/theos/sdks && \
curl -LO https://github.com/theos/sdks/archive/master.zip && \
unzip -q master.zip && \
mv sdks-master/* . && \
rm -rf sdks-master master.zip && \
# Remove iOS 14+ SDKs that have incompatible TBD format
rm -rf iPhoneOS14.*.sdk iPhoneOS15.*.sdk iPhoneOS16.*.sdk iPhoneOS17.*.sdk
Comment on lines +67 to +68
Copy link

Copilot AI Dec 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment mentions removing SDKs with "incompatible TBD format" but the wildcard pattern will also remove any future patch versions (e.g., iPhoneOS14.8.sdk). Consider being more specific about which SDK versions are compatible with clang 10, or dynamically keep only iOS 13.x SDKs to make the intention clearer and more maintainable.

Suggested change
# Remove iOS 14+ SDKs that have incompatible TBD format
rm -rf iPhoneOS14.*.sdk iPhoneOS15.*.sdk iPhoneOS16.*.sdk iPhoneOS17.*.sdk
# Keep only iOS 13.x SDKs (compatible with clang 10); remove all others
find . -maxdepth 1 -type d -name 'iPhoneOS*.sdk' ! -name 'iPhoneOS13.*.sdk' -exec rm -rf {} +

Copilot uses AI. Check for mistakes.

# Clone and install MRYIPC (dependency)
RUN git clone https://github.com/Muirey03/MRYIPC.git /tmp/MRYIPC && \
cp -R /tmp/MRYIPC/*.h /opt/theos/vendor/include/ && \
rm -rf /tmp/MRYIPC

# Copy the project's libmryipc library to theos
# This will be done after COPY . . to use the project's version

# Set working directory
WORKDIR /build

# Copy project files
COPY . .

# Copy the libmryipc library from the project to theos lib directory
Comment on lines +75 to +84
Copy link

Copilot AI Dec 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment "Copy the project's libmryipc library to theos" followed by "This will be done after COPY . ." is misleading since the actual copying happens at line 85-87, not immediately after. Consider removing this orphaned comment or moving it closer to the actual copy operation to avoid confusion.

Suggested change
# Copy the project's libmryipc library to theos
# This will be done after COPY . . to use the project's version
# Set working directory
WORKDIR /build
# Copy project files
COPY . .
# Copy the libmryipc library from the project to theos lib directory
# Set working directory
WORKDIR /build
# Copy project files
COPY . .
# Copy the project's libmryipc library to theos
# This will be done after COPY . . to use the project's version

Copilot uses AI. Check for mistakes.
RUN if [ -f /build/WebMessage/Libraries/libmryipc.dylib ]; then \
cp /build/WebMessage/Libraries/libmryipc.dylib /opt/theos/lib/libmryipc.dylib; \
fi

# Create a build script
RUN echo '#!/bin/bash\n\
set -e\n\
\n\
echo "========================================"\n\
echo "Building libwebmessage tweak..."\n\
echo "========================================"\n\
\n\
# Build libwebmessage\n\
cd /build/libwebmessage\n\
make clean || true\n\
make package FINALPACKAGE=1\n\
\n\
echo ""\n\
echo "========================================"\n\
echo "Building WebMessagePreferences bundle..."\n\
echo "========================================"\n\
\n\
# Build WebMessagePreferences\n\
cd /build/WebMessagePreferences\n\
make clean || true\n\
make FINALPACKAGE=1\n\
\n\
echo ""\n\
echo "========================================"\n\
echo "Copying built files to Package..."\n\
echo "========================================"\n\
\n\
# Ensure directories exist\n\
mkdir -p /build/WebMessage/Package/Library/MobileSubstrate/DynamicLibraries\n\
mkdir -p /build/WebMessage/Package/Library/PreferenceBundles\n\
\n\
# Remove old symlinks if they exist\n\
rm -f /build/WebMessage/Package/Library/MobileSubstrate/DynamicLibraries/libwebmessage.dylib\n\
rm -f /build/WebMessage/Package/Library/MobileSubstrate/DynamicLibraries/libwebmessage.plist\n\
rm -f /build/WebMessage/Package/Library/PreferenceBundles/WebMessage.bundle\n\
\n\
# Copy libwebmessage files\n\
if [ -f /build/libwebmessage/.theos/obj/libwebmessage.dylib ]; then\n\
cp /build/libwebmessage/.theos/obj/libwebmessage.dylib /build/WebMessage/Package/Library/MobileSubstrate/DynamicLibraries/\n\
elif [ -f /build/libwebmessage/.theos/obj/debug/libwebmessage.dylib ]; then\n\
cp /build/libwebmessage/.theos/obj/debug/libwebmessage.dylib /build/WebMessage/Package/Library/MobileSubstrate/DynamicLibraries/\n\
fi\n\
\n\
cp /build/libwebmessage/libwebmessage.plist /build/WebMessage/Package/Library/MobileSubstrate/DynamicLibraries/\n\
\n\
# Copy WebMessage preferences bundle\n\
if [ -d /build/WebMessagePreferences/.theos/obj/WebMessage.bundle ]; then\n\
cp -r /build/WebMessagePreferences/.theos/obj/WebMessage.bundle /build/WebMessage/Package/Library/PreferenceBundles/\n\
elif [ -d /build/WebMessagePreferences/.theos/obj/debug/WebMessage.bundle ]; then\n\
cp -r /build/WebMessagePreferences/.theos/obj/debug/WebMessage.bundle /build/WebMessage/Package/Library/PreferenceBundles/\n\
fi\n\
\n\
echo ""\n\
echo "========================================"\n\
echo "Building final .deb package..."\n\
echo "========================================"\n\
\n\
# Build the final .deb package\n\
cd /build\n\
rm -f WebMessage.deb\n\
dpkg-deb --root-owner-group -b WebMessage/Package WebMessage.deb\n\
\n\
echo ""\n\
echo "========================================"\n\
echo "Build complete!"\n\
echo "========================================"\n\
echo ""\n\
dpkg-deb --info WebMessage.deb\n\
echo ""\n\
echo "Package size:"\n\
ls -lh WebMessage.deb\n\
echo ""\n\
echo "Package contents:"\n\
dpkg-deb --contents WebMessage.deb\n\
' > /build/build.sh && chmod +x /build/build.sh

# Set the default command
CMD ["/build/build.sh"]
Loading
Loading