{"record":{"id":"b437f36018279525","repo":"MagicMirrorOrg/MagicMirror","slug":"calendar-deprecation-warning-please-update-your","errorCode":null,"errorMessage":"[calendar] Deprecation warning: Please update your calendar authentication configuration.","messagePattern":"\\[calendar\\] Deprecation warning: Please update your calendar authentication configuration\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"defaultmodules/calendar/calendar.js","lineNumber":144,"sourceCode":"\t\t\t\tbroadcastPastEvents: calendar.broadcastPastEvents,\n\t\t\t\tselfSignedCert: calendar.selfSignedCert,\n\t\t\t\texcludedEvents: calendar.excludedEvents,\n\t\t\t\tfetchInterval: calendar.fetchInterval\n\t\t\t};\n\n\t\t\tif (typeof calendar.symbolClass === \"undefined\" || calendar.symbolClass === null) {\n\t\t\t\tcalendarConfig.symbolClass = \"\";\n\t\t\t}\n\t\t\tif (typeof calendar.titleClass === \"undefined\" || calendar.titleClass === null) {\n\t\t\t\tcalendarConfig.titleClass = \"\";\n\t\t\t}\n\t\t\tif (typeof calendar.timeClass === \"undefined\" || calendar.timeClass === null) {\n\t\t\t\tcalendarConfig.timeClass = \"\";\n\t\t\t}\n\n\t\t\t// we check user and password here for backwards compatibility with old configs\n\t\t\tif (calendar.user && calendar.pass) {\n\t\t\t\tLog.warn(\"[calendar] Deprecation warning: Please update your calendar authentication configuration.\");\n\t\t\t\tLog.warn(\"https://docs.magicmirror.builders/modules/calendar.html#configuration-options\");\n\t\t\t\tcalendar.auth = {\n\t\t\t\t\tuser: calendar.user,\n\t\t\t\t\tpass: calendar.pass\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * tell helper to start a fetcher for this calendar\n\t\t\t * fetcher till cycle\n\t\t\t */\n\t\t\tthis.addCalendar(calendar.url, calendar.auth, calendarConfig);\n\t\t});\n\n\t\t// for backward compatibility titleReplace\n\t\tif (typeof this.config.titleReplace !== \"undefined\") {\n\t\t\tLog.warn(\"[calendar] Deprecation warning: Please consider upgrading your calendar titleReplace configuration to customEvents.\");\n\t\t\tfor (const [titlesearchstr, titlereplacestr] of Object.entries(this.config.titleReplace)) {","sourceCodeStart":126,"sourceCodeEnd":162,"githubUrl":"https://github.com/MagicMirrorOrg/MagicMirror/blob/4b4a59534f7da01e4030e46029fe9dd649a7675e/defaultmodules/calendar/calendar.js#L126-L162","documentation":"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.","triggerScenarios":"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().","commonSituations":"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.","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"],"exampleFix":"// before\n{ url: \"https://example.com/cal.ics\", user: \"bob\", pass: \"secret\" }\n// after\n{ url: \"https://example.com/cal.ics\", auth: { user: \"bob\", pass: \"secret\" } }","handlingStrategy":"validation","validationCode":"if ((\"user\" in calendarEntry || \"pass\" in calendarEntry) && !(\"auth\" in calendarEntry)) {\n  console.warn(\"Move user/pass into auth: { user, pass }\");\n}","typeGuard":"function usesInlineCredentials(entry) {\n  return typeof entry === \"object\" && entry !== null && \"user\" in entry && \"pass\" in entry && !(\"auth\" in entry);\n}","tryCatchPattern":null,"preventionTips":["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"],"tags":["deprecation","calendar","authentication","configuration"],"backgroundTag":"deprecated-config-option","analyzedSha":"4b4a59534f7da01e4030e46029fe9dd649a7675e","analyzedAt":"2026-08-31T21:49:42.591Z","schemaVersion":2},"datasetVersion":"2026-08-31T22:30:34.772Z"}