feat(core): integrate google calendar sync (#14248)

fix #14170 
fix #13893 
fix #13673 
fix #13543 
fix #13308 
fix #7607




#### PR Dependency Tree


* **PR #14247**
  * **PR #14248** 👈

This tree was auto-generated by
[Charcoal](https://github.com/danerwilliams/charcoal)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Integrations panel in Account Settings to link/unlink calendar
providers.
  * Collapsible settings wrapper for improved layout.

* **Improvements**
* Calendar system reworked: per-account calendar groups, simplified
toggles with explicit Save, richer event display (multi-dot date
indicators), improved event time/title handling across journal views.

* **Localization**
* Added calendar keys: save-error, no-journal, no-calendar; removed
legacy duplicate-error keys.

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
DarkSky
2026-01-13 02:38:16 +08:00
committed by GitHub
parent 89f0430242
commit 279b7bb64f
50 changed files with 1349 additions and 1002 deletions
+3 -3
View File
@@ -2065,15 +2065,15 @@
"com.affine.integration.calendar.unsubscribe": "Unsubscribe",
"com.affine.integration.calendar.new-title": "Add a calendar by URL",
"com.affine.integration.calendar.new-url-label": "Calendar URL",
"com.affine.integration.calendar.new-duplicate-error-title": "This is a duplicate calendar",
"com.affine.integration.calendar.new-duplicate-error-content": "This subscription calendar already exists in the account of subscribed calendars.",
"com.affine.integration.calendar.new-error": "An error occurred while adding the calendar",
"com.affine.integration.calendar.save-error": "An error occurred while saving the calendar settings",
"com.affine.integration.calendar.all-day": "All day",
"com.affine.integration.calendar.new-doc": "New doc",
"com.affine.integration.calendar.show-events": "Show calendar events",
"com.affine.integration.calendar.show-events-desc": "Enabling this setting allows you to connect your calendar events to your Journal in AFFiNE",
"com.affine.integration.calendar.show-all-day-events": "Show all day event",
"com.affine.integration.calendar.unsubscribe-content": "Are you sure you want to unsubscribe \"{{name}}\"? Unsubscribing this account will remove its data from Journal.",
"com.affine.integration.calendar.no-journal": "No journal page found for {{date}}. Please create a journal page first.",
"com.affine.integration.calendar.no-calendar": "No subscribed calendars yet.",
"com.affine.integration.mcp-server.name": "MCP Server",
"com.affine.integration.mcp-server.desc": "Enable other MCP Client to search and read the doc of AFFiNE.",
"com.affine.audio.notes": "Notes",