A compact calendar for the GNOME panel, inspired by Itsycal for macOS. Click the panel badge for a small month calendar with an agenda of your upcoming events, using the calendars GNOME already knows about (GNOME Calendar and Online Accounts such as Google). - Create, edit, search and delete events right from the panel, including quick-add from a one-liner like "Lunch tomorrow 12pm at Cafe Nero" - One-click join buttons and an optional countdown for video meetings - Live world clocks with the offset from your home time zone - Week numbers, pinning, Itsycal-style keyboard shortcuts and plenty of appearance options Clipboard: an agenda event's right-click menu has a "Copy" action that copies the event's details to the clipboard.
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
EGO-A-005 manual_review
extensions should not access the clipboard directly
Direct clipboard access via `St.Clipboard.get_default()` requires reviewer scrutiny.
calendarWidget.js:1536
St.Clipboard.get_default()
Is this code generated by AI? If so, we have a rule for that: [EGO Review Guidelines: AI](https://gjs.guide/extensions/review-guidelines/review-guidelines.html#extensions-must-not-be-ai-generated)
Hello! Thank you for reviewing my extension. Indeed, I had help from AI for the major part of the project. But rest assured, I've strictly followed the EGO rules regarding the coding and especially the license, as this is a port from another software (itsycal) from macOS. I even requested permission from the owner of itsycal to use the name "litsycal". As you can see from this project's Github page, I've been working for a while on this extension. A lot of effort was put into this project, as this is not a "vibecoded" weekend slop. Let me know if any questions. Regards, mlkonrad
1. Please fix all the wrong characters in comments. You have that all over the files. For example, line 58 `calendarManager.js`. 2. Use `connectObject()` and `disconnectObject()` so it is easier to track for cleanup (`extension.js` process only). 3. Use icons instead of emjoi: [Extension Best Practices Guidelines: Icons vs. Emojis](https://gjs.guide/extensions/review-guidelines/best-practices.html#ui-elements-icons-vs-emojis) 4. You cannot use the same property for holding two different timeout ids (line 868, 985 `calendarWidget.js`). 5. Selective disable isn't allowed. You should remove line 114-115 `floatingPanel.js`. 6. Defined but never called (line 146 `searchPanel.js`). So that's not cleaning up on disable/destroy.