# Development Roadmap

{% tabs %}
{% tab title="Release" %}
**Current Release:** <kbd>v0.2.13</kbd> on April 7, 2025 @ 4:00 AM

**Next Release:** <kbd>v0.3.0-alpha.1</kbd>
{% endtab %}

{% tab title="Release Cycle" %} <mark style="color:green;">**Patch**</mark> pre-release versions are deployed multiple times throughout the day. Around midnight, a **latest** release is created and deployed.

<mark style="color:blue;">**Minor**</mark> releases are currently being used for backwards-incompatible features; this will be the case until the minimal viable product is finalized.

<mark style="color:red;">Major</mark> releases are not currently planned.
{% endtab %}
{% endtabs %}

## Error Messages

FEDS implements error handling at every stage of user interaction. The error messages, however, pose some issues:

* Esoteric messages, not easily understood by users and developers alike
* Developer-friendly, but not user-friendly, error messages
* Error messages that do not clearly explain to the user what went wrong
* Error messages that reveal underlying code issues
* Error messages that expose the internal workings of the application

{% hint style="danger" %}
Error messages that reveal anything within the codebase pose risks. Hackers may be able to use the information in malicious ways. Even if not clear and apparent, any information being revealed to the public pose security risks.
{% endhint %}

{% hint style="info" %}
**On the roadmap, with high priority.** Security vulnerabilities will be patched by <kbd>v0.4.0</kbd>.
{% endhint %}

## Task Editor Fixes

The task editor, a new feature, has some bugs that **fail gracefully.** This means that the tasks editor works, but doesn't always work correctly, but won't let you know. Some of these issues are:

* If a subtask is created, then a parent task is created directly after, then the parent is task is created as a subtasks (with the same parent as the subtask)
* Editing milestone weights not working
* Viewing the milestone weight in the task editor doesn't work
* Chats can be created, but viewing it, after sending, requires reloading the page
* The "Chat" feature will be renamed to "Comments."

{% hint style="info" %}
**On the roadmap.** The task editor will be patched by <kbd>v0.3.0</kbd>.
{% endhint %}

## Document & Image Upload

File upload features are required by most project management software; this extends to FEDS. Currently, you cannot upload a file to the application. Soon, users will be able to upload documents and images in the following locations:

1. Chat on Tasks (soon to be called "Comments")—Users will be able to upload images to the comments view for tasks. This helps users communicate using images or share large documents related to a specific task.
2. **Accounts:** Users will be able to upload account-related or client-related documents.
3. **Projects:** Users will be able to upload project-related documents.
4. **Locations:** Users will be able to upload location-related documents.
5. **Tasks:** Users will be able to upload task-related documents. This includes both template tasks, and project/location tasks.

{% hint style="info" %}
Document/Image upload features will be implemented with the priority as listed above.
{% endhint %}

Document uploads will work through a self-hosted S3 instance, using MinIO. There is currently no roadmap for supporting third-party sources, such as Google Drive or OneDrive.

{% hint style="info" %}
**On the roadmap.** This feature will be implemented by <kbd>v2.0.0</kbd>.
{% endhint %}

## User Interface & Experience on Windows

The application is developed on macOS and UNIX-based machines. The user interface is optimized for macOS. Certain elements render differently between operating systems, harming the user experience on Windows.

{% hint style="info" %}
**On the roadmap.** Since this is a platform-specific UI/UX issue, it will be included in `v1.0.0`.
{% endhint %}

## Task Templates

FEDS is an application that streamlines workflows and processes. This is highlighted by the ability to create templates for projects and locations. However, reusability can be taken to a deeper level. Oftentimes a project or location may consist of many repeatable tasks.

Take the task "Replace Access Point 1." Say, you have 100 access points. The subtasks for each access point are the same. Task templates allows users to easily spawn the other 99 tasks, automatically replaces the `1` with `2`, `3`, etc.

This change implies that the `TotalUnits`field is no longer required for tasks.

{% hint style="info" %}
**On the roadmpa.** Since this is a new feature, it will be implemented by `v2.0.0`.
{% endhint %}

## Identity & Access Management

User access currently uses the **Microsoft Identity Framework**, which is not very useful for this kind of application. The generic names, `Admin`, `Editor`, `Reviewer`, `ReadOnly`, and `None` are not self-explanatory. This creates massive confusion for the users.

The `FEDS Platform Administrator` permission is still an option. These will be considered "super users." The user will be able to create roles and fine-grained permissions. Additionally, the default roles will be provided:

