Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Proposal] 5 functionalities I've implemented for consideration #72

Open
moulai opened this issue Mar 14, 2024 · 2 comments
Open

Comments

@moulai
Copy link

moulai commented Mar 14, 2024

Hello, @andrewbrereton

I've been exploring the plugin and have implemented a few new features for my personal usage and I hope to contribute them to the repository.

However, before proceeding further, I wanted to discuss their potential inclusion in the plugin and gather your thoughts on them. If you think these features align with the plugin's direction, I would be more than happy to refine the documentation, provide setting instructions, and submit a separate PR for your review.

1. Add option to create multiple events without schedule icon.

Same as "Which task date should be used?" → "Create an event per start/scheduled/due date" but without the schedule icon.

This is useful if you have a lot of tasks that are scheduled and you don't want to clutter your calendar with them. Start and due icons will still be appended to the summary to help you identify them.

2. Customizable status icons.

Enable users to customize icons for statuses such as "Incomplete", "Done", "Cancelled" and so on. Users can select their preferred icon or even input an empty string to hide the icon entirely.

3. Parse [startTime::], [length::] and [endTime::] properties (Tasks & DataView format of time).

If enabled, the plugin will parse tasks such as "- [ ] Something. [startTime:: 18:00] [length:: 3h30m] ⏳ 2024-03-01", extracting start time, end time, and duration.

4. Save calendar to private server.

Although calendars can currently be uploaded to Gist, in certain regions and under specific conditions, the gist raw refresh rate can be exceptionally slow. For instance, even though new versions are visible in the revision history, the raw content often remains outdated.

I have developed a feature that allows users to upload their calendars to their own private servers. Users can then set up public file access services, such as Nginx, on their private servers to ensure timely updates.

Users are required to deploy the GitHub - TwoStoryRobot/docker-simple-file-upload: Simple, secure file upload API in a docker container on their private server. Subsequently, within the plugin settings, users need to input the server address, port, and KEY.

Plus, utilizing a GitHub private repository (instead of Gist or a private server) might be a more suitable option.

5. Bug Fix: All day event.

The current format for all-day tasks in the generated iCal is DTSTART:20240301. I have corrected it to comply with the standard format for all-day events: DTSTART;VALUE=DATE:20240301.

Please let me know your thoughts on these proposed features and how you'd like to proceed. I'm open to feedback and willing to make any adjustments needed to align with the plugin's goals.

Thank you for your work on developing this plugin. I look forward to potentially contributing to its growth.

@andrewbrereton
Copy link
Owner

Hi @moulai. Wow, this is great. Thank you.

General feedback:

Please create one branch and one pull request per feature. I am happy to checkout your branch, add tests, add docs, etc, and review the pull request prior to merging.

1. Add option to create multiple events without schedule icon.

I'm not sure if I understand this feature properly, can you please elaborate? Perhaps we use different calendar apps so we see different things. If you wish, provide a screenshot to help me to understand.

2. Customizable status icons.

Yes, this is a good feature. I presume this would add four new settings to choose either the default emoji or enter custom text for TaskStatus.Cancelled, TaskStatus.Done, TaskStatus.InProgress and TaskStatus.ToDo.

3. Parse [startTime::], [length::] and [endTime::] properties (Tasks & DataView format of time).

This plugin already has support for Obsidian Tasks dataview format however the labels you mentioned (eg: startTime) is different from the Obsidian Tasks labels. Is this to support another format?

4. Save calendar to private server.

I was envisioning adding support for S3, SFTP, etc. They would be additional *Client.ts classes. Your suggestion seems like a good client to add. I'm not sure how popular it is, but I'm more than happy to accept it.

5. Bug Fix: All day event.

Thank you :)

@moulai
Copy link
Author

moulai commented Mar 18, 2024

Hi @andrewbrereton, thank you for your reply. Here are some additional details and explanations.

1. Add option to create multiple events without schedule icon.

I have uploaded some screenshots showcasing events with (the original multi-events functionality) and without the ⏳ icon. While the original version looks great, I found that having many ⏳ icons can be a bit overwhelming and redundant for my workflow. In the modified version (shown in another screenshot), I have removed the ⏳ icon, resulting in a cleaner look.

My scheduling process involves selecting tasks without specific scheduled dates from the backlog and then assigning them to dates within the current week or month. That is, the events that appear on the calendar are by default "Scheduled."

Perhaps we could add custom functionalities for the "schedule", "due", and "start" icons, similar to Feature 2. This way, there would be no need for a separate option to remove the ⏳ icon! (I can simply set the schedule icon to be empty)

2. Customizable status icons.

I will open a PR for this as soon as possible. It may need your review and modifications on the settings view.

3. Parse [startTime::], [length::] and [endTime::] properties (Tasks & DataView format of time).

I apologize for the confusion, it seems that startTime and endTime are not official Tasks dataview markers (it appears that the official Tasks plugin does not explicitly provide time markers for tasks). However, I have come across many users on the forum using startTime and endTime as task time markers: https://forum.obsidian.md/search?q=startTime.

startTime and endTime are the official time marker formats for the Full Calendar plugin: obsidian-full-calendar

Most importantly, I use obsidian-time-ruler for tasks management (by the way, this is a great plugin). It generates default timestamp markers for Tasks as startTime and Length.

Perhaps this format could be named to "support the time-ruler plugin/the full-calendar plugin"?

4. Save calendar to private server.

Using S3 or SFTP does seem like a more elegant solution!

I think the tool I mentioned is not widely used, but it is easy to deploy (via Docker, lightweight, and resource-efficient), which is why I opted for it. However, I agree that this feature may not be necessary (supporting S3, SFTP would be preferable).

5. Bug Fix: All day event.

I will open a PR for this as soon as possible. I have a question though, is it possible for the original program to generate an event like DTSTART:20240301 \n DTEND:20240301 (which is logically an all-day event but has an incorrect format)? Do we need to implement additional checks in the code for this?

Screenshots for feature 1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants