M4 Calendar: publish public .ics links, subscriptions, multi-calendar settings
Calendar (builtin plugin):
- Publish read-only public .ics feed per calendar via vault-sealed token
(full-detail or free/busy-only); unauthenticated GET /public/{token},
404 on bad/absent token. Migration calendar0004 adds publish_token,
publish_busy, subscription_url + partial unique index.
- Subscribe to external iCal (.ics) URLs (SSRF-guarded) as read-only
calendars; CSRF-guarded POST /subscriptions.
- Settings > Calendars: create/edit/delete, publish toggles with live
shareable link + copy, Add-account stubs (Google/iCloud/CalDAV, deferred),
Subscriptions section; default calendar + default reminders; auto-detected
time zone; color-dropdown contrast fix; 3x-larger edit arrow.
- Left panel: shared Mail-parity sidebar template (.wm-side-*), calendar
search panel, font/spacing tuning, per-section "+" create shortcut.
Frontend: CalendarOut publish fields, api publish/subscribe, settings keys.
Backend: settings default_calendar + reminder lists.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U72FZiF1W1pb8XxyWBTREA
This commit is contained in:
@@ -13,6 +13,7 @@ export const en = {
|
||||
"common.edit": "Edit",
|
||||
"common.close": "Close",
|
||||
"common.clear": "Clear",
|
||||
"common.copy": "Copy",
|
||||
"common.back": "Back",
|
||||
"common.next": "Next",
|
||||
"common.signOut": "Sign out",
|
||||
@@ -226,6 +227,33 @@ export const en = {
|
||||
"settings.timeFormat": "Time format",
|
||||
"settings.timeFormat24": "24-hour (14:30)",
|
||||
"settings.timeFormat12": "12-hour (2:30 PM)",
|
||||
"settings.calendars": "Calendars",
|
||||
"settings.myCalendars": "My calendars",
|
||||
"settings.calendarOptions": "Calendar options",
|
||||
"settings.createCalendar": "Create calendar",
|
||||
"settings.editCalendar": "Edit calendar",
|
||||
"settings.export": "Export",
|
||||
"settings.calendarDisplay": "Calendar display",
|
||||
"settings.default": "Default",
|
||||
"settings.defaultCalendar": "Default calendar",
|
||||
"settings.firstCalendar": "First calendar",
|
||||
"settings.defaultRemindersTimed": "Default reminders for timed events",
|
||||
"settings.defaultRemindersAllday": "Default reminders for all-day events",
|
||||
"settings.addReminder": "Add reminder",
|
||||
"settings.name": "Name",
|
||||
"settings.onlyYou": "Only you can see this calendar.",
|
||||
"settings.publish": "Publish",
|
||||
"settings.publishHint": "Share this calendar (read-only) with anyone.",
|
||||
"settings.fullEventDetails": "Full event details",
|
||||
"settings.freeBusy": "Free/busy information",
|
||||
"settings.addAccountHint": "Connect an external calendar account.",
|
||||
"settings.subscriptions": "Subscriptions",
|
||||
"settings.subscriptionsHint": "Add a read-only calendar from an iCal (.ics) URL.",
|
||||
"settings.subscribe": "Subscribe",
|
||||
"settings.subscribeUrl": "iCal (.ics) URL",
|
||||
"settings.subscribed": "Subscribed",
|
||||
"settings.comingSoon": "Coming soon",
|
||||
"settings.subscribeError": "Couldn't subscribe to that URL.",
|
||||
"settings.integrations": "Integrations",
|
||||
"settings.jitsi": "Jitsi Meet",
|
||||
"settings.jitsiHint":
|
||||
|
||||
Reference in New Issue
Block a user