Skip to content

Commit 2f0486a

Browse files
committed
tweaks
1 parent ee89d25 commit 2f0486a

16 files changed

Lines changed: 78 additions & 16 deletions

File tree

.changeset/cold-ties-exist.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@embr-jvm/core-designer': patch
3+
---
4+
5+
Add an Embr splash screen for unlicensed gateways.

.changeset/cute-chefs-trade.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@embr-jvm/core-designer': patch
3+
---
4+
5+
Add an `Embr Help` button to the designer's Help menu.

.changeset/fast-bears-divide.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
'@embr-jvm/core-designer': patch
33
---
44

5-
Add an Embr icon to the Designer's status bar. Clicking on this icon will navigate the user to Embr's documentation.
5+
Add a button to the Designer's status bar for unlicensed gateways. Clicking on this button will navigate the user to Embr's documentation.
6+
- The button's tooltip displays the license status for each Embr module.

.changeset/modern-cities-joke.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
---
2+
'@embr-modules/charts': major
3+
'@embr-modules/thermo': major
4+
'@embr-modules/periscope': minor
5+
'@embr-modules/snmp': minor
6+
---
7+
8+
Introduce an optional licensing model.
9+
10+
## Embr Module Licensing
11+
- To offer a more complete support model, Musson Industrial is introducing optional licensing for the Embr suite.
12+
- Don't worry, these modules will always remain free to use and open source.
13+
14+
15+
Here's what's changing:
16+
17+
**Standard Edition**
18+
- Embr modules are free to use but will run in trial mode when unlicensed.
19+
- **No functionality will be impacted by an expired trial.**
20+
- You can remove the trial status by purchasing a low-cost license from our web store.
21+
22+
**Maker Edition**
23+
- Embr modules are free to use with no trial mode.
24+
Licenses can be purchased at the [Musson Industrial Web Store](https://mussonindustrial.com/store).
25+
26+
## Expected Questions
27+
28+
- **Q:** Is Embr still open source?
29+
- **A:** Yes! The entire Embr suite is still MIT-licensed, and this will never change.
30+
31+
32+
- **Q:** Can I continue to use Embr Charts/Periscope/Thermo/SNMP for free?
33+
- **A:** Yes! The modules will report as being in trial mode, but no functionality will be impacted. You will still continue to receive updates.
34+
35+
36+
- **Q:** Why should I purchase a license?
37+
- **A:** A license removes the trial banner and supports continued development of the Embr suite, helping ensure these modules remain useful, reliable, and actively maintained.
38+
39+
40+
- **Q:** What if I upgrade from 8.1 to 8.3?
41+
- **A:** License keys are not tied to a specific Ignition version and will never expire.
42+
43+
44+
- **Q:** Will you offer redundant gateway, integrator, or bulk purchase discounts?
45+
- **A:** We aim to keep licensing simple, affordable, and automated, so there are currently no additional discounts.
46+
47+
48+
- **Q:** I have questions regarding licenses, special setups, or long-term support guarantees.
49+
- **A:** We're here for you! For setups that fall outside the standard automated licensing process, please reach out so we can provide guidance.

libraries/core/common/src/main/kotlin/com/mussonindustrial/embr/common/Embr.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,20 @@ import com.inductiveautomation.ignition.common.model.PlatformEdition
44

55
object Embr {
66
val CHARTS = EmbrModuleMeta("com.mussonindustrial.embr.charts", "embr-charts", "/embr/charts")
7-
7+
val PERISCOPE =
8+
EmbrModuleMeta("com.mussonindustrial.embr.periscope", "embr-periscope", "/embr/periscope")
89
val EVENT_STREAM =
910
EmbrModuleMeta(
1011
"com.mussonindustrial.embr.eventstream",
1112
"embr-event-stream",
1213
"/embr/event-stream",
1314
)
14-
1515
val SNMP = EmbrModuleMeta("com.mussonindustrial.embr.snmp", "embr-snmp", "/embr/snmp")
1616
val THERMO = EmbrModuleMeta("com.mussonindustrial.embr.thermo", "embr-thermo", "/embr/thermo")
1717

1818
const val DOCUMENTATION_URL = "https://docs.mussonindustrial.com/"
1919

20-
fun isLicenseRequested(): Boolean {
20+
fun isLicenseRequired(): Boolean {
2121
return !PlatformEdition.isMaker()
2222
}
2323
}

libraries/core/designer/src/main/kotlin/com/mussonindustrial/embr/designer/EmbrDesignerContextImpl.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,9 @@ open class EmbrDesignerContextImpl(private val context: DesignerContext) :
3535

3636
context.frame.onWindowOpenedOnce {
3737
helpMenu?.insert(EmbrHelpMenuItem(), 1)
38-
statusBar.addDisplay(EmbrStatusBarButton(this), 1)
39-
4038
if (unlicensedEmbrModules.isNotEmpty()) {
4139
EmbrStartupModal()
40+
statusBar.addDisplay(EmbrStatusBarButton(this), 1)
4241
}
4342
}
4443
}

libraries/core/designer/src/main/kotlin/com/mussonindustrial/embr/designer/gui/EmbrStartupModal.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import javax.swing.Timer
99
class EmbrStartupModal : JWindow() {
1010

1111
private val executor = Executors.newSingleThreadScheduledExecutor()
12-
private val autocloseDelay = 2000
12+
private val autocloseDelay = 1000
1313
private val fadeDuration = 300L
1414

1515
init {

libraries/core/designer/src/main/kotlin/com/mussonindustrial/embr/designer/gui/EmbrStatusBarButton.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ import javax.swing.SwingUtilities
1111

1212
class EmbrStatusBarButton(private val context: EmbrDesignerContext) : JLabel() {
1313

14+
val colorRed = "#ff5c5c"
15+
val colorGreen = "#5cff7c"
16+
1417
init {
1518
icon = EmbrDesignerIcons.emblem
1619
text = if (context.unlicensedEmbrModules.isNotEmpty()) "Embr (UNLICENSED)" else ""
@@ -34,9 +37,9 @@ class EmbrStatusBarButton(private val context: EmbrDesignerContext) : JLabel() {
3437
val isLicensed =
3538
licenseMode == LicenseMode.Activated || licenseMode == LicenseMode.Free
3639
if (isLicensed) {
37-
"<font color='green'>${module.name}</font>"
40+
"<font color='$colorGreen'>${module.name}</font>"
3841
} else {
39-
"<font color='red'>${module.name} <b>(<u>UNLICENSED</u>)</b></font>"
42+
"<font color='$colorRed'>${module.name} <b>(<u>UNLICENSED</u>)</b></font>"
4043
}
4144
}
4245

-14.3 KB
Loading

modules/charts/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ ignitionModule {
88
moduleDescription.set("A collection of enhanced Perspective charting components.")
99
id.set("com.mussonindustrial.embr.charts")
1010
fileName.set("Embr-Charts-Ignition83-${version}.modl")
11-
freeModule.set(false)
11+
freeModule.set(true)
1212
requiredIgnitionVersion.set(libs.versions.ignition.sdk)
1313
license.set("license.html")
1414

0 commit comments

Comments
 (0)