@laylzj777/my-apple-apple-eventkit 1.1.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 +575 -0
- package/LICENSE +21 -0
- package/README.md +304 -0
- package/README.zh-CN.md +270 -0
- package/bin/event +0 -0
- package/bin/event-disclaim +0 -0
- package/dist/bin/apple-calendar.d.ts +6 -0
- package/dist/bin/apple-calendar.js +8 -0
- package/dist/bin/apple-calendar.js.map +1 -0
- package/dist/bin/apple-reminders.d.ts +7 -0
- package/dist/bin/apple-reminders.js +9 -0
- package/dist/bin/apple-reminders.js.map +1 -0
- package/dist/bootstrap.d.ts +11 -0
- package/dist/bootstrap.js +44 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/server/handlers.d.ts +12 -0
- package/dist/server/handlers.js +58 -0
- package/dist/server/handlers.js.map +1 -0
- package/dist/server/mode.d.ts +19 -0
- package/dist/server/mode.js +47 -0
- package/dist/server/mode.js.map +1 -0
- package/dist/server/promptAbstractions.d.ts +61 -0
- package/dist/server/promptAbstractions.js +140 -0
- package/dist/server/promptAbstractions.js.map +1 -0
- package/dist/server/prompts.d.ts +13 -0
- package/dist/server/prompts.js +461 -0
- package/dist/server/prompts.js.map +1 -0
- package/dist/server/server.d.ts +61 -0
- package/dist/server/server.js +112 -0
- package/dist/server/server.js.map +1 -0
- package/dist/tools/definitions.d.ts +9 -0
- package/dist/tools/definitions.js +272 -0
- package/dist/tools/definitions.js.map +1 -0
- package/dist/tools/handlers/calendarHandlers.d.ts +11 -0
- package/dist/tools/handlers/calendarHandlers.js +151 -0
- package/dist/tools/handlers/calendarHandlers.js.map +1 -0
- package/dist/tools/handlers/formatters.d.ts +24 -0
- package/dist/tools/handlers/formatters.js +105 -0
- package/dist/tools/handlers/formatters.js.map +1 -0
- package/dist/tools/handlers/index.d.ts +8 -0
- package/dist/tools/handlers/index.js +9 -0
- package/dist/tools/handlers/index.js.map +1 -0
- package/dist/tools/handlers/listHandlers.d.ts +10 -0
- package/dist/tools/handlers/listHandlers.js +47 -0
- package/dist/tools/handlers/listHandlers.js.map +1 -0
- package/dist/tools/handlers/reminderHandlers.d.ts +10 -0
- package/dist/tools/handlers/reminderHandlers.js +219 -0
- package/dist/tools/handlers/reminderHandlers.js.map +1 -0
- package/dist/tools/handlers/shared.d.ts +28 -0
- package/dist/tools/handlers/shared.js +57 -0
- package/dist/tools/handlers/shared.js.map +1 -0
- package/dist/tools/handlers/subtaskHandlers.d.ts +12 -0
- package/dist/tools/handlers/subtaskHandlers.js +113 -0
- package/dist/tools/handlers/subtaskHandlers.js.map +1 -0
- package/dist/tools/index.d.ts +10 -0
- package/dist/tools/index.js +74 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types/index.d.ts +263 -0
- package/dist/types/index.js +42 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/prompts.d.ts +88 -0
- package/dist/types/prompts.js +6 -0
- package/dist/types/prompts.js.map +1 -0
- package/dist/types/repository.d.ts +197 -0
- package/dist/types/repository.js +14 -0
- package/dist/types/repository.js.map +1 -0
- package/dist/utils/binaryValidator.d.ts +52 -0
- package/dist/utils/binaryValidator.js +185 -0
- package/dist/utils/binaryValidator.js.map +1 -0
- package/dist/utils/calendarRepository.d.ts +49 -0
- package/dist/utils/calendarRepository.js +226 -0
- package/dist/utils/calendarRepository.js.map +1 -0
- package/dist/utils/constants.d.ts +79 -0
- package/dist/utils/constants.js +80 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/dateFiltering.d.ts +41 -0
- package/dist/utils/dateFiltering.js +129 -0
- package/dist/utils/dateFiltering.js.map +1 -0
- package/dist/utils/dateUtils.d.ts +27 -0
- package/dist/utils/dateUtils.js +71 -0
- package/dist/utils/dateUtils.js.map +1 -0
- package/dist/utils/errorHandling.d.ts +27 -0
- package/dist/utils/errorHandling.js +88 -0
- package/dist/utils/errorHandling.js.map +1 -0
- package/dist/utils/eventCli.d.ts +40 -0
- package/dist/utils/eventCli.js +294 -0
- package/dist/utils/eventCli.js.map +1 -0
- package/dist/utils/helpers.d.ts +35 -0
- package/dist/utils/helpers.js +61 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/looseDateParser.d.ts +19 -0
- package/dist/utils/looseDateParser.js +149 -0
- package/dist/utils/looseDateParser.js.map +1 -0
- package/dist/utils/projectUtils.d.ts +13 -0
- package/dist/utils/projectUtils.js +92 -0
- package/dist/utils/projectUtils.js.map +1 -0
- package/dist/utils/reminderDateParser.d.ts +8 -0
- package/dist/utils/reminderDateParser.js +89 -0
- package/dist/utils/reminderDateParser.js.map +1 -0
- package/dist/utils/reminderRepository.d.ts +33 -0
- package/dist/utils/reminderRepository.js +262 -0
- package/dist/utils/reminderRepository.js.map +1 -0
- package/dist/utils/subtaskUtils.d.ts +103 -0
- package/dist/utils/subtaskUtils.js +253 -0
- package/dist/utils/subtaskUtils.js.map +1 -0
- package/dist/utils/tagUtils.d.ts +58 -0
- package/dist/utils/tagUtils.js +177 -0
- package/dist/utils/tagUtils.js.map +1 -0
- package/dist/utils/timeHelpers.d.ts +40 -0
- package/dist/utils/timeHelpers.js +136 -0
- package/dist/utils/timeHelpers.js.map +1 -0
- package/dist/validation/schemas.d.ts +385 -0
- package/dist/validation/schemas.js +579 -0
- package/dist/validation/schemas.js.map +1 -0
- package/package.json +96 -0
- package/scripts/build-event.mjs +513 -0
- package/scripts/disclaim.c +69 -0
- package/scripts/event-Info.plist +29 -0
- package/scripts/event.entitlements +10 -0
- package/scripts/postinstall.mjs +91 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,575 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [1.1.0] - 2026-07-10
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- Split into dual bins: `apple-calendar-mcp` (`calendar_*` tools) and `apple-reminders-mcp` (`reminders_*` tools + prompts), each authorized independently by domain.
|
|
13
|
+
- Package renamed to `@laylzj777/my-apple-apple-eventkit`; a single package exposes both bins.
|
|
14
|
+
- TCC prompt display name is now neutral and build-time configurable via the `APP_EVENT_DISPLAY_NAME` environment variable.
|
|
15
|
+
- Merged upstream changes: lenient date normalization (`looseDateParser`), start-date support in reminder updates, and a shared bootstrap module.
|
|
16
|
+
|
|
17
|
+
## [Unreleased]
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
- **`EVENT_TCC_ATTRIBUTION` environment variable** to control how the EventKit
|
|
22
|
+
permission prompt is attributed. `self` (default) preserves the current
|
|
23
|
+
behavior — spawn through the `event-disclaim` shim so the prompt shows
|
|
24
|
+
`event`'s embedded name. `host` bypasses the shim and spawns `event`
|
|
25
|
+
directly, so macOS attributes the prompt to the launching host app and the
|
|
26
|
+
dialog dynamically shows that app's own name (the host must declare the
|
|
27
|
+
relevant EventKit usage strings). Set it per host in the MCP client config's
|
|
28
|
+
`env`.
|
|
29
|
+
|
|
30
|
+
### Fixed
|
|
31
|
+
|
|
32
|
+
- **EventKit permission prompts now appear from any desktop MCP client**
|
|
33
|
+
(Codex Desktop, Claude Desktop, Cursor, …) — fixes
|
|
34
|
+
[#93](https://github.com/FradSer/mcp-server-apple-events/issues/93).
|
|
35
|
+
Previously macOS TCC attributed the Reminders/Calendar request to the
|
|
36
|
+
desktop app that launched the server; when that app lacked the EventKit
|
|
37
|
+
usage strings (Codex Desktop ships none), TCC refused the request before
|
|
38
|
+
EventKit was reached and no prompt ever appeared. The server now spawns
|
|
39
|
+
`bin/event` through a new `bin/event-disclaim` shim (compiled from
|
|
40
|
+
`scripts/disclaim.c`) that disclaims TCC responsibility at spawn time —
|
|
41
|
+
the same mechanism Chromium and LLDB use — making `event` its own
|
|
42
|
+
responsible process. `event` now embeds an Info.plist
|
|
43
|
+
(`scripts/event-Info.plist`, bundle id `me.frad.event`) with all six
|
|
44
|
+
Reminders/Calendar usage strings and is signed with the
|
|
45
|
+
`com.apple.security.personal-information.{calendars,reminders}`
|
|
46
|
+
entitlements (`scripts/event.entitlements`).
|
|
47
|
+
|
|
48
|
+
**Upgrade note:** the permission prompt and the entry in
|
|
49
|
+
`System Settings > Privacy & Security` now belong to `event`, not to the
|
|
50
|
+
host app — approve the new prompt once. Grants previously given to
|
|
51
|
+
Terminal / Claude Desktop no longer cover the MCP server.
|
|
52
|
+
|
|
53
|
+
## [1.5.0] - 2026-05-14
|
|
54
|
+
|
|
55
|
+
### Changed (BREAKING)
|
|
56
|
+
|
|
57
|
+
- **EventKit backend swapped to the `event` CLI.** The bundled `bin/EventKitCLI`
|
|
58
|
+
Swift binary is gone; the server now shells out to the vendored
|
|
59
|
+
[FradSer/event](https://github.com/FradSer/event) CLI (`bin/event`, built
|
|
60
|
+
during `pnpm install` from the `vendor/event` git submodule). Two
|
|
61
|
+
EventKit-backed projects now share one Swift codebase.
|
|
62
|
+
- **Dropped MCP tool fields** that the underlying CLI cannot set today
|
|
63
|
+
(writes only; read-side still returns these fields verbatim when they were
|
|
64
|
+
configured in Reminders.app / Calendar.app):
|
|
65
|
+
- `reminders_tasks`: `alarms`, `clearAlarms`, `recurrence`, `recurrenceRules`,
|
|
66
|
+
`clearRecurrence`, `locationTrigger`, `clearLocationTrigger`, reminder
|
|
67
|
+
`location`, `completionDate`, `startDate` on create (still available on
|
|
68
|
+
update), `completed` on create
|
|
69
|
+
- `reminders_lists`: `color`
|
|
70
|
+
- `calendar_events`: `alarms`, `clearAlarms`, `recurrenceRules`,
|
|
71
|
+
`clearRecurrence`, `structuredLocation`, `url`, `isAllDay` (inferred from
|
|
72
|
+
date format), `availability` on write (still supported as a read filter),
|
|
73
|
+
`targetCalendar` on update (cross-calendar moves require delete+recreate),
|
|
74
|
+
`filterAccount`
|
|
75
|
+
- `calendar_calendars`: `filterAccount` (`event` has no EventKit account
|
|
76
|
+
info to filter by); date-scoped listing and per-calendar `eventCount`
|
|
77
|
+
are still supported, grouped by calendar title instead of an EventKit
|
|
78
|
+
identifier
|
|
79
|
+
- **Reminder list update/delete now resolve `name → id` internally** before
|
|
80
|
+
calling `event reminders lists update|delete --id <id>`. Behavior unchanged
|
|
81
|
+
from the host's perspective.
|
|
82
|
+
- **Cross-list move and `isCompleted: false` on `reminders_tasks` update**
|
|
83
|
+
surface a clear `CliUserError` instead of silently dropping the change —
|
|
84
|
+
neither is supported by the `event` CLI today.
|
|
85
|
+
|
|
86
|
+
### Added
|
|
87
|
+
|
|
88
|
+
- `vendor/event/` git submodule pinning `FradSer/event` (initial pin: tag
|
|
89
|
+
`v0.5.0`).
|
|
90
|
+
- `scripts/build-event.mjs` builds a universal (arm64 + x86_64) `vendor/event`
|
|
91
|
+
binary via `swift build -c release` (one build per architecture, merged
|
|
92
|
+
with `lipo`) and code-signs the result with a Developer ID Application
|
|
93
|
+
certificate when available (ad-hoc fallback otherwise), hardened runtime.
|
|
94
|
+
- `src/utils/eventCli.ts` — new wrapper for the `event` binary. Parses raw
|
|
95
|
+
JSON (no envelope), maps `Error: Permission denied: …` stderr to
|
|
96
|
+
`CliPermissionError`, and maps other `Error: …` stderr to `CliUserError`.
|
|
97
|
+
- `docs/migration-to-event-cli.md` — migration notes for downstream users,
|
|
98
|
+
including the dropped-field table.
|
|
99
|
+
|
|
100
|
+
### Removed
|
|
101
|
+
|
|
102
|
+
- `src/swift/` (all of it): `EventKitCLI.swift`, `Info.plist`,
|
|
103
|
+
`EventKitCLI.entitlements`, plus their tests.
|
|
104
|
+
- `scripts/build-swift.mjs` and its corresponding test.
|
|
105
|
+
- `src/utils/cliExecutor.ts` and its test, replaced by `eventCli.ts`.
|
|
106
|
+
|
|
107
|
+
## [1.4.0] - 2026-03-10
|
|
108
|
+
|
|
109
|
+
### Added
|
|
110
|
+
|
|
111
|
+
- **List Colors & Emojis**: Set reminder list color and emoji/emblem via native EventKit API
|
|
112
|
+
- **Alarm Types**: Support for different alarm types on reminders (date, time, location-based)
|
|
113
|
+
- **Account/Source Filtering**: Filter calendar events by account and source
|
|
114
|
+
- **CliUserError**: New error type for clear user-facing CLI error messages
|
|
115
|
+
- E2E tests using MCP client protocol
|
|
116
|
+
- Local build configuration documentation
|
|
117
|
+
|
|
118
|
+
### Changed
|
|
119
|
+
|
|
120
|
+
- Bumped @modelcontextprotocol/sdk from 1.25.1 to 1.26.0
|
|
121
|
+
|
|
122
|
+
### Fixed
|
|
123
|
+
|
|
124
|
+
- Safe emblem batch parsing for reminder lists
|
|
125
|
+
- Full access permission errors for calendar operations
|
|
126
|
+
- Correct priority values for reminders using EventKit standard
|
|
127
|
+
- Support for completed status on reminder creation
|
|
128
|
+
- Source setting for new reminder lists
|
|
129
|
+
- Secure AppleScript execution with improved types
|
|
130
|
+
- Error handling for missing Swift binary
|
|
131
|
+
- Documented default end time for calendar events
|
|
132
|
+
|
|
133
|
+
## [1.3.0] - 2026-02-04
|
|
134
|
+
|
|
135
|
+
### Added
|
|
136
|
+
|
|
137
|
+
- **Priority Support**: Set reminder priority levels (high/medium/low/none) via native EventKit API
|
|
138
|
+
- **Recurring Reminders**: Support for daily, weekly, monthly, yearly recurrence with flexible rules
|
|
139
|
+
- **Location Triggers**: Geofence-based reminders that trigger on arrival or departure
|
|
140
|
+
- **Tags/Labels**: Cross-list categorization with `[#tag]` format stored in notes
|
|
141
|
+
- **Subtasks/Checklists**: Checklist items with progress tracking stored in notes
|
|
142
|
+
- **New Tool**: `reminders_subtasks` for managing checklist items within reminders
|
|
143
|
+
- **Enhanced Filtering**: Filter by priority, recurring, location-based, and tags
|
|
144
|
+
- **Visual Indicators**: 🔄 (recurring), 📍 (location), 🏷️ (tags), 📋 (subtasks) in output
|
|
145
|
+
- Reminder link utilities for note management
|
|
146
|
+
- Explicit timezone offset to `buildTimeFormat` prompt helper
|
|
147
|
+
- `reminderDateParser` for safe timezone-aware date parsing
|
|
148
|
+
|
|
149
|
+
### Changed
|
|
150
|
+
|
|
151
|
+
- Enhanced `reminders_tasks` with new parameters: `priority`, `recurrence`, `locationTrigger`, `tags`, `subtasks`
|
|
152
|
+
- Added new read filters: `filterPriority`, `filterRecurring`, `filterLocationBased`, `filterTags`
|
|
153
|
+
- Added tag management options: `addTags`, `removeTags` for update action
|
|
154
|
+
- Added recurrence/location clearing: `clearRecurrence`, `clearLocationTrigger`
|
|
155
|
+
- Updated documentation with comprehensive usage examples for all new features
|
|
156
|
+
|
|
157
|
+
### Fixed
|
|
158
|
+
|
|
159
|
+
- Documented EventKit limitation: reminder flag status not available in public API
|
|
160
|
+
- Timeout management for permission prompt AppleScripts
|
|
161
|
+
- Permission prompt race conditions and reliability issues
|
|
162
|
+
- Proactive AppleScript trigger for permission prompts
|
|
163
|
+
- Quotation marks in daily task prompt date format
|
|
164
|
+
- Timezone setting when creating/updating events
|
|
165
|
+
- Type narrowing for calendar calendars router
|
|
166
|
+
- TypeScript compilation and linting errors in tests and binary validator
|
|
167
|
+
|
|
168
|
+
## [1.2.0] - 2025-11-15
|
|
169
|
+
|
|
170
|
+
### Added
|
|
171
|
+
|
|
172
|
+
- Calendar events complete CRUD support (create, read, update, delete operations)
|
|
173
|
+
- Calendar permissions management integrated into EventKit CLI
|
|
174
|
+
- Extended JSON Schema support for enhanced MCP tool definitions
|
|
175
|
+
- Comprehensive timezone integration tests with DST handling
|
|
176
|
+
- Automatic permission handling in handlers layer with retry mechanism
|
|
177
|
+
- Shared prompt abstractions for consistent behavior across templates
|
|
178
|
+
- Work categorization for intelligent time blocking
|
|
179
|
+
- Permission helper utilities and troubleshooting scripts
|
|
180
|
+
- Time consistency and helper utilities for improved date handling
|
|
181
|
+
- Notes formatting and reminder links utilities
|
|
182
|
+
|
|
183
|
+
### Changed
|
|
184
|
+
|
|
185
|
+
- **BREAKING**: Project renamed from `mcp-server-apple-reminders` to `mcp-server-apple-events`
|
|
186
|
+
- **BREAKING**: MCP tools renamed to underscore notation (e.g., `reminders_tasks`, `calendar_events`)
|
|
187
|
+
- **BREAKING**: RemindersCLI renamed to EventKitCLI for unified Apple services support
|
|
188
|
+
- Simplified prompt constraints and abstractions (reduced from ~70 to ~60 constraints)
|
|
189
|
+
- Unified confidence policy across all prompt templates
|
|
190
|
+
- Removed TypeScript timezone normalization (Swift CLI is single source of truth)
|
|
191
|
+
- Moved permission handling entirely to Swift CLI layer
|
|
192
|
+
- Enhanced daily task organizer with calendar integration
|
|
193
|
+
- Optimized time blocking with research-backed deep work constraints
|
|
194
|
+
- Upgraded dependencies and updated lockfile
|
|
195
|
+
- Simplified dev server startup process
|
|
196
|
+
- Enhanced tool handlers with better error handling and validation
|
|
197
|
+
|
|
198
|
+
### Fixed
|
|
199
|
+
|
|
200
|
+
- Timezone handling for bare date strings (e.g., "2025-11-15")
|
|
201
|
+
- Auto-trigger permission prompts with AppleScript fallback
|
|
202
|
+
- Secure binary path validation with allowed paths constraints
|
|
203
|
+
- Support for colonless timezone offsets (e.g., "+0800")
|
|
204
|
+
- Persist reminder timezone metadata in EventKit
|
|
205
|
+
- Local timezone usage for date parsing instead of UTC
|
|
206
|
+
- Support for legacy tool aliases during migration
|
|
207
|
+
- Calendar events prompt reference accuracy
|
|
208
|
+
- Non-null assertion safety in permission prompt memoization
|
|
209
|
+
|
|
210
|
+
### Removed
|
|
211
|
+
|
|
212
|
+
- Permissions tool from MCP interface (handled automatically by Swift CLI)
|
|
213
|
+
- Swift permission status checking from TypeScript layer
|
|
214
|
+
- Obsolete permission repository and manual helpers
|
|
215
|
+
- Unused time consistency and reminder links modules (consolidated)
|
|
216
|
+
- Unsupported deep link format from reminders
|
|
217
|
+
|
|
218
|
+
## [1.1.0] - 2025-10-30
|
|
219
|
+
|
|
220
|
+
### Added
|
|
221
|
+
|
|
222
|
+
- Simplified prompts API with improved structure
|
|
223
|
+
|
|
224
|
+
### Changed
|
|
225
|
+
|
|
226
|
+
- Refactored prompts module for better type safety
|
|
227
|
+
- Removed legacy code and duplicate tests
|
|
228
|
+
- Improved validation and formatting for list actions
|
|
229
|
+
|
|
230
|
+
## [1.0.1] - 2025-10-30
|
|
231
|
+
|
|
232
|
+
### Changed
|
|
233
|
+
|
|
234
|
+
- Refactored to remove duplicate list action from reminders tool for improved API clarity
|
|
235
|
+
|
|
236
|
+
## [1.0.0] - 2025-10-30
|
|
237
|
+
|
|
238
|
+
### Added
|
|
239
|
+
|
|
240
|
+
- Complete Swift CLI integration with native EventKit operations
|
|
241
|
+
- Dual URL storage strategy (EventKit field + structured notes format)
|
|
242
|
+
- Comprehensive input validation and security patterns
|
|
243
|
+
- Structured prompt templates for task management workflows
|
|
244
|
+
- Enhanced error handling with consistent response formatting
|
|
245
|
+
- MCP protocol compliance with standardized tool definitions
|
|
246
|
+
|
|
247
|
+
### Fixed
|
|
248
|
+
|
|
249
|
+
- Swift binary compilation and permission handling improvements
|
|
250
|
+
- Unicode character support for international reminders
|
|
251
|
+
- Binary path resolution with enhanced fallback mechanisms
|
|
252
|
+
- Date parsing consistency across different formats
|
|
253
|
+
|
|
254
|
+
## [0.10.0] - 2025-10-28
|
|
255
|
+
|
|
256
|
+
### Added
|
|
257
|
+
|
|
258
|
+
- Move reminder functionality to transfer reminders between lists
|
|
259
|
+
- Swift CLI implementation for EventKit integration with dual URL storage
|
|
260
|
+
- Support for multiple date formats including ISO 8601
|
|
261
|
+
- ID parameter support for reading single reminder details
|
|
262
|
+
- Enhanced npx execution without build requirements
|
|
263
|
+
- Structured prompt coverage and comprehensive testing
|
|
264
|
+
|
|
265
|
+
### Fixed
|
|
266
|
+
|
|
267
|
+
- Due date and URL parameter support for reminder creation
|
|
268
|
+
- Jest configuration for better TypeScript support
|
|
269
|
+
- Reminder type safety enforcement
|
|
270
|
+
- Project root fallback restoration
|
|
271
|
+
|
|
272
|
+
## [0.9.0] - 2025-10-10
|
|
273
|
+
|
|
274
|
+
### Added
|
|
275
|
+
|
|
276
|
+
- Structured prompt registry that consolidates Apple Reminders workflows with shared mission, process, constraint, and quality bar scaffolding.
|
|
277
|
+
- Strongly typed prompt metadata and argument parsing for six guided productivity flows surfaced through MCP `ListPrompts` and `GetPrompt` endpoints.
|
|
278
|
+
|
|
279
|
+
### Changed
|
|
280
|
+
|
|
281
|
+
- Refined prompt builder utilities to favor constraint-driven message assembly and consistent output formatting across prompts.
|
|
282
|
+
- Hardened project root detection helpers with fallback traversal support for launches from nested directories.
|
|
283
|
+
|
|
284
|
+
### Fixed
|
|
285
|
+
|
|
286
|
+
- Restored project root fallback traversal so CLI startup resolves the bundled Swift bridge reliably during editor integrations.
|
|
287
|
+
|
|
288
|
+
## [0.8.1] - 2025-10-09
|
|
289
|
+
|
|
290
|
+
### Changed
|
|
291
|
+
|
|
292
|
+
- Updated English and Chinese READMEs so integrators discover the 0.8.0 bulk operations and list CRUD workflows without reverse-engineering the API surface.
|
|
293
|
+
|
|
294
|
+
### Fixed
|
|
295
|
+
|
|
296
|
+
- Removed redundant apostrophe escaping in the AppleScript string sanitizer to stop single-quote reminder titles from triggering syntax errors while preserving double-quote safety guarantees.
|
|
297
|
+
|
|
298
|
+
## [0.8.0] - 2025-09-10
|
|
299
|
+
|
|
300
|
+
### Added
|
|
301
|
+
|
|
302
|
+
- Complete CRUD operations for reminder lists with unified interface
|
|
303
|
+
- Enhanced URL support with structured format for consistent parsing
|
|
304
|
+
- Comprehensive input validation and security enhancements
|
|
305
|
+
- Advanced test coverage with integration tests for URL handling
|
|
306
|
+
|
|
307
|
+
### Changed
|
|
308
|
+
|
|
309
|
+
- **Enhanced**: URL handling with structured format supporting multiple URL sections
|
|
310
|
+
- **Improved**: Error handling and code quality across all modules
|
|
311
|
+
- **Optimized**: MCP tools with simplified pure CRUD operations architecture
|
|
312
|
+
- **Enhanced**: Reminder functionality with better URL integration
|
|
313
|
+
- **Updated**: Test suite with improved mocking and expectations
|
|
314
|
+
|
|
315
|
+
### Fixed
|
|
316
|
+
|
|
317
|
+
- URL validation pattern to allow URLs without explicit paths (e.g., https://google.com)
|
|
318
|
+
- Multiple URL sections parsing in structured format
|
|
319
|
+
- Project root detection with enhanced fallback mechanisms
|
|
320
|
+
- Critical test mocking issues and expectations alignment
|
|
321
|
+
- Input validation edge cases and security vulnerabilities
|
|
322
|
+
- Package.json validation for proper project root identification
|
|
323
|
+
|
|
324
|
+
## [0.7.3] - 2025-09-03
|
|
325
|
+
|
|
326
|
+
### Added
|
|
327
|
+
|
|
328
|
+
- Biome linting for consistent code formatting and quality checks
|
|
329
|
+
- Enhanced development workflow with unified cursor rules and standards
|
|
330
|
+
- Consolidated development guide for improved onboarding
|
|
331
|
+
|
|
332
|
+
### Changed
|
|
333
|
+
|
|
334
|
+
- **Refactored**: Enhanced utility classes and improved code organization
|
|
335
|
+
- **Refactored**: Improved server architecture and request handling
|
|
336
|
+
- **Enhanced**: Tool handlers with better error handling and validation
|
|
337
|
+
- **Updated**: TypeScript configuration for better development experience
|
|
338
|
+
- **Improved**: Type definitions and validation schemas for enhanced type safety
|
|
339
|
+
- **Enhanced**: Test suites for improved coverage and reliability
|
|
340
|
+
- **Updated**: Documentation with improved examples and comprehensive guides
|
|
341
|
+
|
|
342
|
+
### Fixed
|
|
343
|
+
|
|
344
|
+
- Improved unicode handling in AppleScript execution
|
|
345
|
+
- Removed unnecessary permission checks from MCP handlers
|
|
346
|
+
- Enhanced deployment process and resolved build issues
|
|
347
|
+
- Extracted common patterns to reduce code duplication
|
|
348
|
+
|
|
349
|
+
## [0.7.2] - 2025-01-13
|
|
350
|
+
|
|
351
|
+
### Changed
|
|
352
|
+
|
|
353
|
+
- **MAJOR REFACTORING**: Restructured entire codebase following SOLID principles and design patterns
|
|
354
|
+
- All functions reduced to <20 lines (previously 100+ lines in some cases)
|
|
355
|
+
- Eliminated 800+ lines of duplicated code across the application
|
|
356
|
+
- Reduced cyclomatic complexity from 15+ to 3-5 in most functions
|
|
357
|
+
- Consolidated permissions management from 4 separate files into 1 unified module
|
|
358
|
+
- Enhanced tool validation with action-specific parameter requirements
|
|
359
|
+
- Improved error messages with detailed validation feedback
|
|
360
|
+
- **Optimization**: Removed unnecessary `@jest/globals` dependency, reducing package size and installation time
|
|
361
|
+
- **Refactor**: Simplified test file imports by using global Jest functions
|
|
362
|
+
- **Performance**: Reduced development dependencies count, improving project build efficiency
|
|
363
|
+
|
|
364
|
+
### Fixed
|
|
365
|
+
|
|
366
|
+
- Swift permission checking deadlock by removing `exit()` calls before dispatch group cleanup
|
|
367
|
+
- ES module import consistency by replacing `require()` with proper `import` statements
|
|
368
|
+
- TypeScript compilation errors with proper null handling for optional parameters
|
|
369
|
+
- Validation schema conflicts with intelligent list selection feature
|
|
370
|
+
- Binary path resolution with enhanced fallback mechanisms
|
|
371
|
+
- Fixed TypeScript compilation errors in build process, ensuring all test files work properly
|
|
372
|
+
|
|
373
|
+
## [0.7.1] - 2025-08-20
|
|
374
|
+
|
|
375
|
+
### Added
|
|
376
|
+
|
|
377
|
+
- Comprehensive permissions management system with proactive EventKit and AppleScript permission validation
|
|
378
|
+
- Conditional subschemas for precise action-specific parameter validation using JSON Schema `allOf/if/then` constructs
|
|
379
|
+
- 9 new utility modules following separation of concerns and SOLID principles
|
|
380
|
+
- Repository pattern implementation for clean data access abstraction
|
|
381
|
+
- Strategy pattern for pluggable reminder organization algorithms (priority, due date, category, completion status)
|
|
382
|
+
- Builder pattern for reusable AppleScript generation
|
|
383
|
+
- Centralized error handling with consistent response patterns
|
|
384
|
+
- User-friendly permission guidance with system-specific troubleshooting instructions
|
|
385
|
+
|
|
386
|
+
## [0.7.0] - 2025-08-15
|
|
387
|
+
|
|
388
|
+
### Added
|
|
389
|
+
|
|
390
|
+
- Comprehensive binary validation and security module for enhanced system protection
|
|
391
|
+
- Unicode validation and handling for international character support
|
|
392
|
+
- Enhanced security checks for binary path validation
|
|
393
|
+
|
|
394
|
+
### Changed
|
|
395
|
+
|
|
396
|
+
- **BREAKING**: Unified tool architecture from 6 tools to 2 action-based tools for improved usability
|
|
397
|
+
- Streamlined API structure reduces complexity while maintaining full functionality
|
|
398
|
+
- Enhanced async handling for system preferences
|
|
399
|
+
- Optimized date-only implementation with improved architecture
|
|
400
|
+
|
|
401
|
+
### Fixed
|
|
402
|
+
|
|
403
|
+
- Resolved merge conflicts and build errors after refactor merge
|
|
404
|
+
- Corrected AppleScript date format consistency issues
|
|
405
|
+
- Fixed binary path discovery fallbacks
|
|
406
|
+
|
|
407
|
+
## [0.6.0] - 2025-08-05
|
|
408
|
+
|
|
409
|
+
### Added
|
|
410
|
+
|
|
411
|
+
- Batch operations for organizing multiple reminders with `update_reminder` tool
|
|
412
|
+
- Organization strategies: priority, due date, category, and completion status
|
|
413
|
+
- Dynamic list creation through `list_reminder_lists` tool with `createNew` parameter
|
|
414
|
+
- Flexible filtering for batch operations (completion status, search terms, due dates)
|
|
415
|
+
- Auto-list creation during batch organization operations
|
|
416
|
+
|
|
417
|
+
### Changed
|
|
418
|
+
|
|
419
|
+
- Enhanced `update_reminder` tool to support batch mode for organizing multiple reminders
|
|
420
|
+
- Updated `list_reminder_lists` tool to support creating new reminder lists
|
|
421
|
+
- Improved documentation in CLAUDE.md for new batch operation features
|
|
422
|
+
|
|
423
|
+
### Fixed
|
|
424
|
+
|
|
425
|
+
- Resolved merge conflicts and build errors after refactor merge
|
|
426
|
+
- Corrected AppleScript date format to use proper English month names (MMMM D, YYYY)
|
|
427
|
+
|
|
428
|
+
## [0.5.2] - 2025-07-15
|
|
429
|
+
|
|
430
|
+
### Changed
|
|
431
|
+
|
|
432
|
+
- Comprehensive date handling optimization and enhancement
|
|
433
|
+
- Optimized date utility test structure and fixed TypeScript issues
|
|
434
|
+
|
|
435
|
+
### Fixed
|
|
436
|
+
|
|
437
|
+
- Updated date format for AppleScript compatibility
|
|
438
|
+
- Force English locale for AppleScript compatibility to ensure consistent date parsing
|
|
439
|
+
- Locale-independent date format implementation for Apple Reminders
|
|
440
|
+
|
|
441
|
+
## [0.5.1] - 2025-07-01
|
|
442
|
+
|
|
443
|
+
### Added
|
|
444
|
+
|
|
445
|
+
- Date-only reminder support with locale-independent parsing
|
|
446
|
+
- Enhanced date parsing with improved architecture
|
|
447
|
+
|
|
448
|
+
### Changed
|
|
449
|
+
|
|
450
|
+
- Optimized date-only implementation with better error handling
|
|
451
|
+
|
|
452
|
+
## [0.5.0] - 2025-06-25
|
|
453
|
+
|
|
454
|
+
### Added
|
|
455
|
+
|
|
456
|
+
- URL support for reminders with seamless note integration
|
|
457
|
+
- Advanced MCP server features and enhanced functionality
|
|
458
|
+
- Comprehensive documentation updates
|
|
459
|
+
|
|
460
|
+
### Changed
|
|
461
|
+
|
|
462
|
+
- Enhanced reminder handling with improved note and URL integration
|
|
463
|
+
- Updated Jest configuration for better ES modules support
|
|
464
|
+
- Removed 'URL:' prefix from reminder notes for cleaner integration
|
|
465
|
+
|
|
466
|
+
### Fixed
|
|
467
|
+
|
|
468
|
+
- Improved handling of empty notes with URLs in update reminder functionality
|
|
469
|
+
|
|
470
|
+
## [0.4.0] - 2025-05-20
|
|
471
|
+
|
|
472
|
+
### Added
|
|
473
|
+
|
|
474
|
+
- Update, delete, and move operations for reminders
|
|
475
|
+
- Enhanced filtering capabilities for `list_reminders` tool
|
|
476
|
+
- Comprehensive test coverage for enhanced list functionality
|
|
477
|
+
- MseeP.ai security assessment badge
|
|
478
|
+
|
|
479
|
+
### Removed
|
|
480
|
+
|
|
481
|
+
- Priority and recurrence features that weren't implemented
|
|
482
|
+
|
|
483
|
+
## [0.3.2] - 2025-05-10
|
|
484
|
+
|
|
485
|
+
### Added
|
|
486
|
+
|
|
487
|
+
- Caching for system 24-hour time preference detection
|
|
488
|
+
- Support for both 12-hour and 24-hour formats based on system settings
|
|
489
|
+
|
|
490
|
+
### Changed
|
|
491
|
+
|
|
492
|
+
- Refactored AM/PM logic using built-in formatting capabilities
|
|
493
|
+
- Enhanced date parsing to dynamically support system time format preferences
|
|
494
|
+
|
|
495
|
+
## [0.3.1] - 2025-04-30
|
|
496
|
+
|
|
497
|
+
### Added
|
|
498
|
+
|
|
499
|
+
- Enhanced project metadata and comprehensive documentation
|
|
500
|
+
|
|
501
|
+
### Fixed
|
|
502
|
+
|
|
503
|
+
- Improved date parsing error handling in parseDate function
|
|
504
|
+
|
|
505
|
+
## [0.3.0] - 2025-04-15
|
|
506
|
+
|
|
507
|
+
### Added
|
|
508
|
+
|
|
509
|
+
- Migration to npm package management
|
|
510
|
+
- Updated dependencies for better compatibility
|
|
511
|
+
|
|
512
|
+
### Changed
|
|
513
|
+
|
|
514
|
+
- Moved from previous package manager to npm
|
|
515
|
+
- Updated project structure for npm distribution
|
|
516
|
+
|
|
517
|
+
## [0.2.0] - 2025-03-20
|
|
518
|
+
|
|
519
|
+
### Added
|
|
520
|
+
|
|
521
|
+
- Native Swift integration for reminder management using EventKit
|
|
522
|
+
- Enhanced project documentation and structure
|
|
523
|
+
- Improved reminder creation date format specification
|
|
524
|
+
|
|
525
|
+
### Changed
|
|
526
|
+
|
|
527
|
+
- Refactored reminder list handling for better performance
|
|
528
|
+
- Updated documentation with comprehensive usage examples
|
|
529
|
+
|
|
530
|
+
## [0.1.0] - 2025-02-15
|
|
531
|
+
|
|
532
|
+
### Added
|
|
533
|
+
|
|
534
|
+
- Enhanced reminder creation and listing with note support
|
|
535
|
+
- Modular code organization into src/ directory structure
|
|
536
|
+
|
|
537
|
+
### Changed
|
|
538
|
+
|
|
539
|
+
- Reorganized codebase into proper module structure
|
|
540
|
+
- Improved reminder creation workflow
|
|
541
|
+
|
|
542
|
+
## [0.0.1] - 2025-01-30
|
|
543
|
+
|
|
544
|
+
### Added
|
|
545
|
+
|
|
546
|
+
- Initial project setup for MCP server
|
|
547
|
+
- Basic Apple Reminders integration
|
|
548
|
+
- Foundation for macOS native reminder management
|
|
549
|
+
|
|
550
|
+
[unreleased]: https://github.com/FradSer/mcp-server-apple-events/compare/v1.4.0...HEAD
|
|
551
|
+
[1.4.0]: https://github.com/FradSer/mcp-server-apple-events/compare/v1.3.0...v1.4.0
|
|
552
|
+
[1.3.0]: https://github.com/FradSer/mcp-server-apple-events/compare/v1.2.0...v1.3.0
|
|
553
|
+
[1.2.0]: https://github.com/FradSer/mcp-server-apple-events/compare/v1.1.0...v1.2.0
|
|
554
|
+
[1.1.0]: https://github.com/FradSer/mcp-server-apple-events/compare/v1.0.1...v1.1.0
|
|
555
|
+
[1.0.1]: https://github.com/FradSer/mcp-server-apple-events/compare/v1.0.0...v1.0.1
|
|
556
|
+
[1.0.0]: https://github.com/FradSer/mcp-server-apple-events/releases/tag/v1.0.0
|
|
557
|
+
[0.10.0]: https://github.com/FradSer/mcp-server-apple-events/compare/v0.9.0...v0.10.0
|
|
558
|
+
[0.9.0]: https://github.com/FradSer/mcp-server-apple-events/compare/v0.8.1...v0.9.0
|
|
559
|
+
[0.8.1]: https://github.com/FradSer/mcp-server-apple-events/compare/v0.8.0...v0.8.1
|
|
560
|
+
[0.8.0]: https://github.com/FradSer/mcp-server-apple-events/compare/v0.7.3...v0.8.0
|
|
561
|
+
[0.7.3]: https://github.com/FradSer/mcp-server-apple-events/compare/v0.7.2...v0.7.3
|
|
562
|
+
[0.7.2]: https://github.com/FradSer/mcp-server-apple-events/compare/v0.7.1...v0.7.2
|
|
563
|
+
[0.7.1]: https://github.com/FradSer/mcp-server-apple-events/compare/v0.7.0...v0.7.1
|
|
564
|
+
[0.7.0]: https://github.com/FradSer/mcp-server-apple-events/compare/v0.6.0...v0.7.0
|
|
565
|
+
[0.6.0]: https://github.com/FradSer/mcp-server-apple-events/compare/v0.5.2...v0.6.0
|
|
566
|
+
[0.5.2]: https://github.com/FradSer/mcp-server-apple-events/compare/v0.5.1...v0.5.2
|
|
567
|
+
[0.5.1]: https://github.com/FradSer/mcp-server-apple-events/compare/v0.5.0...v0.5.1
|
|
568
|
+
[0.5.0]: https://github.com/FradSer/mcp-server-apple-events/compare/v0.4.0...v0.5.0
|
|
569
|
+
[0.4.0]: https://github.com/FradSer/mcp-server-apple-events/compare/v0.3.2...v0.4.0
|
|
570
|
+
[0.3.2]: https://github.com/FradSer/mcp-server-apple-events/compare/v0.3.1...v0.3.2
|
|
571
|
+
[0.3.1]: https://github.com/FradSer/mcp-server-apple-events/compare/v0.3.0...v0.3.1
|
|
572
|
+
[0.3.0]: https://github.com/FradSer/mcp-server-apple-events/compare/v0.2.0...v0.3.0
|
|
573
|
+
[0.2.0]: https://github.com/FradSer/mcp-server-apple-events/compare/v0.1.0...v0.2.0
|
|
574
|
+
[0.1.0]: https://github.com/FradSer/mcp-server-apple-events/compare/v0.0.1...v0.1.0
|
|
575
|
+
[0.0.1]: https://github.com/FradSer/mcp-server-apple-events/releases/tag/v0.0.1
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Frad LEE
|
|
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.
|