joplin-plugin-my-calendar 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +99 -0
- package/LICENSE +21 -0
- package/README.md +249 -0
- package/dist/index.js +3327 -0
- package/dist/manifest.json +28 -0
- package/dist/ui/calendar.js +1020 -0
- package/dist/ui/icsImport.js +518 -0
- package/dist/ui/mycalendar.css +724 -0
- package/manifest.json +28 -0
- package/package.json +53 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
|
+
|
|
5
|
+
### [1.2.3](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/compare/v1.2.2...v1.2.3) (2026-02-01)
|
|
6
|
+
|
|
7
|
+
### 1.2.2 (2026-02-01)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### 🐛 Bug Fixes
|
|
11
|
+
|
|
12
|
+
* add authentication checks and redundant build step to release script ([4c59a6d](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/4c59a6d681b75b825b73b2bc20f185ca30534a5c))
|
|
13
|
+
* update pack script and remove deprecated husky config ([6a2ba19](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/6a2ba19a6b11beb302be0cd0f92717e7e3294dca))
|
|
14
|
+
* use static label for toggle command to avoid UI sync issues ([e2d4c99](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/e2d4c99aa880a2d7b837b1cf044bfbaf3678efaa))
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### ✨ Features
|
|
18
|
+
|
|
19
|
+
* add option to empty trash after alarm cleanup ([80ed82b](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/80ed82b8102ee73d5b14341d9531849953d40700))
|
|
20
|
+
* add setting to toggle event timeline visibility ([263013c](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/263013c05404b96f5d3ab8eaa0ef61aaa322c26d))
|
|
21
|
+
* add setting to toggle ICS alarm import ([7cb16f2](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/7cb16f276f43882136ce432464875ae154605d56))
|
|
22
|
+
* enhance alarm notification content ([f12cd29](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/f12cd2967900d54ca742d04101cc8545cc2af709))
|
|
23
|
+
* improve github release notes extraction ([94d6173](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/94d6173ad08a826cebd71edbfe00ff26b0c140e0))
|
|
24
|
+
* optimize alarm synchronization logic ([46a1bc8](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/46a1bc87573e8f9ea51dffe2e1281946e4873c69))
|
|
25
|
+
|
|
26
|
+
### 1.2.1 (2026-02-01)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
### 🐛 Bug Fixes
|
|
30
|
+
|
|
31
|
+
* add authentication checks and redundant build step to release script ([4c59a6d](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/4c59a6d681b75b825b73b2bc20f185ca30534a5c))
|
|
32
|
+
* update pack script and remove deprecated husky config ([6a2ba19](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/6a2ba19a6b11beb302be0cd0f92717e7e3294dca))
|
|
33
|
+
* use static label for toggle command to avoid UI sync issues ([e2d4c99](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/e2d4c99aa880a2d7b837b1cf044bfbaf3678efaa))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
### ✨ Features
|
|
37
|
+
|
|
38
|
+
* add option to empty trash after alarm cleanup ([80ed82b](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/80ed82b8102ee73d5b14341d9531849953d40700))
|
|
39
|
+
* add setting to toggle event timeline visibility ([263013c](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/263013c05404b96f5d3ab8eaa0ef61aaa322c26d))
|
|
40
|
+
* add setting to toggle ICS alarm import ([7cb16f2](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/7cb16f276f43882136ce432464875ae154605d56))
|
|
41
|
+
* enhance alarm notification content ([f12cd29](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/f12cd2967900d54ca742d04101cc8545cc2af709))
|
|
42
|
+
* improve github release notes extraction ([94d6173](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/94d6173ad08a826cebd71edbfe00ff26b0c140e0))
|
|
43
|
+
* optimize alarm synchronization logic ([46a1bc8](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/46a1bc87573e8f9ea51dffe2e1281946e4873c69))
|
|
44
|
+
|
|
45
|
+
## 1.2.0 (2026-02-01)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
### 🐛 Bug Fixes
|
|
49
|
+
|
|
50
|
+
* add authentication checks and redundant build step to release script ([4c59a6d](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/4c59a6d681b75b825b73b2bc20f185ca30534a5c))
|
|
51
|
+
* update pack script and remove deprecated husky config ([6a2ba19](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/6a2ba19a6b11beb302be0cd0f92717e7e3294dca))
|
|
52
|
+
* use static label for toggle command to avoid UI sync issues ([e2d4c99](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/e2d4c99aa880a2d7b837b1cf044bfbaf3678efaa))
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
### ✨ Features
|
|
56
|
+
|
|
57
|
+
* add option to empty trash after alarm cleanup ([80ed82b](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/80ed82b8102ee73d5b14341d9531849953d40700))
|
|
58
|
+
* add setting to toggle event timeline visibility ([263013c](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/263013c05404b96f5d3ab8eaa0ef61aaa322c26d))
|
|
59
|
+
* add setting to toggle ICS alarm import ([7cb16f2](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/7cb16f276f43882136ce432464875ae154605d56))
|
|
60
|
+
* enhance alarm notification content ([f12cd29](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/f12cd2967900d54ca742d04101cc8545cc2af709))
|
|
61
|
+
* improve github release notes extraction ([94d6173](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/94d6173ad08a826cebd71edbfe00ff26b0c140e0))
|
|
62
|
+
* optimize alarm synchronization logic ([46a1bc8](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/46a1bc87573e8f9ea51dffe2e1281946e4873c69))
|
|
63
|
+
|
|
64
|
+
## 1.1.0 (2026-02-01)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
### 🐛 Bug Fixes
|
|
68
|
+
|
|
69
|
+
* add authentication checks and redundant build step to release script ([4c59a6d](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/4c59a6d681b75b825b73b2bc20f185ca30534a5c))
|
|
70
|
+
* update pack script and remove deprecated husky config ([6a2ba19](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/6a2ba19a6b11beb302be0cd0f92717e7e3294dca))
|
|
71
|
+
* use static label for toggle command to avoid UI sync issues ([e2d4c99](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/e2d4c99aa880a2d7b837b1cf044bfbaf3678efaa))
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
### ✨ Features
|
|
75
|
+
|
|
76
|
+
* add option to empty trash after alarm cleanup ([80ed82b](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/80ed82b8102ee73d5b14341d9531849953d40700))
|
|
77
|
+
* add setting to toggle event timeline visibility ([263013c](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/263013c05404b96f5d3ab8eaa0ef61aaa322c26d))
|
|
78
|
+
* add setting to toggle ICS alarm import ([7cb16f2](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/7cb16f276f43882136ce432464875ae154605d56))
|
|
79
|
+
* enhance alarm notification content ([f12cd29](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/f12cd2967900d54ca742d04101cc8545cc2af709))
|
|
80
|
+
* improve github release notes extraction ([94d6173](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/94d6173ad08a826cebd71edbfe00ff26b0c140e0))
|
|
81
|
+
* optimize alarm synchronization logic ([46a1bc8](https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/commit/46a1bc87573e8f9ea51dffe2e1281946e4873c69))
|
|
82
|
+
|
|
83
|
+
## [1.0.0] - 2025-01-25
|
|
84
|
+
|
|
85
|
+
### Added
|
|
86
|
+
|
|
87
|
+
- **Initial release of My Calendar for Joplin.**
|
|
88
|
+
- **Calendar View**: Interactive monthly grid and detailed day view.
|
|
89
|
+
- **Notes as Events**: Markdown-based event definition block (` ```mycalendar-event `).
|
|
90
|
+
- **ICS Import System**: Support for importing standard calendar files with deduplication.
|
|
91
|
+
- **Automated Alarms**: Automatic conversion of ICS `VALARM` to native Joplin Todo notes with reminders.
|
|
92
|
+
- **Recurrence Support**: Full support for Daily, Weekly, Monthly, and Yearly recurring events.
|
|
93
|
+
- **Timezone Support**: Native handling of IANA timezones and UTC offsets.
|
|
94
|
+
- **Security**: Built-in sanitization to protect against XSS in events.
|
|
95
|
+
- **Customization**: Settings for week start day, alarm scan range, and more.
|
|
96
|
+
|
|
97
|
+
[Unreleased]: https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/compare/v1.0.0...HEAD
|
|
98
|
+
|
|
99
|
+
[1.0.0]: https://github.com/volodymyroliinyk/joplin-plugin-my-calendar/releases/tag/v1.0.0
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Volodymyr Oliinyk
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
# 🗓️ My Calendar for Joplin
|
|
2
|
+
|
|
3
|
+
[](https://joplinapp.org/)
|
|
4
|
+
[](https://www.typescriptlang.org/)
|
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
|
+
[](https://www.paypal.me/volodymyroliinykca)
|
|
7
|
+
|
|
8
|
+
**My Calendar** is a powerful, flexible, and privacy-focused calendar plugin for [Joplin](https://joplinapp.org/). It
|
|
9
|
+
turns your notes into calendar events, providing a unified view of your schedule directly within your favorite
|
|
10
|
+
note-taking app.
|
|
11
|
+
|
|
12
|
+
| Light Mode | Dark Mode |
|
|
13
|
+
|:--------------------------------------------------:|:------------------------------------------------:|
|
|
14
|
+
|  |  |
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 🌟 Key Features
|
|
19
|
+
|
|
20
|
+
- **Monthly Calendar Grid**: Navigate through months, view event bars, and see your schedule at a glance.
|
|
21
|
+
- **Smart Day View**: Click any day to see a detailed list of scheduled events.
|
|
22
|
+
- **Notes as Events**: Any note can become a calendar event simply by adding a small Markdown block.
|
|
23
|
+
- **ICS Import**: Import standard `*.ics` files (from Google Calendar, Outlook, Apple, etc.) directly into your Joplin
|
|
24
|
+
notebooks.
|
|
25
|
+
- **Notes as Alarms**: The plugin automatically creates "Todo" notes with reminders based on your calendar alarms
|
|
26
|
+
(`VALARM`). These notes act as system notifications and link back to the original event. The sync process is optimized
|
|
27
|
+
to only update what's necessary.
|
|
28
|
+
- **Recurrence Support**: Full support for daily, weekly, monthly, and yearly recurring events.
|
|
29
|
+
- **High Security**: Built-in protection against Markdown and CSS injections.
|
|
30
|
+
- **Universal Sync**: Works with Joplin's built-in synchronization across all your devices.
|
|
31
|
+
|
|
32
|
+
### 📱 Platform Availability
|
|
33
|
+
|
|
34
|
+
While we strive for parity, some features are specific to the Desktop version due to platform-specific APIs.
|
|
35
|
+
|
|
36
|
+
| Feature | Desktop | Mobile |
|
|
37
|
+
|:-----------------------------------|:-------:|:------:|
|
|
38
|
+
| Monthly Calendar Grid | ✅ | ✅ |
|
|
39
|
+
| Smart Day View | ✅ | ✅ |
|
|
40
|
+
| Native Joplin Settings | ✅ | ✅ |
|
|
41
|
+
| ICS File Import | ✅ | ❌ |
|
|
42
|
+
| Quick ICS Export Links | ✅ | ❌ |
|
|
43
|
+
| Markdown Sanitization | ✅ | ✅ |
|
|
44
|
+
| Automatic Alarms (Todo generation) | ✅ | ✅* |
|
|
45
|
+
|
|
46
|
+
*\*Note: Alarms are generated/synced during the import process on Desktop. Once created as "Todo" notes, they will sync
|
|
47
|
+
and trigger notifications on Mobile automatically.*
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 🚀 Getting Started
|
|
52
|
+
|
|
53
|
+
### 1. Installation
|
|
54
|
+
|
|
55
|
+
1. Open **Joplin Desktop**.
|
|
56
|
+
2. Go to `Tools` > `Options` (Windows/Linux) or `Joplin` > `Settings` (macOS).
|
|
57
|
+
3. Select `Plugins` and search for `My Calendar`.
|
|
58
|
+
4. Click **Install** and restart Joplin.
|
|
59
|
+
|
|
60
|
+
### 2. Manual Event Creation
|
|
61
|
+
|
|
62
|
+
You don't need to import files to use the calendar. Simply add the following block to any note:
|
|
63
|
+
|
|
64
|
+
~~~markdown
|
|
65
|
+
```mycalendar-event
|
|
66
|
+
title: Meeting with Team
|
|
67
|
+
start: 2025-12-18 10:00+02:00
|
|
68
|
+
end: 2025-12-18 11:30+02:00
|
|
69
|
+
color: #3498db
|
|
70
|
+
location: Conference Room B
|
|
71
|
+
```
|
|
72
|
+
~~~
|
|
73
|
+
|
|
74
|
+
The note will immediately appear on your calendar!
|
|
75
|
+
|
|
76
|
+
> 💡 **Looking for more?** Check the [examples](./examples) folder for more templates, including recurring events and
|
|
77
|
+
> all-day appointments.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## 📥 ICS Import System
|
|
82
|
+
|
|
83
|
+
The plugin features a robust import system designed for performance and reliability.
|
|
84
|
+
|
|
85
|
+
### How to Import:
|
|
86
|
+
|
|
87
|
+
1. Open the **My Calendar** panel.
|
|
88
|
+
2. Select the **Target Notebook** where you want your events to be stored.
|
|
89
|
+
3. Choose your `*.ics` file and click **Import**.
|
|
90
|
+
|
|
91
|
+
### Smart Features:
|
|
92
|
+
|
|
93
|
+
- **Deduplication**: The plugin uses `UID`s from the ICS file. If you import the same file again, it will only update
|
|
94
|
+
changed events or skip unchanged ones.
|
|
95
|
+
- **Local Color Preservation**: By default, if you manually change the color of an imported event in Joplin, subsequent
|
|
96
|
+
imports will preserve your custom color.
|
|
97
|
+
- **Optimized Automatic Alarms**: If an ICS event has a reminder, the plugin creates a linked "Todo" note in Joplin.
|
|
98
|
+
These todos
|
|
99
|
+
appear in your standard Joplin tasks and trigger native notifications. The sync process is smart: it only deletes
|
|
100
|
+
outdated alarms and creates new ones, minimizing sync traffic.
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## 🛠️ Advanced Syntax
|
|
105
|
+
|
|
106
|
+
Below is the full list of properties supported inside the ` ```mycalendar-event ` block:
|
|
107
|
+
|
|
108
|
+
| Property | Status | Description | Example |
|
|
109
|
+
| :--- | :--- | :--- | :--- |
|
|
110
|
+
| `start` | **Required** | Start date and time. Mandatory for the event to appear. | `2025-12-18 10:00+02:00` |
|
|
111
|
+
| `title` | Optional | Display name. If omitted, the **Joplin note title** will be used. | `Meeting` |
|
|
112
|
+
| `end` | Optional | End date and time. If omitted, the event is treated as a point in time (0 duration). | `2025-12-18 11:30+02:00` |
|
|
113
|
+
| `tz` | Optional | Timezone (IANA). | `America/Toronto` |
|
|
114
|
+
| `color` | Optional | Hex color for the event bar. | `#e74c3c` |
|
|
115
|
+
| `location` | Optional | Location string. | `Home Office` |
|
|
116
|
+
| `description` | Optional | Extra details (auto-sanitized). | `Check project status.` |
|
|
117
|
+
| `repeat` | Optional | `daily`, `weekly`, `monthly`, `yearly` | `weekly` |
|
|
118
|
+
| `repeat_interval`| Optional | Frequency (e.g., every 2 weeks). | `2` |
|
|
119
|
+
| `byweekday` | Optional | Specific days for weekly repeat. | `MO,WE,FR` |
|
|
120
|
+
| `bymonthday` | Optional | Day of the month for monthly repeat. | `15` |
|
|
121
|
+
| `all_day` | Optional | Set to `true` for all-day events. | `true` |
|
|
122
|
+
|
|
123
|
+
### 🕒 Supported Time & Timezone Formats
|
|
124
|
+
|
|
125
|
+
The calendar supports several ways to specify the time and timezone of your events:
|
|
126
|
+
|
|
127
|
+
1. **With UTC Offset (Recommended)**
|
|
128
|
+
Explicitly define the time and its relation to UTC. This time will be automatically converted to your current
|
|
129
|
+
device's timezone.
|
|
130
|
+
```text
|
|
131
|
+
start: 2025-12-18 10:00+02:00
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
2. **With `tz` Property (IANA)**
|
|
135
|
+
Specify the time and the exact IANA Timezone name. The plugin will handle the conversion based on daylight saving
|
|
136
|
+
rules.
|
|
137
|
+
```text
|
|
138
|
+
start: 2025-12-18 10:00
|
|
139
|
+
tz: America/Toronto
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
3. **Floating Local Time**
|
|
143
|
+
If no offset or `tz` is provided, the time is considered "floating" and will be shown exactly as written, regardless
|
|
144
|
+
of the device's timezone settings.
|
|
145
|
+
```text
|
|
146
|
+
start: 2025-12-18 10:00
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## ⚙️ Settings
|
|
152
|
+
|
|
153
|
+
Customize your experience in the Joplin Settings (`Tools` > `Options` > `My Calendar`):
|
|
154
|
+
|
|
155
|
+
### Calendar
|
|
156
|
+
|
|
157
|
+
- **Week starts on**: Choose between **Monday** (default) or **Sunday** for the calendar grid.
|
|
158
|
+
|
|
159
|
+
### Day events
|
|
160
|
+
|
|
161
|
+
- **Show event timeline**: Show a visual timeline bar under each event in the day list. Disabling this also stops
|
|
162
|
+
related UI update timers. (Default: Enabled).
|
|
163
|
+
- **Day events auto-refresh**: Set the interval (in minutes) for how often the day's event list updates. (Default: 1
|
|
164
|
+
min).
|
|
165
|
+
|
|
166
|
+
### ICS Import (Desktop only)
|
|
167
|
+
|
|
168
|
+
- **Enable ICS import alarms**: If enabled, alarms from ICS files will be imported as Todo notes. If disabled, existing
|
|
169
|
+
alarms will be deleted on re-import. (Default: Disabled).
|
|
170
|
+
- **ICS import alarm range**: Define how many days into the future (up to 365) the plugin should scan and generate
|
|
171
|
+
native Joplin reminders from your ICS files. (Default: 30 days).
|
|
172
|
+
- **Empty trash after alarm cleanup**: If enabled, the plugin will empty the trash after deleting old alarms. **WARNING
|
|
173
|
+
**:
|
|
174
|
+
This deletes ALL items in the trash. (Default: Disabled).
|
|
175
|
+
- **ICS export links**: Add up to 4 quick-access links to your favorite calendar exporters (e.g., Google
|
|
176
|
+
Calendar Export URL). These will appear as convenient buttons in the import panel.
|
|
177
|
+
|
|
178
|
+
### Developer
|
|
179
|
+
|
|
180
|
+
- **Enable debug logging**: Activates a visible log box and extra console output to help troubleshoot any issues.
|
|
181
|
+
|
|
182
|
+
#### Settings Interface
|
|
183
|
+
|
|
184
|
+
| Light Theme | Dark Theme |
|
|
185
|
+
|:---------------------------------------------------------------:|:-------------------------------------------------------------:|
|
|
186
|
+
|  |  |
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## 👨💻 Development
|
|
191
|
+
|
|
192
|
+
### Commands:
|
|
193
|
+
|
|
194
|
+
- `npm run build;`: Compile the project.
|
|
195
|
+
- `npm run pack;`: Create the `.jpl` distribution file.
|
|
196
|
+
- `npm test;`: Run the extensive test suite (250+ cases).
|
|
197
|
+
- `npm run lint;`: Check code style and common patterns.
|
|
198
|
+
- `pkill -f jest || true;pkill -f node || true;rm -rf node_modules/.cache;rm -rf ~/.cache/jest;npx jest --clearCache;`:
|
|
199
|
+
Cache cleaning.
|
|
200
|
+
|
|
201
|
+
### Automation Scripts
|
|
202
|
+
|
|
203
|
+
The project includes helper scripts in the `scripts/` directory to streamline development and release processes.
|
|
204
|
+
|
|
205
|
+
#### `scripts/pre-pack.sh`
|
|
206
|
+
|
|
207
|
+
Ensures code quality before packaging. It runs the linter (failing on warnings) and the full test suite.
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
./scripts/pre-pack.sh
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
#### `scripts/release.sh`
|
|
214
|
+
|
|
215
|
+
Automates the entire release workflow: bumps version, syncs manifest, tags, pushes, and publishes to NPM.
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
./scripts/release.sh [patch|minor|major]
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Development Workflow
|
|
222
|
+
|
|
223
|
+
For a detailed guide on branch naming, commit message formats, and the release process, please see the *
|
|
224
|
+
*[Development Workflow Guide](./WORKFLOW.md)**.
|
|
225
|
+
|
|
226
|
+
### Security First:
|
|
227
|
+
|
|
228
|
+
The code implements strict sanitization to ensure that imported calendar data cannot execute arbitrary Markdown or break
|
|
229
|
+
the Joplin interface.
|
|
230
|
+
|
|
231
|
+
## ❤️ Support
|
|
232
|
+
|
|
233
|
+
If you find this plugin useful, please consider supporting its development. Your donations help me dedicate more time to
|
|
234
|
+
maintaining the project and adding new features.
|
|
235
|
+
|
|
236
|
+
- **[Donate via PayPal](https://www.paypal.me/volodymyroliinykca)** - support the development of **My Calendar**.
|
|
237
|
+
|
|
238
|
+
Every coffee counts. Thank you! ☕
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## 📜 Changelog
|
|
243
|
+
|
|
244
|
+
Detailed changes for each release are documented in the [CHANGELOG](./CHANGELOG.md).
|
|
245
|
+
|
|
246
|
+
## 📄 License
|
|
247
|
+
|
|
248
|
+
Copyright (c) 2024-2026 Volodymyr Oliinyk.
|
|
249
|
+
Licensed under the **MIT License**. See the [LICENSE](LICENSE) file for details.
|