dsh-calendar 0.10.3 → 0.11.0
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 +10 -0
- package/README.en.md +52 -47
- package/README.md +52 -47
- package/docs/CHANGELOG.en.md +55 -55
- package/docs/USAGE.en.md +205 -205
- package/docs/USAGE.md +235 -235
- package/docs/VALIDATION.md +2 -0
- package/docs/validation/0.10.0.md +27 -27
- package/docs/validation/0.10.4.md +11 -0
- package/lib/client.js +2204 -2128
- package/package.json +1 -1
- package/scripts/google-oauth.mjs +279 -279
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,16 @@
|
|
|
4
4
|
|
|
5
5
|
[历史英文记录](docs/CHANGELOG.en.md)
|
|
6
6
|
|
|
7
|
+
## 0.11.0(2026-10-17)
|
|
8
|
+
|
|
9
|
+
- 设置面板顶部新增「首次使用」分步引导:一次只讲一步,支持上一步/下一步/跳过,看完记在本机不再出现。
|
|
10
|
+
- 引导内容与该插件的实际用法一致;可在开发者工具里清掉 `dsh-first-run:dsh-calendar:v1` 重新查看。
|
|
11
|
+
## 0.10.4 (2026-10-17)
|
|
12
|
+
|
|
13
|
+
- 日程与连接表单采用每个实例独立的字段标识,点击标签可聚焦输入框,并提供正确的可访问名称。
|
|
14
|
+
- 修复英文服务商选项残留中文;首次连接摘要尚在加载时暂缓打开连接编辑器,避免快速点击看到空白配置。
|
|
15
|
+
- 在官方 DSH 0.2.1-alpha.5 的隔离网页版检查本机 CalDAV 新建日程、连接测试、中英文表单及 390px 布局。
|
|
16
|
+
|
|
7
17
|
## 0.10.3 (2026-10-05)
|
|
8
18
|
|
|
9
19
|
- 修复窄窗口中日历悬浮按钮遮挡聊天发送按钮的问题;浮层宽度计入内边距,并限制在视口内,避免左侧内容被裁切。
|
package/README.en.md
CHANGED
|
@@ -1,49 +1,54 @@
|
|
|
1
|
-
# dsh-calendar
|
|
2
|
-
|
|
3
|
-
[中文](README.md)
|
|
4
|
-
|
|
5
|
-