* **Admin:** Can perform any action on the resource it is assigned to and any resources that belong to it.
* **Project Manager:** Scoped to the project and location resource. Can perform any action on the project and its locations.
* **Field Engineer:** Scoped to the project/location resource. Has full visibility into the project/location that they belong to. Cannot modify anything except for their task's status.
* **Client:** A role with read-only privileges.

{% hint style="info" %}
This change also includes covering the entire page with a "Not Authorized" placeholder rather than using a toast alert. This is a better practice (security and user-experience wise). This also prevents URL hijacking.
{% endhint %}

{% hint style="info" %}
**On the roadmap.** Identity and access management will be revamped by `v0.4.0`. The feature may roll out during a `v0.3.x` pre-release.
{% endhint %}

{% hint style="success" %}
**Update:** The ability to create and read user roles has been implemented. This change does not affect the existing functionality of access management for Accounts, Projects, or Locations.
{% endhint %}

## Navigation Menu Fixes

When the user logs out of the application, the navigation bar is still in view. The profile dropdown menu does not automatically close. After logging out, the navigation menu must leave from view.

{% hint style="info" %}
**On the roadmap.** This will be patched by `v0.3.0`.
{% endhint %}

## Default Assigned User

When a project is created, the project manager field will be a dropdown. This will assign that user a "Project Manager" role on the project. The same applies to locations. By default, the project manager will be assigned to all tasks (optionally). This feature helps assign the responsibility to delegate to the project manager.

{% hint style="info" %}
If the project manager is not known at time of creation, it will not be assigned. If project manager is known at start, then&#x20;
{% endhint %}

{% hint style="info" %}
**On the roadmap.** This feature will be implemented by `v0.1.0`.
{% endhint %}

{% hint style="danger" %}
This is a high priority feature.
{% endhint %}

## Tasklist Improvements

Currently the task list uses "hours" for estimated duration. This only applies to the parent tasks. Subtasks do not benefit from this simplified form. This is a very minor issue and a very quick fix.

## Milestone Improvements

Currently, milestones is a half-completed feature. The milestone indicators will now apply to subtasks as well. The milestone indicator is also going to be moved out from the task sequence number column, into its own space. The milestone weight will also appear in the task list itself, rather than in a separate panel.

The milestone weights will also update via the full task editor (but not from within the task list).

{% hint style="info" %}
**On the roadmap.** This will be patched before `v0.3.0`.
{% endhint %}

{% hint style="success" %}
**Update:** This is fixed and will be released in `v0.2.11`.
{% endhint %}

## Project Dashboard Improvements

When viewing the dashboard for a specific project, the locations dashboard will display the actual start/end time and the expected start/end time for each location. This is similar to the project's list in the account dashboard.

{% hint style="info" %}
**On the roadmap.** This will be implemented by **v1.0.0**.
{% endhint %}

## Work Loss Prevention

When making changes to something, such as a task, a project, a location, etc., if the user attempts to navigate away without saving their changes, they will be warned beforehand.

{% hint style="info" %}
**On the roadmap.** This will be implemented by `v2.0.0`.
{% endhint %}

## Positive Notifications

~~As milestones are completed, an email will be sent to the specified users.~~

As milestones are complete, a notification should appear within the application.

{% hint style="info" %}
**On the roadmap.** This will be implemented by `v1.0.0`.
{% endhint %}

## Template Reconstruction

When creating a project or location out of a template, a fatal error is caused. Inserting subtasks fails because the IDs of their parent tasks are reconciled after insertion. This was not an issue before since the database has loose constraints. Recently, tighter constraints have been implemented to enforce database integrity.

{% hint style="info" %}
**On the roadmap.** This will be patched before.`v0.3.0`
{% endhint %}

{% hint style="success" %}
**Update:** This has been fixed in `v0.2.9`.
{% endhint %}

## Dashboard Improvements

A date-range filter will be added to the dashboard filters. These filters determine which charts are displayed on the dashboard and correctly aggregate the metrics for the charts. This also determines which tasks are displayed in the kanban board.

The dashboard charts and kanban board will also only include active projects and locations. Projects and locations that haven't started yet will have their own cards.

Then Kanban will also refresh itself and the charts when a task's status is updated.

The Kanban board on the dashboard is also not meant for fine-tuning tasks. The task editor, when opened from the Kanban board, will open a read-only view of the task editor. *This will still allow users to add messages to the chat and an option to view it in the project/location view.*

If a task is not started but the latest start date for the task has passed, the "Due Date" will appear in red. If the task is in progress, but the due date has passed, the due date will also appear in red.

A fix is also coming for the "Include Locations" filter being toggled, and the filter by locations feature.

