diff --git a/EpochSilicon.app/Contents/Info.plist b/EpochSilicon.app/Contents/Info.plist
index c9ea5e6..7158491 100644
--- a/EpochSilicon.app/Contents/Info.plist
+++ b/EpochSilicon.app/Contents/Info.plist
@@ -11,13 +11,13 @@
CFBundleIconFile
icon.icns
CFBundleShortVersionString
- 1.2.4
+ 1.0.0
CFBundleSupportedPlatforms
MacOSX
CFBundleVersion
- 133
+ 1
NSHighResolutionCapable
NSSupportsAutomaticGraphicsSwitching
diff --git a/FyneApp.toml b/FyneApp.toml
index 2a10f0b..073d3d8 100644
--- a/FyneApp.toml
+++ b/FyneApp.toml
@@ -2,5 +2,5 @@
Icon = "Icon.png"
Name = "EpochSilicon"
ID = "com.burkey.epochsilicon"
- Version = "1.2.4"
- Build = 134
+ Version = "1.0.0"
+ Build = 2
diff --git a/README.md b/README.md
index 2ee5be7..8954769 100644
--- a/README.md
+++ b/README.md
@@ -1,24 +1,9 @@
+# Epoch Silicon
+
+
+
A user-friendly launcher for Project Epoch on Apple Silicon Macs, with one-click patching of winerosetta, rosettax87 and d9vk.
-## Prerequisites
-
-Before you begin, ensure you have the following:
-
-* A working version of **CrossOver** installed (the trial version is sufficient and can still be used after expiration).
- - You must use CrossOver v25.0.1 or later. Older versions will cause issues.
-* A 3.3.5a World of Warcraft client. You can easily get the client from [Project Epoch's download page](https://project-epoch.com/play)
-* Place the client in an folder you have rights to. Your user directory (example: `/Users/username/Epoch`) is a good default choice. Avoid spaces in your path!
-
-## Credits
-
-All credit for the core translation layer `winerosetta` and `rosettax87` goes to [**@Lifeisawful**](https://github.com/Lifeisawful). This application is merely a Fyne-based GUI wrapper to simplify the patching and launching process.
-
-[https://github.com/Lifeisawful/winerosetta](https://github.com/Lifeisawful/winerosetta)
-
-[https://github.com/Lifeisawful/rosettax87](https://github.com/Lifeisawful/rosettax87)
-
-EpochSilicon is a fork of [https://turtlesilicon.github.io/](TurtleSilicon), credit for the base of the application goes to tairasu.
-
## Features
* **Apple Silicon Compatibility:** Runs 32-bit DirectX9 World of Warcraft (v3.3.5a) on M1/M2/M3/M4 Macs without "illegal instruction" errors.
@@ -28,16 +13,28 @@ EpochSilicon is a fork of [https://turtlesilicon.github.io/](TurtleSilicon), cre
* Achieves significant FPS improvements
* **Automated Setup:** One-click patching for both CrossOver and Epoch installations.
* **Simple Interface:** Easy to use GUI with status indicators and configuration options.
-
+
## Usage
+### Prerequisites
+
+Before you begin, ensure you have the following:
+
+* A working version of [CrossOver](https://www.codeweavers.com/crossover) installed (the trial version is sufficient and can still be used after expiration).
+ - You must use CrossOver v25.0.1 or later. Older versions will cause issues.
+* A 3.3.5a World of Warcraft client. You can download the client from [Project Epoch's download page](https://project-epoch.com/play)
+* Place the client in an folder you have rights to. Your user directory (example: `/Users/username/Epoch`) is a good default choice. Avoid spaces in your path!
+
### Installation
+1. [Click here to download the latest release](https://git.burkey.co/eburk/EpochSilicon/releases/download/latest/EpochSilicon.dmg).
+2. Double-click `EpochSilicon.dmg`.
+3. Drag `EpochSilicon` into `Applications`. You may now close and eject the disk image.
+4. Run `EpochSilicon` like you would any other application, using Launchpad, Shortcut, etc.
+### Setup
-### Method 1: Using the Pre-built Application
-
-1. Launch `EpochSilicon.app`.
+1. Launch `EpochSilicon`.
2. **Set CrossOver Path**:
* If CrossOver is installed in the default location (`/Applications/CrossOver.app`), this path will be pre-filled.
* Otherwise, click "Set/Change" and navigate to your `CrossOver.app` bundle.
@@ -58,7 +55,7 @@ EpochSilicon is a fork of [https://turtlesilicon.github.io/](TurtleSilicon), cre
* Once both paths are set, both components are patched, and the RosettaX87 service is running, the "Launch Game" button will become active. Click it.
9. **Enjoy**: Experience a VM free, smoother Project Epoch on your Apple Silicon Mac!
-### Method 2: Running from Source Code
+## Running from Source Code
If you prefer to run the application directly from source code:
@@ -77,7 +74,7 @@ If you prefer to run the application directly from source code:
go run main.go
```
- Note: This method requires Go to be installed on your system. See the Build Instructions section for details on installing Go and Fyne.
+ Note: This method requires Go and Fyne to be installed on your system.
4. **Use the application** as described in Method 1 (steps 2-6).
@@ -85,41 +82,6 @@ If you prefer to run the application directly from source code:
TBD
-## Build Instructions
-
-To build this application yourself, you will need:
-
-1. **Go**: Make sure you have Go installed on your system. You can download it from [golang.org](https://golang.org/).
-2. **Fyne**: Install the Fyne toolkit and its dependencies by following the instructions on the [Fyne website](https://developer.fyne.io/started/).
-
-Once Go and Fyne are set up, navigate to the project directory in your terminal and run the following command to build the application for Apple Silicon (ARM64) macOS:
-
-### Option 1: Using the Makefile (Recommended)
-
-The included Makefile automates the build process and handles copying the required resource files:
-
-```sh
-make
-```
-
-This will:
-1. Build the application for Apple Silicon macOS
-2. Automatically copy the rosettax87 and winerosetta directories to the app bundle
-
-### Option 2: Manual Build
-
-If you prefer to build manually:
-
-```sh
-GOOS=darwin GOARCH=arm64 fyne package
-# Then manually copy the resource directories
-cp -R rosettax87 winerosetta EpochSilicon.app/Contents/Resources/
-```
-
-In either case, this will create a `EpochSilicon.app` file in the project directory, which you can then run.
-
-Make sure you have an `Icon.png` file in the root of the project directory before building.
-
## Bundled Binaries
The `rosettax87` and `winerosetta` components included in this application are precompiled for convenience. If you prefer, you can compile them yourself by following the instructions provided by Lifeisawful on the official repositories:
@@ -129,3 +91,14 @@ The `rosettax87` and `winerosetta` components included in this application are p
## License
This project is licensed under the MIT License.
+
+## Credits
+
+All credit for the core translation layer `winerosetta` and `rosettax87` goes to [**@Lifeisawful**](https://github.com/Lifeisawful). This application is merely a Fyne-based GUI wrapper to simplify the patching and launching process.
+
+[https://github.com/Lifeisawful/winerosetta](https://github.com/Lifeisawful/winerosetta)
+
+[https://github.com/Lifeisawful/rosettax87](https://github.com/Lifeisawful/rosettax87)
+
+EpochSilicon is a fork of [https://turtlesilicon.github.io/](TurtleSilicon), credit for the base of the application goes to tairasu.
+
diff --git a/img/turtlesilicon-app_v4.png b/img/turtlesilicon-app_v4.png
deleted file mode 100644
index a0e581f..0000000
Binary files a/img/turtlesilicon-app_v4.png and /dev/null differ
diff --git a/img/turtlesilicon-fps_v2.png b/img/turtlesilicon-fps_v2.png
deleted file mode 100644
index bf1aa0f..0000000
Binary files a/img/turtlesilicon-fps_v2.png and /dev/null differ
diff --git a/main.go b/main.go
index 409c3b4..03a090e 100644
--- a/main.go
+++ b/main.go
@@ -4,11 +4,13 @@ import (
"epochsilicon/pkg/debug"
"epochsilicon/pkg/service"
"epochsilicon/pkg/ui"
+ "epochsilicon/pkg/utils"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
+ "strings"
)
-const appVersion = "0.1.0"
+const appVersion = "1.0.0"
func main() {
PEApp := app.NewWithID("com.burkey.epochsilicon")
@@ -16,8 +18,6 @@ func main() {
PEWindow.Resize(fyne.NewSize(650, 500))
PEWindow.SetFixedSize(true)
- /* Check for updates
- // TODO: Fix updating
go func() {
prefs, _ := utils.LoadPrefs()
updateInfo, updateAvailable, err := utils.CheckForUpdateWithAssets(appVersion)
@@ -40,11 +40,9 @@ func main() {
return
}
-
// Show enhanced update dialog
ui.ShowUpdateDialog(updateInfo, appVersion, PEWindow)
}()
- */
content := ui.CreateUI(PEWindow)
PEWindow.SetContent(content)
diff --git a/pkg/ui/updater.go b/pkg/ui/updater.go
index ed3f25e..4f5c0c8 100644
--- a/pkg/ui/updater.go
+++ b/pkg/ui/updater.go
@@ -114,8 +114,10 @@ func ShowUpdateDialog(updateInfo *utils.UpdateInfo, currentVersion string, myWin
return
}
- progressLabel.SetText("Installing update...")
- progressBar.SetValue(1.0)
+ fyne.DoAndWait(func() {
+ progressLabel.SetText("Installing update...")
+ progressBar.SetValue(1.0)
+ })
// Install update
err = utils.InstallUpdate(downloadPath)
@@ -124,14 +126,18 @@ func ShowUpdateDialog(updateInfo *utils.UpdateInfo, currentVersion string, myWin
debug.Printf("Installation failed: %v", err)
// Re-enable close button
- d.SetButtons([]fyne.CanvasObject{
- widget.NewButton("Close", func() { d.Hide() }),
+ fyne.DoAndWait(func() {
+ d.SetButtons([]fyne.CanvasObject{
+ widget.NewButton("Close", func() { d.Hide() }),
+ })
})
return
}
// Success - show restart dialog
- progressLabel.SetText("Update installed successfully!")
+ fyne.DoAndWait(func() {
+ progressLabel.SetText("Update installed successfully!")
+ })
restartDialog := dialog.NewConfirm(
"Update Complete",
diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go
index bba6001..177cbb9 100644
--- a/pkg/utils/utils.go
+++ b/pkg/utils/utils.go
@@ -163,7 +163,7 @@ type Asset struct {
// CheckForUpdateWithAssets returns update information including download assets
func CheckForUpdateWithAssets(currentVersion string) (*UpdateInfo, bool, error) {
- resp, err := http.Get("https://api.github.com/repos/tairasu/EpochSilicon/releases/latest")
+ resp, err := http.Get("https://git.burkey.co/api/v1/repos/eburk/epochsilicon/releases/latest")
if err != nil {
return nil, false, err
}