|
|
6
|
-
|
|
7
|
-
View, create and reschedule CalDAV events from DSH.
|
|
8
|
-
|
|
1
|
+
# dsh-calendar
|
|
2
|
+
|
|
3
|
+
[中文](README.md)
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
View, create and reschedule CalDAV events from DSH.
|
|
8
|
+
|
|
9
9
|
[](https://www.npmjs.com/package/dsh-calendar) [](https://www.npmjs.com/package/dsh-calendar)
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
[
|
|
11
|
+
Feedback and contributions are welcome: report [issues](https://github.com/STARDUSTLC666/dsh-calendar/issues) or submit [pull requests](https://github.com/STARDUSTLC666/dsh-calendar/pulls).
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
See the [0.10.4 validation record](docs/validation/0.10.4.md) for DSH `0.2.1-alpha.5` browser checks and the remaining limits.
|
|
15
|
+
|
|
16
|
+
## What it does
|
|
17
|
+
|
|
18
|
+
- Month, week and agenda views with drag and keyboard rescheduling.
|
|
19
|
+
- Create, search, update and delete events, including recurring occurrences.
|
|
20
|
+
- Import an ICS file or pasted content after reviewing timezones, duplicates and overlap hints.
|
|
21
|
+
- Connect Google, iCloud, Nextcloud or your own CalDAV server.
|
|
22
|
+
|
|
23
|
+
## Install
|
|
24
|
+
|
|
25
|
+
In DSH Desktop, install `dsh-calendar` from the Plugins panel. If the bundled dsh command is available:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
dsh plugin --profile desktop add dsh-calendar
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
For the web version, replace `desktop` with `web`. Restart DSH after installation.
|
|
32
|
+
|
|
33
|
+
## Start using it
|
|
34
|
+
|
|
35
|
+
Open Settings → Calendar, configure a provider, test the connection and save. Then ask: “Show this week’s events and find a one-hour gap.”
|
|
36
|
+
|
|
37
|
+
To migrate events, choose Import ICS. Previewing does not change your calendar. Select events and confirm the import; existing events are skipped and failed items can be retried separately.
|
|
38
|
+
|
|
39
|
+
## Requirements and configuration
|
|
40
|
+
|
|
41
|
+
Calendar credentials are required. Google uses OAuth2; other providers may use app passwords. Configure a proxy only when your network requires it.
|
|
42
|
+
|
|
43
|
+
Detailed configuration, tool arguments and troubleshooting are in the [usage guide](docs/USAGE.en.md). For standalone development, follow the Node requirement in [package.json](package.json).
|
|
44
|
+
|
|
45
|
+
## Documentation
|
|
46
|
+
|
|
47
|
+
- [Usage and troubleshooting](docs/USAGE.en.md)
|
|
48
|
+
- [Changelog](CHANGELOG.md)
|
|
49
|
+
- [Validation scope and history](docs/VALIDATION.md)
|
|
50
|
+
- [Report a problem or suggest a feature](https://github.com/STARDUSTLC666/dsh-calendar/issues)
|
|
51
|
+
|
|
52
|
+
## License
|
|
53
|
+
|
|
54
|
+
[MIT](LICENSE)
|
package/README.md
CHANGED
|
@@ -1,49 +1,54 @@
|
|
|
1
|
-
# dsh-calendar
|
|
2
|
-
|
|
3
|
-
[English](README.en.md)
|
|
4
|
-
|
|
5
|
-

|
|
6
|
-
|
|
7
|
-
连接 CalDAV 日历,在 DSH 中查看、创建和调整日程。
|
|
8
|
-
|
|
1
|
+
# dsh-calendar
|
|
2
|
+
|
|
3
|
+
[English](README.en.md)
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
连接 CalDAV 日历,在 DSH 中查看、创建和调整日程。
|
|
8
|
+
|
|
9
9
|
[](https://www.npmjs.com/package/dsh-calendar) [](https://www.npmjs.com/package/dsh-calendar)
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
[
|
|
11
|
+
欢迎使用,遇到问题或有改进建议,请提交 [issues](https://github.com/STARDUSTLC666/dsh-calendar/issues) 和 [PR](https://github.com/STARDUSTLC666/dsh-calendar/pulls)。
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
DSH `0.2.1-alpha.5` 的本轮检查与未验收范围见 [0.10.4 验收记录](docs/validation/0.10.4.md)。
|
|
15
|
+
|
|
16
|
+
## 功能
|
|
17
|
+
|
|
18
|
+
- 月、周与议程视图,支持拖拽和键盘改期。
|
|
19
|
+
- 创建、搜索、更新、删除日程,并展开重复事件。
|
|
20
|
+
- 导入 ICS 文件或粘贴内容,核对时区、重复项和重叠提示后分批确认。
|
|
21
|
+
- 连接 Google、iCloud、Nextcloud 或自建 CalDAV。
|
|
22
|
+
|
|
23
|
+
## 安装
|
|
24
|
+
|
|
25
|
+
桌面版可在「插件」面板按包名 `dsh-calendar` 安装。已配置 dsh 命令时也可使用:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
dsh plugin --profile desktop add dsh-calendar
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
网页版把命令中的 `desktop` 改为 `web`。安装后重启 DSH。
|
|
32
|
+
|
|
33
|
+
## 开始使用
|
|
34
|
+
|
|
35
|
+
打开「设置 → 日历」,选择服务商,填写连接信息后测试并保存。随后可说:“查看我这周的日程,找一个一小时的空档。”
|
|
36
|
+
|
|
37
|
+
迁移日程时,点击「导入 ICS」。预览不会修改日历;勾选后确认导入,已有日程自动跳过,失败项可以单独重试。
|
|
38
|
+
|
|
39
|
+
## 依赖与配置
|
|
40
|
+
|
|
41
|
+
需要日历服务的登录信息;Google 使用 OAuth2,其他服务可使用应用专用密码。代理按实际网络需要配置。
|
|
42
|
+
|
|
43
|
+
详细配置、工具参数与排错见[使用说明](docs/USAGE.md)。从源码独立开发时,Node 要求以 [package.json](package.json) 为准。
|
|
44
|
+
|
|
45
|
+
## 文档
|
|
46
|
+
|
|
47
|
+
- [使用与排错](docs/USAGE.md)
|
|
48
|
+
- [更新记录](CHANGELOG.md)
|
|
49
|
+
- [验证范围与历史记录](docs/VALIDATION.md)
|
|
50
|
+
- [问题反馈与功能建议](https://github.com/STARDUSTLC666/dsh-calendar/issues)
|
|
51
|
+
|
|
52
|
+
## License
|
|
53
|
+
|
|
54
|
+
[MIT](LICENSE)
|
package/docs/CHANGELOG.en.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# Historical release notes
|
|
2
|
-
|
|
3
|
-
[Current changelog](../CHANGELOG.md) · [Overview](../README.en.md)
|
|
4
|
-
|
|
1
|
+
# Historical release notes
|
|
2
|
+
|
|
3
|
+
[Current changelog](../CHANGELOG.md) · [Overview](../README.en.md)
|
|
4
|
+
|
|
5
5
|
These English notes preserve the earlier translations. The main changelog contains the consolidated version history.
|
|
6
6
|
|
|
7
7
|
## 0.10.3 (2026-10-05)
|
|
@@ -12,54 +12,54 @@ These English notes preserve the earlier translations. The main changelog contai
|
|
|
12
12
|
|
|
13
13
|
- Validate real ISO calendar dates, rejecting nonexistent dates, ambiguous locale formats and datetimes without a timezone.
|
|
14
14
|
|
|
15
|
-
## 0.10.0 (2026-10-03)
|
|
16
|
-
|
|
17
|
-
- Import ICS files or pasted content with an explicit preview, selection and batch confirmation. Preserve recurrence rules, excluded dates, moved exceptions and timezone definitions.
|
|
18
|
-
- Require a timezone choice for floating times and show actionable errors for unsupported or malformed events. Use `timezones-ical-library` for IANA definitions without sharing file-specific timezones globally.
|
|
19
|
-
- Check all target UIDs, skip existing events and retry failed items without repeating successful writes. Expired previews or a changed connection require a new preview; conditional creation never overwrites an existing resource.
|
|
20
|
-
- Import private copies without guests, organizers or non-display alarms. Overlap hints cover the first occurrence only.
|
|
21
|
-
- Clarify calendar credentials and fix the settings layout at a 390px viewport. See the [validation record](VALIDATION.md) for the tested scope.
|
|
22
|
-
|
|
23
|
-
## 0.9.4 (2026-10-02)
|
|
24
|
-
|
|
25
|
-
- Upgrade Undici to 8.11.2 and eliminate the production dependency audit findings.
|
|
26
|
-
- Test CalDAV REPORT method, body and authorization preservation through a real local HTTP proxy, plus cancellation while reading a response.
|
|
27
|
-
- Proxy configuration is optional: no VPN is needed when the calendar server is reachable directly.
|
|
28
|
-
- All 180 tests pass on Windows. The official DSH 0.2.0-rc.2 web settings page was used to test a local CalDAV connection, agenda display and configuration saving. Production Google/iCloud accounts need separate acceptance.
|
|
29
|
-
|
|
30
|
-
## 0.9.3 (2026-10-01)
|
|
31
|
-
|
|
32
|
-
Switching from Google to iCloud, Nextcloud or a custom server uses the new provider's authentication method for connection tests and saves. Environment credentials display a configured indicator without exposing their values. Editing the form clears the previous connection result.
|
|
33
|
-
|
|
34
|
-
Validation host: Harness `0.2.0-rc.2` built from official sources (commit `639ed01539`) on 2026-10-01. All 178 Windows tests, the 18-plugin co-load and six calendar tool contracts pass. Browser checks use an isolated profile and a local CalDAV fixture: provider switching, connection testing, saving, event editing, month/week/agenda views and a 900px-wide window. Successful production Google/iCloud account flows still require separate validation.
|
|
35
|
-
|
|
36
|
-
## 0.5.4 (2026-09-19)
|
|
37
|
-
|
|
38
|
-
- **Fixes**: (1) `calendar_update` rebuilt the VEVENT and silently dropped ATTENDEE / ORGANIZER / EXDATE / STATUS / CATEGORIES / VALARM — renaming an event deleted its guests and reminders; the update now does field-level replacement on the original VCALENDAR and fills in the RFC 5545 essentials (VERSION / PRODID / UID / DTSTAMP). (2) RECURRENCE-ID overrides were ignored: a moved instance came back with its old time and title, or disappeared entirely when an EXDATE removed the original slot; overrides are now mapped and substituted during expansion. (3) `calendar_create` returned a locally invented uid instead of the server `Location`, so a follow-up update could not find the event (Location is now preferred, with a read-back check when absent), and the create body now carries VERSION / PRODID / DTSTAMP. **Improvements**: an exhausted expansion budget no longer returns an empty result silently (an hourly series starting in 2010 took 680ms and returned nothing) but raises a clear error suggesting a narrower range or COUNT/UNTIL; `calendar_search` accepts `start`/`end` and queries by timeRange instead of downloading the whole calendar first. Tests 68 → 79.
|
|
39
|
-
|
|
40
|
-
## 0.5.3 (2026-09-12)
|
|
41
|
-
|
|
42
|
-
- revalidate official Harness 0.1.5-rc.1 and refresh suite co-load and live-service evidence; runtime code is unchanged.
|
|
43
|
-
|
|
44
|
-
## 0.5.2 (2026-09-08)
|
|
45
|
-
|
|
46
|
-
- document installation, loading and real Google tool execution in official Harness 0.1.3-alpha.2; update compatibility and Node requirements. Runtime code is unchanged from 0.5.0.
|
|
47
|
-
|
|
48
|
-
## 0.5.1 (2026-09-08)
|
|
49
|
-
|
|
50
|
-
- document live Google OAuth/CalDAV read validation, the `calendar.readonly` versus `calendar` scope results and Testing refresh-token expiration. Runtime code is unchanged from 0.5.0.
|
|
51
|
-
|
|
52
|
-
## 0.5.0 (2026-09-07)
|
|
53
|
-
|
|
54
|
-
- fix Google CalDAV #2 with OAuth configuration/environment credentials, request-time refresh, cancellation and proxy forwarding. Make health checks and error guidance authentication-aware; retain Basic authentication for other servers.
|
|
55
|
-
|
|
56
|
-
## 0.4.0 (2026-08-26)
|
|
57
|
-
|
|
58
|
-
- new `calendar_health` self-check (offline endpoint and credential configuration checks, not a connection test).
|
|
59
|
-
|
|
60
|
-
## 0.3.2 (2026-08-15)
|
|
61
|
-
|
|
62
|
-
- Fix `calendar_update` dropping `rrule` while updating other fields.
|
|
63
|
-
- Validate `end >= start` and reject impossible dates such as `2025-02-30`.
|
|
64
|
-
- Sort `calendar_list` / `calendar_search` output by start time and clamp search `limit` to 1-200.
|
|
65
|
-
- Reset the cached CalDAV client after creation failure so the next tool call can retry.
|
|
15
|
+
## 0.10.0 (2026-10-03)
|
|
16
|
+
|
|
17
|
+
- Import ICS files or pasted content with an explicit preview, selection and batch confirmation. Preserve recurrence rules, excluded dates, moved exceptions and timezone definitions.
|
|
18
|
+
- Require a timezone choice for floating times and show actionable errors for unsupported or malformed events. Use `timezones-ical-library` for IANA definitions without sharing file-specific timezones globally.
|
|
19
|
+
- Check all target UIDs, skip existing events and retry failed items without repeating successful writes. Expired previews or a changed connection require a new preview; conditional creation never overwrites an existing resource.
|
|
20
|
+
- Import private copies without guests, organizers or non-display alarms. Overlap hints cover the first occurrence only.
|
|
21
|
+
- Clarify calendar credentials and fix the settings layout at a 390px viewport. See the [validation record](VALIDATION.md) for the tested scope.
|
|
22
|
+
|
|
23
|
+
## 0.9.4 (2026-10-02)
|
|
24
|
+
|
|
25
|
+
- Upgrade Undici to 8.11.2 and eliminate the production dependency audit findings.
|
|
26
|
+
- Test CalDAV REPORT method, body and authorization preservation through a real local HTTP proxy, plus cancellation while reading a response.
|
|
27
|
+
- Proxy configuration is optional: no VPN is needed when the calendar server is reachable directly.
|
|
28
|
+
- All 180 tests pass on Windows. The official DSH 0.2.0-rc.2 web settings page was used to test a local CalDAV connection, agenda display and configuration saving. Production Google/iCloud accounts need separate acceptance.
|
|
29
|
+
|
|
30
|
+
## 0.9.3 (2026-10-01)
|
|
31
|
+
|
|
32
|
+
Switching from Google to iCloud, Nextcloud or a custom server uses the new provider's authentication method for connection tests and saves. Environment credentials display a configured indicator without exposing their values. Editing the form clears the previous connection result.
|
|
33
|
+
|
|
34
|
+
Validation host: Harness `0.2.0-rc.2` built from official sources (commit `639ed01539`) on 2026-10-01. All 178 Windows tests, the 18-plugin co-load and six calendar tool contracts pass. Browser checks use an isolated profile and a local CalDAV fixture: provider switching, connection testing, saving, event editing, month/week/agenda views and a 900px-wide window. Successful production Google/iCloud account flows still require separate validation.
|
|
35
|
+
|
|
36
|
+
## 0.5.4 (2026-09-19)
|
|
37
|
+
|
|
38
|
+
- **Fixes**: (1) `calendar_update` rebuilt the VEVENT and silently dropped ATTENDEE / ORGANIZER / EXDATE / STATUS / CATEGORIES / VALARM — renaming an event deleted its guests and reminders; the update now does field-level replacement on the original VCALENDAR and fills in the RFC 5545 essentials (VERSION / PRODID / UID / DTSTAMP). (2) RECURRENCE-ID overrides were ignored: a moved instance came back with its old time and title, or disappeared entirely when an EXDATE removed the original slot; overrides are now mapped and substituted during expansion. (3) `calendar_create` returned a locally invented uid instead of the server `Location`, so a follow-up update could not find the event (Location is now preferred, with a read-back check when absent), and the create body now carries VERSION / PRODID / DTSTAMP. **Improvements**: an exhausted expansion budget no longer returns an empty result silently (an hourly series starting in 2010 took 680ms and returned nothing) but raises a clear error suggesting a narrower range or COUNT/UNTIL; `calendar_search` accepts `start`/`end` and queries by timeRange instead of downloading the whole calendar first. Tests 68 → 79.
|
|
39
|
+
|
|
40
|
+
## 0.5.3 (2026-09-12)
|
|
41
|
+
|
|
42
|
+
- revalidate official Harness 0.1.5-rc.1 and refresh suite co-load and live-service evidence; runtime code is unchanged.
|
|
43
|
+
|
|
44
|
+
## 0.5.2 (2026-09-08)
|
|
45
|
+
|
|
46
|
+
- document installation, loading and real Google tool execution in official Harness 0.1.3-alpha.2; update compatibility and Node requirements. Runtime code is unchanged from 0.5.0.
|
|
47
|
+
|
|
48
|
+
## 0.5.1 (2026-09-08)
|
|
49
|
+
|
|
50
|
+
- document live Google OAuth/CalDAV read validation, the `calendar.readonly` versus `calendar` scope results and Testing refresh-token expiration. Runtime code is unchanged from 0.5.0.
|
|
51
|
+
|
|
52
|
+
## 0.5.0 (2026-09-07)
|
|
53
|
+
|
|
54
|
+
- fix Google CalDAV #2 with OAuth configuration/environment credentials, request-time refresh, cancellation and proxy forwarding. Make health checks and error guidance authentication-aware; retain Basic authentication for other servers.
|
|
55
|
+
|
|
56
|
+
## 0.4.0 (2026-08-26)
|
|
57
|
+
|
|
58
|
+
- new `calendar_health` self-check (offline endpoint and credential configuration checks, not a connection test).
|
|
59
|
+
|
|
60
|
+
## 0.3.2 (2026-08-15)
|
|
61
|
+
|
|
62
|
+
- Fix `calendar_update` dropping `rrule` while updating other fields.
|
|
63
|
+
- Validate `end >= start` and reject impossible dates such as `2025-02-30`.
|
|
64
|
+
- Sort `calendar_list` / `calendar_search` output by start time and clamp search `limit` to 1-200.
|
|
65
|
+
- Reset the cached CalDAV client after creation failure so the next tool call can retry.
|