MagicMirrorOrg/MagicMirror · info

https://docs.magicmirror.builders/modules/calendar.html#conf

Error message

https://docs.magicmirror.builders/modules/calendar.html#configuration-options

What it means

This is the companion documentation link logged immediately after the calendar auth deprecation warning (error 47). The module emits Log.warn with the URL to the official calendar configuration docs so users can find the current auth option syntax. It is informational, not a failure.

Source

Thrown at defaultmodules/calendar/calendar.js:145

				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)) {
				this.config.customEvents.push({ keyword: ".*", transform: { search: titlesearchstr, replace: titlereplacestr } });

View on GitHub (pinned to 4b4a59534f)

Solutions

  1. Open https://docs.magicmirror.builders/modules/calendar.html#configuration-options and migrate to the auth option
  2. Fix the config per error 47 and both warnings disappear
  3. Treat any bare-URL log lines as pointers to documentation, not errors to suppress

Example fix

// no code change needed for this line itself; resolve by fixing the auth config:
// before
{ url: "...", user: "bob", pass: "secret" }
// after
{ url: "...", auth: { user: "bob", pass: "secret" } }
Defensive patterns

Strategy: validation

Validate before calling

// no pre-check needed; this Log.warn accompanies the auth deprecation (error 47).
// Fixing the auth config silences it.

Prevention

When it happens

Trigger: Same condition as error 47: a calendar entry with top-level user and pass causes two consecutive Log.warn calls, the second being the docs URL at defaultmodules/calendar/calendar.js:145.

Common situations: Appears in logs when auditing startup output after an upgrade; often surfaces when users report 'strange URL warnings' in the MagicMirror log.

Related errors


AI-assisted analysis of MagicMirrorOrg/MagicMirror@4b4a59534f (2026-08-31). Data as JSON: /api/errors/85151e1b5e0ba568. Report an issue: GitHub.