aposin / gem Goto Github PK
View Code? Open in Web Editor NEWARCHIVED: Git Environment Manager (GEM)
License: Apache License 2.0
ARCHIVED: Git Environment Manager (GEM)
License: Apache License 2.0
If the progress dialog ends on an error for any of the commands, it would be good for the UX that the tabs are sorted so the first ones are the failing ones, so the user can quickly check what was wrong.
Once #22 is in place, a preference page for system settings should be implemented and should include the Theme
section instead of the menu.
Some projects/environments might not require an eclipse configuration (e.g., if a thirdparty plug-in or eventually a core one provides a different way to open the workspace, or a workspace is not required).
If Eclipse plug-in is provided, all environments/projects provide the launcher(s) even if they are not relevant nor configured.
eclipse
configConfiguration for extension plug-in
Create a new menu to clean the obsolete (not configured anymore) environments, removing the worktrees and internal branches.
No way to cleanup environments that are not configured anymore.
There is already code to handle obsolete environments in the core. The feature should provide an UI to access that functionality and rework whatever is need it.
A JIRA extension should be provided to connect to different JIRA instances and return feature-branches based on the tickets.
On refresh, the application should be closed if the state of the same is wrongly configured or not following the HOCON format.
Nothing is communicated to the user nor the application crashes.
Create a handler for exceptions that should close the application for critical/fatal exceptions.
This is important for the use-case of git-configuration that somehow gets corrupted. Users should be informed so the configuration managers should update as soon as possible.
The logs contain the exception and stacktrace, but nothing is shown to the user.
After the first cleanup of obsolete environments, when the dialog is opened again without closing GEM, the obsolete environments are still shown.
No already successfully removed obsolete environments present on the dialog.
Removed environments are still shown (and kept on the cache of identified obsolete environments).
Handle properly the cache of obsolete environments, so when removed they are also removed from the cached list.
On a GEM state with obsolete environments:
The GitHub extension should provide a way to connect with GitHub issues to provide feature branches based on them.
This feature should be for the core framework for preferences. With this ticket a simple preference to switch/change the log-level for both GEM and third-party ones should be implemented.
Current framework for preferences is not used and not flexible enough, as it is just a draft. The solution to this issue should be also a draft but more refined as it might be changed when UI for preferences is implemented. By now, it should be usable so the file-based configuration can be edited by hand and the preferences being picked up.
The preference framework should contain:
The context is to enable user-preferences at the core level (not UI) to allow user-input on the behavior of GEM core and plug-ins.
Follow up this ticket the UI counterpart should be created (see next ticket).
A new IGemService
for creating several services of one kind with the configuration (e.g., on #3 we can have several Feature Branch Providers (FBPs) for different JIRA instances).
Defined IGemService
s are exclusively providing a single instance, which does not allow to configure something like the same FBP with different configurations at the same time.
Implement a new service (IGemServiceCreator
) where services of the same time are created.
The IServiceContainer
should handle them and provide services as if they were independent.
See #3 for an example use-case.
It can also be useful for github.com and enterprise instances running on internal networks.
The extension to sort environments/projects should also allow to sort Feature Branch Providers (FBP) as there is no control on how are they are shown to the user for third-party tools.
The implementation of the sorter made on #18 is not complete in terms of what can be sorted by a third-party plug-in.
Add a new method to the sorter and a default implementation (sort order by ID and/or name, but first the configured default provider).
Currently, if on the Project dropdown the environment have a counterpart on the Environment dropdown, the second should be preserved on project selection. For example, imagine 2 projects called GEM
and the other Custom GEM
, both with environments v1
and v2
. If GEM / v2
is selected, and then the project is switch to Custom GEM
, the Environment should be kept to v2
.
Currently, in the previously described example, on project selection for Custom GEM
the Custom GEM / v1
environment is selected. Although for some use cases it makes sense that this happen, it might be that the version number for 2 different projects have nothing to do with each other so jumping to the first project is the correct solution. This should also be taken into account for the possible solution.
The solution is simple as keeping the environment if it exists by comparing the environment ID might be easy. This will enforce configurations to keep the same ID for the environments if they want to enable this behavior for some of them and/or prefix the ID if they want to keep it independent.
User experience. E.g., in the case of related projects with similar versioning this makes sense for the user that otherwise is jumping always to the upper version of an environment.
Low priority as it doesn't affect important behavior but user-experience on a use-case of configuration of projects/environments.
The Combo for feature branches is really small, difficult to scroll. The combo popup should be enlarged that users see more than only 3 entries (e.g. up to 10 entries without scrolling).
Combo popup should be enlarged to e.g. 10 entries without scrolling
Only 3 entries are shown. The other entries requires the usage of scrollbars.
Feature branch combo contains 4 entries. The combo popup is only 3 entries high.
A github workflow to create the release and attach the binaries on merge for that branch would be useful to make the release process easier for developers.
In addition, we can create a main
version that gets updated with each PR so the latest non-stable version is created to be tested by users and/or be used as a source for building other products (e.g., create on release also a zipped p2 repository).
A plug-in should be able to provide a extension to sort the returned lists of IEnvironment
and IProject
from the ICongiguration
getters.
Currently the list of environments is sorted with Comparator.reverseOrder()
, which is taking the comparison of the environment ID to sort them. For the projects, when loaded with a Stream
, the sorted()
method it is used (also using the project ID).
Introduce a IGemService
to perform the sorting of those objects (and maybe other in the future if required for the display of them), that should be provided only once to the gem product (e.g., on its own plug-in). By default, if not provided a default sorter should be there with the current behavior.
The CommandProgressDialog
does not scale with lots of commands, cause the cli-like view is too small and the list goes out of the dialog range so the information is not visible to the user.
The progress dialog should be usable for cases with any number of commands to run.
As the number of commands increase, little space is left for the actual information of the run command.
There are several solutions for this:
On a GEM state with a lot of obsolete environments:
This will happen with lots of obsolete environments as in the steps for reproduction, but also in the case of a configured environment with lots of repositories.
On menu refresh, new configuration should be picked up and updated.
On menu refresh, the configuration is not updated. It requires a second refresh to do the job.
Workflow on session refresh should be properly done (broken with #29)
Also related with #37 (blocked cause the first refresh is not happening anyway)
Provide information to the user when any of the chosen obsolete worktree failed to launch the removal.
User not informed if removal of any of the worktree failed to launch
Should inform user about any failed worktree removal
No information provided to user
Provide the information to the user via dialog
Remove Branch
button should be enabled for existing branches (not default ones), without checkout to another branch beforehand.
The deletion of branches in the UI currently requires:
Remove Branch
button (inactive until now)Remove Branch
button should checkout the default branch if it is the current branch. This requires a decision of what to do with "dirty" worktrees, so a popup to the user should be shown ask if everything should be deleted or if they want to abort the deletion.
User experience.
None
No error when switching to an environment where not all repositories are cloned.
Workflow exception appears on popup (only on development version).
Fix GemDefaultWorkflow
on the related launcher.
This error does not happen in the release version but in the current main
one.
None
When the oomph project catalog is not containing an identifiable one to be assigned to a GEM project or environment, then the launcher should be disabled as it is a configuration problem, or a misconfigured-launcher should be present to show the error and communicate to the config managers to be fixed.
Currently (v 0.3.0), if the project ID is not present on the oomph project catalog the launcher fails with an exception. This is rather a configuration problem than a launch error, and should be handle properly.
canLaunch
to disable it in case that the configuration is not presentI personally prefer 2 as it is possible that an environment is not present cause that environment does not support the Eclipse launch; also the first one is possible in case that a filter for those use cases is provided (see #42).
The context menu and the tab-navigation on the tab-folder for progress dialog should be shown in black for the dark theme.
Currently they are white-themed and that also means that the icons are not themed either in the cases where that is relevant.
Fix the dark theme and implement icon-relevant switch for those use cases.
Only affects dark theme.
Currently the EclipseLauncher
works as following:
We should evaluate if it is possible to use the oomph libraries directly. For 2, each setup should provide its own Eclipse installation and workspace and use a bundle-pool to populate the required plug-ins.
If this is possible, the plug-ín should be completely refactored providing an unique Eclipse launcher (which creates the Eclipse installation and starts the workspace).
On the Obsolete Environment dialog an option to select all of them for removal should be present for the UX perspective.
No way to select all the obsolete environments, so the user should select all manually one by one or project by project.
Add a button/checkbox to select all the environments.
When a lot of obsolete environments are present, the table is too huge that selecting all of them could be problematic.
Once #21 is implemented, an UI to simplify the user experience should be implemented to select the preferences out of the direct and error-prone HOCON file edition.
After #21, the preference framework would only be reachable by a file-based configuration editable by the user out of GEM.
New menu entry to start a window with preferences organised by system and plug-ins.
See #21.
None.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.