Compare commits

..

14 commits
main ... v1.0.4

Author SHA1 Message Date
Rukira
8b054cd33d Hiding dock icon for MacOS
Some checks failed
Release Pipeline / Bump Version & Create Tag (push) Has been cancelled
Release Pipeline / Package Linux (DEB) (push) Has been cancelled
Release Pipeline / Package macOS (DMG) (push) Has been cancelled
Release Pipeline / Package Windows (MSI) (push) Has been cancelled
Release Pipeline / Create GitHub & Forgejo Releases (push) Has been cancelled
2026-08-25 11:38:37 +01:00
Rukira
846794fa36 Sticky buttons in Settings 2026-08-25 11:32:19 +01:00
Rukira
59b296d04d Roadmap update 2026-08-25 11:24:05 +01:00
Rukira
d07f0f31bd Bug report template 2026-08-25 10:44:52 +01:00
Rukira
195cbe8f7c feat(update): add update detection and notification on status screen (WB-008)
Some checks are pending
Release Pipeline / Bump Version & Create Tag (push) Waiting to run
Release Pipeline / Package Linux (DEB) (push) Blocked by required conditions
Release Pipeline / Package macOS (DMG) (push) Blocked by required conditions
Release Pipeline / Package Windows (MSI) (push) Blocked by required conditions
Release Pipeline / Create GitHub & Forgejo Releases (push) Blocked by required conditions
Co-authored-by: Junie <junie@jetbrains.com>
2026-08-25 10:30:52 +01:00
Rukira
d6a53dcb47 Fixing versioning 2026-08-25 10:21:39 +01:00
Rukira
b131adfad0 Cleaning up install instructions 2026-08-25 10:19:13 +01:00
Rukira
49ce1b17ac Fixing versioning 2026-08-25 10:17:38 +01:00
Rukira
7b555b7c9b Unlicense 2026-08-25 10:10:15 +01:00
Rukira
42a1b47348 License and readme updates 2026-08-25 10:09:41 +01:00
Rukira
8b39d0345b Fixing MacOS build issue. Improving documentation. 2026-08-25 09:40:28 +01:00
Rukira
21deba8c39 Fixing release job
Some checks are pending
Release Pipeline / Bump Version & Create Tag (push) Waiting to run
Release Pipeline / Package Linux (DEB) (push) Blocked by required conditions
Release Pipeline / Package macOS (DMG) (push) Blocked by required conditions
Release Pipeline / Package Windows (MSI) (push) Blocked by required conditions
Release Pipeline / Create GitHub & Forgejo Releases (push) Blocked by required conditions
2026-08-24 20:05:00 +01:00
Rukira
ccfb187601 feat(release): add Forgejo release step to GitHub Actions pipeline
Some checks are pending
Release Pipeline / Bump Version & Create Tag (push) Waiting to run
Release Pipeline / Package Linux (DEB) (push) Blocked by required conditions
Release Pipeline / Package macOS (DMG) (push) Blocked by required conditions
Release Pipeline / Package Windows (MSI) (push) Blocked by required conditions
Release Pipeline / Create GitHub & Forgejo Releases (push) Blocked by required conditions
Co-authored-by: Junie <junie@jetbrains.com>
2026-08-24 16:56:00 +01:00
101f80a3d5
Merge pull request #1 from GoncaloJoaoCorreia/feat/WB-006-release-pipeline
Some checks are pending
Release Pipeline / Bump Version & Create Tag (push) Waiting to run
Release Pipeline / Package Linux (DEB) (push) Blocked by required conditions
Release Pipeline / Package macOS (DMG) (push) Blocked by required conditions
Release Pipeline / Package Windows (MSI) (push) Blocked by required conditions
Release Pipeline / Create GitHub Release (push) Blocked by required conditions
Release pipeline
2026-08-24 16:25:42 +01:00
10 changed files with 43 additions and 113 deletions

View file

