MagicMirrorOrg/MagicMirror · warning
[calendar] Deprecation warning: Please update your calendar
Error message
[calendar] Deprecation warning: Please update your calendar authentication configuration.
What it means
Old calendar configs put authentication directly on the calendar entry as `user` and `pass`. The module now expects them nested under an `auth` object. For backwards compatibility the module still copies user/pass into calendar.auth and logs this deprecation warning (plus a docs link) so users update their config before support is dropped.
Source
Thrown at defaultmodules/calendar/calendar.js:144
broadcastPastEvents: calendar.broadcastPastEvents,
selfSignedCert: calendar.selfSignedCert,
excludedEvents: calendar.excludedEvents,
fetchInterval: calendar.fetchInterval
};
if (typeof calendar.symbolClass === "undefined" || calendar.symbolClass === null) {
calendarConfig.symbolClass = "";
}
if (typeof calendar.titleClass === "undefined" || calendar.titleClass === null) {
calendarConfig.titleClass = "";
}
if (typeof calendar.timeClass === "undefined" || calendar.timeClass === null) {
calendarConfig.timeClass = "";
}
// we check user and password here for backwards compatibility with old configs
if (calendar.user && calendar.pass) {
Log.warn("[calendar] Deprecation warning: Please update your calendar authentication configuration.");
Log.warn("https://docs.magicmirror.builders/modules/calendar.html#configuration-options");
calendar.auth = {
user: calendar.user,
pass: calendar.pass
};
}
/*
* tell helper to start a fetcher for this calendar
* fetcher till cycle
*/
this.addCalendar(calendar.url, calendar.auth, calendarConfig);
});
// for backward compatibility titleReplace
if (typeof this.config.titleReplace !== "undefined") {
Log.warn("[calendar] Deprecation warning: Please consider upgrading your calendar titleReplace configuration to customEvents.");
for (const [titlesearchstr, titlereplacestr] of Object.entries(this.config.titleReplace)) {View on GitHub (pinned to 4b4a59534f)
Solutions
- Move user and pass into an `auth: { user, pass }` object within the calendar entry
- Remove the top-level user/pass fields once auth is in place
- If using bearer-token auth instead of basic auth, use `auth: { mode: "bearer", ... }` per current docs
- Consider referencing **SECRET_*** env placeholders instead of hardcoding the password
Example fix
// before
{ url: "https://example.com/cal.ics", user: "bob", pass: "secret" }
// after
{ url: "https://example.com/cal.ics", auth: { user: "bob", pass: "secret" } } Defensive patterns
Strategy: validation
Validate before calling
if (("user" in calendarEntry || "pass" in calendarEntry) && !("auth" in calendarEntry)) {
console.warn("Move user/pass into auth: { user, pass }");
} Type guard
function usesInlineCredentials(entry) {
return typeof entry === "object" && entry !== null && "user" in entry && "pass" in entry && !("auth" in entry);
} Prevention
- Always nest calendar credentials under auth
- Use **SECRET_*** env placeholders for passwords instead of literals
- Validate config against docs after MagicMirror upgrades
- Search startup log for 'Deprecation warning' regularly
When it happens
Trigger: A calendars array entry in the calendar module config contains both `user` and `pass` at the top level (calendar.user && calendar.pass both truthy), triggering the warning at defaultmodules/calendar/calendar.js:144 in start().
Common situations: Configs created before the auth option was introduced (Basic-auth protected ICS feeds); copied example configs with inline credentials; credentials set via **SECRET_** placeholders directly on user/pass.
Understand the failure class
- Authentication and authorization failures — expired tokens, bad credentials, and missing scopes.
Related errors
- [calendar] Your are using the deprecated config values 'colo
- [calendar] Your are using the deprecated config values 'colo
- [calendar] Deprecation warning: Please consider upgrading yo
- https://docs.magicmirror.builders/modules/calendar.html#conf
- This device is not allowed to access your mirror. <br> Pleas
AI-assisted analysis of MagicMirrorOrg/MagicMirror@4b4a59534f (2026-08-31).
Data as JSON: /api/errors/b437f36018279525.
Report an issue: GitHub.