# Deliberate divergences from upstream StreamTweak Every line here is one of *his* added lines that is intentionally **not** in our tree. `scripts/port-from-streamtweak.sh --check` compares his added lines against ours and flags anything absent — this file is where each flag gets its reason, so a real miss can never hide among expected ones. Rule of the file: if a line is absent and it is **not** listed here, that is a bug. Go port it. Fork point: his `v8.2.0`. Upstream clone: `~/.hermes/cache/scratch/upstream-streamtweak`. --- ## Version numbers — we are not his release line ArtLight Control versions independently. His versions are provenance, so they stay in **code comments** and are out of **everything a user reads** (installer strings, XAML, changelog). | File | Absent line | Reason | |---|---|---| | `control/ArtLightControl/ArtLightControl.csproj` | `8.7.0`, ``, `` | ours is `1.2.2` | | `control/Installer.iss` | `; ArtLightControl v8.7.0 — GitHub Release Installer` | ours reads `ArtLight Control`, `1.2.2` | | `control/Installer.iss` | `#define MyAppVersion "8.7.0"` | ours is `1.2.2` | | `control/ArtLightControl/MainWindow.xaml.cs` | `: "v8.3.0";` | our fallback string is `v0.1.0` (commit `a9611e17`) | | `control/ArtLightControl/ViewModels/SettingsViewModel.cs` | `: "8.3.0";` | same fallback, same reason | | `control/changelog.txt` | all 87 lines — his 8.3.0 → 8.7.0 entries | different product's release line. Our changelog is ours, from `1.2.2` onward. **His entries are not imported, and this is a standing decision — revisit only if Nik wants a "parity port" entry for the release we actually ship.** | ## Version numbers in user-facing prose Both of these named the *client's* upstream version. Our users do not see upstream version numbers, and the sentence is complete without it. | File | Absent line | Reason | |---|---|---| | `control/ArtLightControl/Views/ClientsView.xaml` | `Tip="… The device must turn it on too; ArtMoon 6.3.0 or later."` | trailing clause dropped; every other word kept | | `control/ArtLightControl/Views/GlossaryView.xaml` | `Definition="… Needs ArtMoon 6.3.0 or later, with the option turned on there too."` | same | ## Our own branding | File | Absent line | Reason | |---|---|---| | `control/ArtLightControl.Core/StartupModeManager.cs` | `td.RegistrationInfo.Author = "FoggyBytes";` | our publisher is `onaiaku` (`control/Installer.iss`) | | `control/ArtLightControl.Core/StartupModeManager.cs` | `"…Managed from ArtLightControl's Settings page."` | product name is "ArtLight Control", two words, when it is prose | ## Not ours to carry | File | Absent line | Reason | |---|---|---| | `.badges/downloads.svg` | his download counter | counts downloads of *his* repo | | `README.md` | all 12 lines — his 8.7.0 "What's New", bridge verb list, `ArtLightControlUI.exe` blurb | ours is ArtLight's own README. ⚠️ **Open question for Nik:** his README does document the clipboard, remote power and startup modes as user-facing feature bullets. Ours may now be behind. Not a code gap. | --- ## Two things to remember about this file 1. **`FoggyBytes.ClipboardSync` is NOT a divergence.** It is in both trees on purpose — his host registers it and our ArtMoon client registers it. It is the handshake between the two halves of one feature, not branding. The `--check` output should never show it as absent; if it does, someone has rebranded it and broken the clipboard. 2. **These are the *only* reasons a flag is allowed to be ignored.** A new absent line with no row here means the port is incomplete. That is exactly how the Windows App SDK runtime mismatch was caught: `ArtLightControl.csproj` had taken `Microsoft.WindowsAppSDK 2.4.0` through a clean, conflict-free merge while `Installer.iss` was skipped entirely and still installed the 2.3 runtime. Nothing failed. The merge was clean.