{% hint style="info" %}
**On the roadmap.** This will be implemented by `v0.3.0` .
{% endhint %}

## Removing Custom Fields

Custom fields do not have clearly defined use cases within the platform. Until the purpose of this can be determined, this feature is carefully being removed from the codebase.

{% hint style="info" %}
**Work in progress.** This is being carefully removed as we revise the ocdebase.
{% endhint %}

{% hint style="success" %}
**Update:** Full removal of the custom fields is complete and will be included in `v0.2.11`. This feature will be restored when a clearer vision exists for the feature.
{% endhint %}

## Copying Tasks

Tasks can be created, read, updated, and deleted. However, there is no ability to copy a task within a template, project, or location. This will support task customization upon copying. For example, assigning the task to a new parent, changing the task type, title, duration, or due date will be allowed prior to applying the copy operation.

Copying tasks will also support copying a parent task along with its children (if applicable).

To copy a task, a user must have permission to read assignments that don't belong to them and write to tasks that don't belong to them.

{% hint style="info" %}
**On the roadmap.** This will be implemented by `v0.5.0`.
{% endhint %}

## Template Information Fixes

Currently, the estimated completion time for templates is not updating when new tasks are added. This is a known issue and will be addressed in a future release. This is not a high priority because the estimated duration of a template is purely informational and not used in any critical operations.

{% hint style="info" %}
**On the roadmap.** This will be implemented by `v0.5.0`.
{% endhint %}

## Refresh On Update

This is an issue that affects only certain parts of the application. When a resource is updated, the changes are not reflected in the UI after completion. This a systemic issue.

{% hint style="info" %}
**On the roadmap.** This will be patched by `v0.3.0`.
{% endhint %}

{% hint style="success" %}
**Update:** This is currently being patched.
{% endhint %}

## Location Dashboard

The dashboard will display the correct start/end dates.

{% hint style="info" %}
**On the roadmap.** This will be patched by `v0.4.0`.
{% endhint %}

## Cascading Fields Values

Certain fields (address, country, timezone, etc.) will be moved to the accounts and project resources. Unless otherwise specified, these fields will be cascaded down to projects and locations.

{% hint style="info" %}
**On the roadmap.** This will be patched by `v1.0.0`.
{% endhint %}

{% hint style="danger" %}
This is a high-priority feature.
{% endhint %}

***

{% hint style="warning" %}
**Everything underneath here is a work in progress.**
{% endhint %}

## Bulk Operations

I will add the ability to apply operations in bulk to tasks in the task list.

## Improved Settings UI

The settings UI is very incomplete. I will:

* Fix the sidebar.
* Make the sidebar links look like real buttons.

## Users Filter Fix

Currently shows `(None)`which is confusing since "None" means tasks not assigned to anyone. Rename to "All Users".

{% hint style="success" %}
**Update.** This is fixed and is included in `v0.2.13`.
{% endhint %}

## More Dashboard Filters

* Everything
  * Active
  * On Hold
  * Pending
* Project
  * Active
  * On Hold
  * Pending
* Location
  * Active
  * On Hold
  * Pending

## Task Editor Layout Improvements

Should not be editable from the Kanban View. Remove the task name editor, task type editor, parent task editor.

## Open Up Dashboard

Kanban should appear on the dashboard for engineers. The My Tasks view should be deprecated.

## Adaptive Dashboard

When "Everything" is selected it should show a list view rather than kanban.

## Kanban Fixes Based on Context

* Remove project from kanban when showing only from single project

{% hint style="success" %}
**Update:** This is fixed and is included in v0.2.13.
{% endhint %}

## Minor UI Fixes

The "Modified By" section contains no space between the "by" and the author name.

<figure><img src="https://304484915-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoBNPZAm8p5otuAoJx6CK%2Fuploads%2FWAHoIvjLrTe0EVPbKlAM%2Fimage.png?alt=media&#x26;token=4ce0612e-8352-4850-82a0-644428a65bfe" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**On the roadmap.** These fixes will be implemented by `v1.0.0`. These are low priority fixes since they do not affect functionality, but merely user experience.
{% endhint %}

## Prevent Parent Task Completion Until Child Task Completed

Prevent a parent task from being marked as complete until all child tasks are complete.

## Dashboard Reload On Update

The dashboard must update when the status of any task is updated.

## Save Dashboard Filters

The dashboard filters should be saved across reloads.

## Add Ability to Unlock Templates

A template can be deleted if no projects/locations reference it.

## Remove Priority from Projects Locations

Priority should be replaced with the start/completion dates.