@ -154,7 +154,7 @@ jobs:
#### Available Packages
- **macOS**: \`.dmg\` installer (Apple Silicon & Intel)
- **Windows**: \`.msi\` Windows Installer
- **Linux (Experimental)**: \`.deb\` package (Debian / Ubuntu)
- **Linux**: \`.deb\` package (Debian / Ubuntu)
---
For detailed setup and installation notes, please refer to [INSTALL.md](https://git.asarius.site/rukira/wow-backup/src/tag/${RELEASE_TAG}/INSTALL.md)."
@ -206,33 +206,3 @@ jobs:
done
echo "Forgejo release published successfully."
- name: Update Homebrew Tap Cask
env:
FORGEJO_PAT: ${{ secrets.FORGEJO_PAT }}
RELEASE_VERSION: ${{ needs.bump-version.outputs.version }}
run: |
DMG_FILE=$(find dist -name "*.dmg" | head -n 1)
if [ -z "$DMG_FILE" ] || [ ! -f "$DMG_FILE" ]; then
echo "::error::No DMG file found in dist/ to update Homebrew Cask."
exit 1
fi
SHA256=$(sha256sum "$DMG_FILE" | awk '{print $1}')
echo "Calculated DMG SHA256: ${SHA256} for version ${RELEASE_VERSION}"
echo "Cloning homebrew-tap repository..."
git clone "https://rukira:${FORGEJO_PAT}@git.asarius.site/rukira/homebrew-tap.git" tap-repo
cd tap-repo
echo "Updating Casks/wow-backup.rb..."
sed -i "s/version \".*\"/version \"${RELEASE_VERSION}\"/" Casks/wow-backup.rb
sed -i "s/sha256 \".*\"/sha256 \"${SHA256}\"/" Casks/wow-backup.rb
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add Casks/wow-backup.rb
git commit -m "chore(cask): update wow-backup to v${RELEASE_VERSION}" || echo "No changes to commit"
git push origin main
echo "Homebrew tap updated successfully."

View file

@ -2,7 +2,7 @@
## Download
Download the appropriate installer for your platform from the **[latest release](https://git.asarius.site/rukira/wow-backup/releases/latest)**:
Download the appropriate installer for your platform from the **[latest release](https://git.asarius.site/rukira/wow-backup/releases)**:
| Platform | Package Format | Installer File Pattern |
|--------------------------|---|---|
@ -10,7 +10,23 @@ Download the appropriate installer for your platform from the **[latest release]
| **Windows** | Windows Installer (MSI) | `WoW Backup-<version>.msi` |
| **Linux** (Experimental) | Debian Package (DEB) | `wow-backup_<version>_amd64.deb` |
_Note: The Linux version is untested and experimental. Use at your own risk._
---
## macOS
1. Download the `.dmg` file from the latest release.
2. Double-click the `.dmg` file to mount the disk image.
3. Drag **WoW Backup.app** into your `/Applications` folder.
4. Eject the disk image.
### Unsigned Application / Gatekeeper Notice
Because WoW Backup is distributed without Apple Developer ID code-signing notarization, macOS Gatekeeper may show a warning on first launch (*"WoW Backup cannot be opened because the developer cannot be verified"* or *"Apple could not verify that WoW Backup is free of malware"*).
To launch the app for the first time:
1. Open **System Settings**
2. Navigate to **Security & Privacy**.
3. Click **Open Anyway** under **Allow apps downloaded from**.
4. Restart WoW Backup.
---
@ -28,58 +44,6 @@ If Windows Defender SmartScreen flags the installer (*"Windows protected your PC
---
## macOS
### Option 1: Manual DMG Download
1. Download the `.dmg` file from the **[latest release](https://git.asarius.site/rukira/wow-backup/releases/latest)**.
2. Double-click the `.dmg` file to mount the disk image.
3. Drag **WoW Backup.app** into your `/Applications` folder.
4. Eject the disk image.
#### Unsigned Application / Gatekeeper Notice
Because WoW Backup is distributed without Apple Developer ID code-signing notarization, macOS Gatekeeper may show a warning on first launch (*"WoW Backup cannot be opened because the developer cannot be verified"* or *"Apple could not verify that WoW Backup is free of malware"*).
To launch the app:
- **Terminal (Fastest):** Run the following command to strip the quarantine attribute:
```shell
xattr -cr "/Applications/WoW Backup.app"
```
- **macOS System Settings:**
1. Open **System Settings****Privacy & Security**.
2. Scroll down to the **Security** section.
3. Click **Open Anyway** next to the WoW Backup notice.
4. Confirm and launch the app.
---
### Option 2: Install via [Homebrew](https://brew.sh/)
**Install:**
1. Add the tap:
```shell
brew tap rukira/tap https://git.asarius.site/rukira/homebrew-tap.git
```
2. Install WoW Backup:
```shell
brew install --cask wow-backup
```
**Update:**
```shell
brew update
brew upgrade --cask wow-backup
```
**Uninstall:**
```shell
brew uninstall --cask --zap wow-backup
```
---
## Linux (Experimental)
1. Download the `.deb` package from the latest release.

View file

View file

@ -1,4 +1,8 @@
![WoW Backup](docs/screenshots/hero.png)
# WoW Backup
A lightweight, native-feeling desktop application to automatically backup World of Warcraft configuration data (WTF and Interface directories).
World of Warcraft stores all UI configurations, macros, keybindings, and addon data in the `WTF/` and `Interface/` folders. Losing this data due to game corruption, accidental deletion, or addon errors can mean losing years of customized setups. **WoW Backup** runs discreetly in the system tray, and automatically performs scheduled, timestamped backups (optionally compressed as ZIP archives).
## Installation & Download
@ -71,4 +75,4 @@ The app uses a configuration file to store user preferences. This file and runti
## License
This project is released into the public domain. See the [UNLICENSE](UNLICENSE) file or [unlicense.org](https://unlicense.org/) for details.
This project is released into the public domain. See the [LICENSE](LICENSE) file or [unlicense.org](https://unlicense.org/) for details.

View file

@ -12,12 +12,12 @@ kotlin {
sourceSets {
commonMain.dependencies {
implementation(libs.compose.runtime)
implementation(libs.compose.foundation)
implementation(libs.compose.material3)
implementation(libs.compose.ui)
implementation(libs.compose.components.resources)
implementation(libs.compose.components.uiToolingPreview)
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.material3)
implementation(compose.ui)
implementation(compose.components.resources)
implementation(compose.components.uiToolingPreview)
implementation(libs.androidx.lifecycle.viewmodelCompose)
implementation(libs.androidx.lifecycle.runtimeCompose)
}
@ -42,8 +42,7 @@ val appVersion = providers.gradleProperty("appVersion").orNull?.takeIf { it.isNo
val generatedSrcDir = layout.buildDirectory.dir("generated/src/jvmMain/kotlin")
val generateBuildConfig = tasks.register("generateBuildConfig") {
description = "Generates BuildConfig.kt"
val generateBuildConfig by tasks.registering {
val outputDir = generatedSrcDir
val version = appVersion
inputs.property("version", version)
@ -78,7 +77,7 @@ compose.desktop {
packageName = "WoW Backup"
packageVersion = appVersion
modules("java.naming", "java.sql", "java.instrument", "jdk.unsupported", "java.net.http")
modules("java.naming", "java.sql", "java.instrument", "jdk.unsupported")
macOS {
bundleID = "com.rukira.wowbackup"

View file

@ -20,7 +20,7 @@ fun WoWBackupTheme(
DynamicMaterialTheme(
seedColor = accentColor.seedColor,
isDark = useDarkTheme,
useDarkTheme = useDarkTheme,
content = content,
)
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 259 KiB

Binary file not shown.

View file

@ -1,25 +1,18 @@
[versions]
androidx-lifecycle = "2.11.0"
composeMaterial3 = "1.9.0"
composeMultiplatform = "1.11.1"
androidx-lifecycle = "2.10.0-alpha08"
composeMultiplatform = "1.11.0-alpha03"
kotlin = "2.2.21"
kotlinx-coroutines = "1.11.0"
kotlinx-datetime = "0.8.0"
kotlinx-serialization = "1.11.0"
kotlinx-coroutines = "1.10.2"
kotlinx-datetime = "0.6.2"
kotlinx-serialization = "1.10.0"
cardiologist = "0.8.0"
kotlin-logging = "8.0.4"
logback = "1.5.38"
materialKolor = "4.0.5"
kotlin-logging = "7.0.3"
logback = "1.5.18"
materialKolor = "2.0.0"
[libraries]
androidx-lifecycle-viewmodelCompose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle" }
androidx-lifecycle-runtimeCompose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidx-lifecycle" }
compose-runtime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "composeMultiplatform" }
compose-foundation = { module = "org.jetbrains.compose.foundation:foundation", version.ref = "composeMultiplatform" }
compose-material3 = { module = "org.jetbrains.compose.material3:material3", version.ref = "composeMaterial3" }
compose-ui = { module = "org.jetbrains.compose.ui:ui", version.ref = "composeMultiplatform" }
compose-components-resources = { module = "org.jetbrains.compose.components:components-resources", version.ref = "composeMultiplatform" }
compose-components-uiToolingPreview = { module = "org.jetbrains.compose.components:components-ui-tooling-preview", version.ref = "composeMultiplatform" }
kotlinx-coroutinesSwing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "kotlinx-coroutines" }
kotlinx-coroutinesTest = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinx-coroutines" }
kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinx-datetime" }

View file

@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME