43 Commits

Author SHA1 Message Date
Dusk-92 d4c4f0eef3 Publish Discord details test prerelease 2026-09-02 15:07:51 +02:00
Dusk-92 c4d0d5fee6 Default test broadcast mask to all details 2026-09-02 15:07:29 +02:00
Dusk-92 f8886e15aa Accept any shared character detail 2026-09-02 15:07:20 +02:00
Dusk-92 35a94d6b49 Add independent Race broadcast flag 2026-09-02 15:07:07 +02:00
Dusk-92 9f50681798 Clarify Discord Application ID setup wording 2026-09-02 09:28:30 +02:00
Dusk-92 699b158fdf Move OctoWoW Application ID below example 2026-09-02 09:27:32 +02:00
Dusk-92 05376fabd2 Link Modernization Tool in README 2026-09-02 09:16:18 +02:00
Dusk-92 6f11db08d7 Clarify release asset in README 2026-09-02 09:13:36 +02:00
Dusk-92 ee71b4364c release v1.2 2026-09-02 09:10:52 +02:00
Dusk-92 f2623c33fd Use curated v1.2 release notes 2026-09-02 09:10:43 +02:00
Dusk-92 a63a7b5a48 release v1.2 2026-09-02 09:09:47 +02:00
Dusk-92 a4e0b7afcf Update v1.2 release notes 2026-09-02 09:09:38 +02:00
Dusk-92 05dc4094a0 Publish only the WowPresence ZIP release asset 2026-09-02 09:06:14 +02:00
Dusk-92 e27c7334bc release v1.2 2026-09-02 09:03:41 +02:00
Dusk-92 fdb3126d1f Improve WoW process detection logging 2026-09-02 09:00:56 +02:00
Dusk-92 4576605dce Document OctoWoW Discord Application ID 2026-09-01 20:10:15 +02:00
Dusk-92 e393a7999b release v1.2 2026-09-01 16:51:22 +02:00
Dusk-92 8048e804f6 Prepare WowPresence v1.2 release 2026-09-01 16:51:05 +02:00
Dusk-92 3c76de9bdb Document ClassicAPI technical reference 2026-09-01 16:50:55 +02:00
Dusk-92 0994fe4e08 Document AreaTable zone resolution 2026-09-01 16:50:43 +02:00
Dusk-92 f261c3be29 Resolve zones through AreaTable 2026-09-01 16:50:09 +02:00
Dusk-92 750fe8a2e5 release v1.1 2026-09-01 16:18:30 +02:00
Dusk-92 aa9412d7c2 Prepare WowPresence v1.1 release 2026-09-01 16:18:19 +02:00
Dusk-92 d0aff5e95a Document Modernization Tool data path 2026-09-01 16:14:15 +02:00
Dusk-92 2a10763dac Support Modernization Tool data directory 2026-09-01 16:13:59 +02:00
Dusk-92 9449080788 Support Modernization Tool data directory 2026-09-01 16:13:53 +02:00
Dusk-92 bbe8fe2b83 release v1.0 2026-09-01 16:03:55 +02:00
Dusk-92 5a8fd856b9 Prepare WowPresence v1.0 release 2026-09-01 16:03:45 +02:00
Dusk-92 c0d297c3b9 Refresh README for standalone WowPresence folder 2026-09-01 16:00:28 +02:00
Dusk-92 1fb85ac7ea Refresh companion runtime path comment 2026-09-01 15:59:59 +02:00
Dusk-92 34ca3f6b83 Refresh standalone runtime path comments 2026-09-01 15:59:54 +02:00
Dusk-92 79d0744b33 Package standalone WowPresence folder 2026-09-01 15:59:49 +02:00
Dusk-92 89efe5795d Use standalone WowPresence data folder 2026-09-01 15:59:03 +02:00
Dusk-92 374b69dc2d Use standalone WowPresence data folder 2026-09-01 15:58:48 +02:00
Dusk-92 2aa16fbbc1 Fix WowPresence workflow expressions 2026-09-01 15:52:48 +02:00
Dusk-92 4fe7cfd406 Document ready-to-install Discord ID setup 2026-09-01 15:52:21 +02:00
Dusk-92 d3a2c1f842 Add default broadcast flags 2026-09-01 15:51:54 +02:00
Dusk-92 3918f1da67 Add Discord Application ID template 2026-09-01 15:51:50 +02:00
Dusk-92 d2bf4c0883 Package ready-to-edit WowPresence config 2026-09-01 15:51:40 +02:00
Dusk-92 22ee3b3970 Refresh standalone WowPresence source identity 2026-09-01 15:51:23 +02:00
Dusk-92 cf1aa736ef Require configured Discord Application ID 2026-09-01 15:51:14 +02:00
Dusk-92 503103179d Refresh README presentation 2026-09-01 15:44:08 +02:00
Dusk-92 36391f1ea9 Set up standalone WowPresence project 2026-09-01 15:41:42 +02:00
5 changed files with 81 additions and 95 deletions
+21 -4
View File
@@ -4,6 +4,7 @@ on:
push:
branches:
- main
- test/discord-detail-flags
tags:
- 'v*'
pull_request:
@@ -72,16 +73,32 @@ jobs:
dist/WowPresence.zip
if-no-files-found: error
- name: Create GitHub Release v1.3
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && github.event.head_commit.message == 'release v1.3' }}
- name: Publish Discord details test prerelease
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/test/discord-detail-flags' }}
uses: softprops/action-gh-release@v3
with:
tag_name: v1.3
tag_name: test-discord-details
target_commitish: ${{ github.sha }}
files: |
dist/WowPresence.zip
fail_on_unmatched_files: true
name: "WowPresence v1.3"
name: "WowPresence Discord Details Test"
body: |
Test-only WowPresence build for Modernization Tool Discord detail controls.
Not intended for stable/manual installation.
prerelease: true
make_latest: false
- name: Create GitHub Release v1.2
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && github.event.head_commit.message == 'release v1.2' }}
uses: softprops/action-gh-release@v3
with:
tag_name: v1.2
target_commitish: ${{ github.sha }}
files: |
dist/WowPresence.zip
fail_on_unmatched_files: true
name: "WowPresence v1.2"
body_path: RELEASE_NOTES.md
generate_release_notes: false
make_latest: true
+20 -55
View File
@@ -56,6 +56,7 @@ instead. No separate build is required.
To configure your own Discord Application ID:
1. Open the **Discord Developer Portal**: https://discord.com/developers/applications
2. Create a **New Application**.
3. Give it the name you want Discord to display.
@@ -161,75 +162,29 @@ Runtime files are kept together in one of these locations:
If the Modernization Tool managed folder exists, WowPresence automatically prefers it. Otherwise it uses the standalone `WowPresence` folder.
## 🔒 Discord Rich Presence privacy
## 🔒 Privacy flags
WowPresence lets you choose exactly which character details are shown on Discord.
For a standalone installation, edit:
The included file:
```text
WowPresence\discord_broadcast_flags
```
When WowPresence is installed through **Modernization Tool**, the equivalent file is stored in:
```text
.modernization_tool\WowPresence\discord_broadcast_flags
```
Modernization Tool provides checkboxes for these options, so manual bitmask editing is normally only needed for standalone WowPresence installations.
### Available fields
Each field has its own value:
controls which character details are published to Discord.
| Value | Field |
| ---: | --- |
| 1 | Character Name |
| 1 | Name |
| 2 | Guild |
| 4 | Faction |
| 8 | Class |
| 16 | Level |
| 32 | Zone |
| 64 | Race |
| 63 | All fields |
To display multiple fields, **add their values together** and put the result in `discord_broadcast_flags`.
The release package uses `63` by default.
### Examples
| Display | Value |
| --- | ---: |
| Nothing | 0 |
| Character Name only | 1 |
| Faction + Class | 12 |
| Race only | 64 |
| Race + Faction + Class | 76 |
| Character Name + Level + Zone | 49 |
| All character details | 127 |
Example — to display **Race + Faction + Class**:
```text
Race = 64
Faction = 4
Class = 8
64 + 4 + 8 = 76
```
Then set:
```text
76
```
inside `discord_broadcast_flags`.
The default configuration uses `127`, which enables all supported character details.
WowPresence reads this setting while the game is running, so changes should normally appear on Discord automatically within a few seconds.
If the file is missing or contains an invalid value, WowPresence falls back to all supported fields.
If the file is deleted, WowPresence also defaults to all supported fields.
## 🛡️ Administrator privileges
@@ -260,14 +215,24 @@ The ZIP includes the ready-to-edit `WowPresence` configuration folder.
Tags matching `v*` publish `WowPresence.zip` as the GitHub Release asset.
## 📜 Project identity
## 📜 Project identity & licensing
WowPresence is an **independent community project**.
Compatibility with **World of Warcraft**, **Discord**, **OctoWoW**, **VanillaFixes**, or other referenced projects does not imply affiliation, endorsement, sponsorship or ownership by their respective rights holders or maintainers.
Compatibility with **World of Warcraft**, **Discord**, **OctoWoW**, **VanillaFixes**, **IchaLaunch**, or other referenced projects does not imply affiliation, endorsement, sponsorship or ownership by their respective rights holders or maintainers.
**World of Warcraft**, **Warcraft**, **Blizzard Entertainment**, **Discord**, and related names and marks remain the property of their respective rights holders.
This repository does not currently declare a software license.
For detailed provenance and third-party information, see:
- [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)
## 🙏 Credits
WowPresence is maintained by **Dusk-92**.
The project was inspired in part by the WoW character-status / Discord Rich Presence implementation in **IchaLaunch** by **brutaliccus**.
The current WowPresence implementation is maintained separately and does not include IchaLaunch binaries.
+23 -16
View File
@@ -1,22 +1,29 @@
# WowPresence v1.3
# WowPresence v1.2
## What's New
## Changes
- Added independent privacy control for:
- Character Name
- Guild
- Race
- Faction
- Class
- Level
- Zone
- Added a dedicated Race flag.
- Full detail mask is now `127`.
- Fixed Discord Rich Presence combinations that previously failed when Name, Zone or Level were not shared.
- Race is no longer always shown and can now be disabled independently.
- Improved handling of empty Discord Rich Presence fields.
- Updated README with standalone privacy configuration examples.
- Reworked zone detection to use the player's real AreaTable ID.
- Zone names are now resolved from `AreaTable.dbc` instead of selecting the first plausible string from several client addresses.
- Prevents internal map/area tokens such as `H32D` and `HLVA` from being published as Discord zone names.
- Uses the client's active localized AreaTable name when available, with a safe populated-locale fallback.
- Keeps WowPresence fully standalone; ClassicAPI is not required.
- Modernization Tool installations continue to use `.modernization_tool\WowPresence\` automatically.
- Improved WoW process detection logging with a generic `WoW process detected.` message.
- Manual/debug process fallback now supports both `WoW_Modernized.exe` and `WoW.exe`.
- Documented the OctoWoW Discord Application ID for standalone configuration.
## Included
- `WowPresence.zip` — ready-to-install package containing `WowPresence.dll`, `WowPresence.exe`, and the WowPresence configuration folder.
## Commits
- [`f261c3b`](https://github.com/Dusk-92/WowPresence/commit/f261c3be298d56bc025671e22a348555157f94b3) Resolve zones through AreaTable
- [`0994fe4`](https://github.com/Dusk-92/WowPresence/commit/0994fe4e08b03ec17b09d09eb51a2e7c2b0b2db1) Document AreaTable zone resolution
- [`3c76de9`](https://github.com/Dusk-92/WowPresence/commit/3c76de9bdbcb19a45543bd09b03bbd75a2d65d8f) Document ClassicAPI technical reference
- [`8048e80`](https://github.com/Dusk-92/WowPresence/commit/8048e804f6629c75cc3b1d81f835aaa1c1f8a423) Prepare WowPresence v1.2 release
- [`4576605`](https://github.com/Dusk-92/WowPresence/commit/4576605dce59702d8f90d542e7db3dae4789e1ed) Document OctoWoW Discord Application ID
- [`fdb3126`](https://github.com/Dusk-92/WowPresence/commit/fdb3126d1fc6c09392c21d07327c21084aeeb112) Improve WoW process detection logging
- [`05dc409`](https://github.com/Dusk-92/WowPresence/commit/05dc4094a0f326699c72176ad516d3341e7be33f) Publish only the WowPresence ZIP release asset
**Full Changelog**: [v1.1...v1.2](https://github.com/Dusk-92/WowPresence/compare/v1.1...v1.2)
+14
View File
@@ -2,6 +2,20 @@
WowPresence contains original project code maintained by Dusk-92 and uses compatibility knowledge related to World of Warcraft 1.12.1 and Discord local Rich Presence IPC.
## IchaLaunch
The development of WowPresence was inspired in part by the character-status / Discord Rich Presence implementation in:
- Project: IchaLaunch
- Author / maintainer: brutaliccus
- Repository: https://github.com/brutaliccus/IchaLaunch
IchaLaunch was used as a technical reference during development, particularly for understanding a working WoW 1.12.1 character-status sampling approach.
The current WowPresence implementation is maintained separately and has been independently reworked. No IchaLaunch binary is included in this repository.
At the historical IchaLaunch revision reviewed during development, no explicit LICENSE, LICENSE.md, or COPYING file was present. This notice therefore records provenance and credit; it should not be interpreted as granting rights on behalf of the IchaLaunch author.
## ClassicAPI technical reference
AreaTable and current-player-area client layout details were cross-checked against:
+3 -20
View File
@@ -404,26 +404,9 @@ static void format_activity(const Status *s, char *out, size_t out_size, long lo
lstrcpynA(details, extra, sizeof(details));
}
/* Discord rejects empty string values for Rich Presence text fields.
* Omit a field entirely when the user did not choose anything that maps
* to it, so Race/Class/Faction/Guild-only and Zone-only combinations work. */
if (details[0] && s->zone[0]) {
_snprintf(out, out_size,
"{\"details\":\"%s\",\"state\":\"%s\",\"timestamps\":{\"start\":%lld}}",
details, s->zone, session_start);
} else if (details[0]) {
_snprintf(out, out_size,
"{\"details\":\"%s\",\"timestamps\":{\"start\":%lld}}",
details, session_start);
} else if (s->zone[0]) {
_snprintf(out, out_size,
"{\"state\":\"%s\",\"timestamps\":{\"start\":%lld}}",
s->zone, session_start);
} else {
_snprintf(out, out_size,
"{\"timestamps\":{\"start\":%lld}}",
session_start);
}
_snprintf(out, out_size,
"{\"details\":\"%s\",\"state\":\"%s\",\"timestamps\":{\"start\":%lld}}",
details, s->zone, session_start);
out[out_size - 1] = 0;
}