@xIExodusIx Hi!
First, the green debug code was displayed because I forgot to set it to “false” by default. You can change this in config.js, but I’ll update the default setting so it only appears when the user wants it (ie when setting “true” in config.js).
Second, the module still has some quirks in its startup behavior—it requires a full cycle before everything runs smoothly. I’m working on it, but to be honest, it’s a low-priority fix since it’s a fringe case. Typically, the module will be running continuously, so birthday initialization should trigger when the mirror is already active. That’s probably why you’re not seeing the confetti right away.
Third, regarding the different versions of Fireworks—absolutely! The reason there are multiple versions is simply that I left them in from my experiments. I didn’t originally plan to include that functionality, but once the core features are fully ironed out, I’d be happy to refine and expand on it.
As for positioning, the module is currently designed to use the entire screen. I might look into allowing more customization in the future, but for now, it just places the message in the center and then launches confetti and fireworks.
When you say it “ignores the page,” are you referring to the page cycling?
I’ve also attached my test config.js. It has three pages, and after cycling through them to align the timings, the expected behavior should be:
Page 1 – Normal modules
Page 2 – Birthday celebration with dimming
Page 3 – Birthday celebration without dimming
Test config.js (which needs MMM-page-indicator). I’ve let this run for about an hour now, and everything (apart from weather module because its not part of the test) works as intended:
/* MagicMirror² Config for testing MMM-Birthday-Paged with immersiveMode */
let config = {
address: "localhost",
port: 8080,
basePath: "/",
ipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1", "::1"],
useHttps: false,
httpsPrivateKey: "",
httpsCertificate: "",
language: "en",
locale: "en-US",
logLevel: ["INFO", "LOG", "WARN", "ERROR", "DEBUG"],
timeFormat: 24,
units: "metric",
modules: [
{
module: "alert",
},
{
module: "clock",
position: "top_left",
classes: "page1 page3" // Show on page 1 and 3
},
{
module: "calendar",
header: "Holidays",
position: "top_left",
classes: "page1 page3", // Show on page 1 and 3
config: {
calendars: [
{
symbol: "calendar-check",
url: "webcal://www.calendarlabs.com/ical-calendar/ics/76/US_Holidays.ics"
}
]
}
},
{
module: "weather",
position: "top_right",
classes: "page1 page3", // Show on page 1 and 3
config: {
weatherProvider: "yr",
type: "current",
location: "Stockholm",
locationID: "2673730", // Stockholm's ID
roundTemp: true
}
},
{
module: "compliments",
position: "lower_third",
classes: "page1 page3", // Show on page 1 and 3
},
// MMM-Birthday-Paged with immersiveMode = true (dims modules)
{
module: "MMM-Birthday-Paged",
position: "middle_center",
classes: "page2", // Show on page 2
config: {
birthdays: [
// Today's date (March 16, 2025) with name John
{ name: "John", date: "03-16" }
],
fireworkDuration: "infinite",
confettiDuration: "infinite",
immersiveMode: true, // Dims other modules
debug: true,
startupDelay: 500 // Shorter startup delay for testing
}
},
// MMM-Birthday-Paged with immersiveMode = false (original module behavior)
{
module: "MMM-Birthday-Paged",
position: "middle_center",
classes: "page3", // Show on page 3
config: {
birthdays: [
// Today's date (March 16, 2025) with name John
{ name: "John", date: "03-16" }
],
fireworkDuration: "infinite",
confettiDuration: "infinite",
immersiveMode: false, // Does NOT dim other modules
debug: true,
startupDelay: 500 // Shorter startup delay for testing
}
},
// Page indicator to see which page is showing
{
module: "MMM-page-indicator",
position: "bottom_bar",
config: {
pages: 3
}
},
// MMM-pages for page switching
{
module: "MMM-pages",
config: {
modules: [
["page1"], // Page 1 - Normal modules
["page2"], // Page 2 - Birthday celebration with dimming
["page3"] // Page 3 - Birthday celebration without dimming
],
fixed: ["alert", "MMM-page-indicator"],
rotationTime: 15000, // 15 seconds between page changes
rotationDelay: 15000,
animationTime: 1000
}
}
]
};
/*************** DO NOT EDIT THE LINE BELOW ***************/
if (typeof module !== "undefined") {module.exports = config;}