base on Simple macOS menu bar application to view and interact with reminders. Developed with SwiftUI and using Apple Reminders as a source. <div align="center"> <img src="docs/images/reminders-icon.png" alt="Reminders MenuBar" > <h1> Reminders MenuBar </h1> <p> Simple macOS menu bar app to view and interact with reminders. </p> <p> <a href="#features">Features</a> • <a href="#installation">Installation</a> • <a href="#permission-request">Permission Request</a> • <a href="#contributing">Contributing</a> • <a href="#languages">Languages</a> • <a href="#license">License</a> </p> </div> <div align="center"> <img max-width="400" width="45%" src="docs/images/reminder-menubar-light.png" alt="Reminders MenuBar in light mode" > <img max-width="400" width="45%" src="docs/images/reminder-menubar-dark.png" alt="Reminders MenuBar in dark mode" > </div> ## Features * All interactions through the macOS menu bar * Keep everything in sync with Apple Reminders * Create new reminders in your chosen list * Set a reminder's due date using natural language * Mark reminders as completed / uncompleted * Edit reminders, Remove reminders or Move reminders between lists * View a list of upcoming reminders * Filter reminders through lists or through completed status <div align="center"> <img src="docs/images/reminders-menubar-demo.gif" alt="Reminders MenuBar demo" > </div> ## Installation *Reminders MenuBar requires macOS Big Sur 11 or later.* ### Homebrew Reminders MenuBar can be installed using [Homebrew](http://brew.sh). ```bash brew install --cask reminders-menubar ``` ### Direct Download Direct downloads can be found on the [releases page](https://github.com/DamascenoRafael/reminders-menubar/releases). After downloading and extracting, just drag the *.app* file to the *Applications* folder. ## Permission Request Reminders MenuBar uses [EKEventStore](https://developer.apple.com/documentation/eventkit/ekeventstore) to access reminders on macOS (which are available in Apple Reminders and can be synced through iCloud). On first use, the app should request permission to access reminders as shown in the image below. Also, in *System Settings > Privacy & Security > Reminders* it is possible to manage this permission. <div> <img width="250" src="docs/images/reminders-permission.png" alt="macOS window asking permission for Reminders MenuBar to access reminders" > </div> ### OpenCore Legacy Patcher [▶︎ Click here if you are using *OpenCore Legacy Patcher*](docs/fix-for-opencore-legacy-patcher.md) ## Contributing Feel free to share, open issues and contribute to this project! :heart: ## Languages 🇺🇸 English • 🇧🇷 Brazilian Portuguese • 🇨🇳 Chinese (Simplified and Traditional) • 🇨🇿 Czech • 🇳🇱 Dutch • 🇵🇭 Filipino • 🇫🇷 French • 🇩🇪 German • 🇮🇩 Indonesian • 🇮🇹 Italian • 🇯🇵 Japanese • 🇰🇷 Korean • 🇵🇱 Polish • 🇷🇺 Russian • 🇸🇰 Slovak • 🇲🇽 Spanish (Latin America) • 🇹🇷 Turkish • 🇺🇦 Ukrainian • 🇻🇳 Vietnamese [▶︎ Click here to learn how to add new languages :globe_with_meridians:](docs/adding-new-languages.md) ## License This project is licensed under the terms of the GNU General Public License v3.0. See [LICENSE](LICENSE) for details. ", Assign "at most 3 tags" to the expected json: {"id":"11812","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"