Giter VIP home page Giter VIP logo

checkouts-overview's People

Contributors

dependabot[bot] avatar sgrottel avatar

Stargazers

 avatar

Watchers

 avatar  avatar

checkouts-overview's Issues

State: `Untracked-Ahead`

If “untracked”, check if other, tracked branches exist in the checkout. If yes, this means, it is a new branch, which is not (yet) tracked. Mark this as new state: “untracked-ahead”. (Untracked Icon in Orange)

Setup CI

Automatically build, test, and create the setup zip via CI on every commit.
Automatically inject build number into version info.
Make non-tag-versions pre-release.

Follow-up by #5

Implement Unit Tests

Implement Unit Tests for:

  • DisksScanner -- because parses text output of other console application (which might be missing)
  • EntryEvaluator -- because parses text output of other console application (git, which might not be installed)

Scan Disks Settings

Two sets of lists:

  • include directories -- directories to start searching in
  • exclude directories/patterns -- directories or regex patterns to exclude from the search or from the results.

Tasks:

  • Combine searching via file system functions and Everything.

  • Optionally, check if Everything is available and only conditionally enable the button.

  • Integrate search progress with search dialog.

  • Integrate search result with search dialog.

  • Persist include list and exclude list via settings (no need to make them editable in the settings dialog, but maybe link)

  • Minor version bump.

Feature suggestion: repo collection folders

I guess many people keep check-outs organized in few folders, like a "source" one, a "websites" one, a "papers" one etc. If you could register these folders with the tool, finding the regular repos would be much quicker than scanning the whole machine. Maybe you also have weird/read-only checkouts somewhere that you do not want the tool to show to make it less messy.

Set default branch name per repo

  • Per entry, make default branch names configurable

  • Default branch names are also configured application wide --> settings dialog

  • Minor version bump

Fine-tune UI Styling

  • Change all highlight colors from system/blue to orange
  • Settings and About Dialog do not have thicker borders, Main Window and Scan Window do. Visible when window is not focussed.
  • Settings window looks bad
    • browse buttons are mostly off-aligned
    • spaces are too small
    • settings are not structured
      • settings subset in scan disk window is reused
  • Link in About Window should also close that window.
  • Refresh Screen Shots in (online) Documentation

Show path to git client

In the settings dialog, when using the default git client (empty config textbox), show the path to the detected git client.

Publish Release

Switch to a more standard publish process by using the Publish to Folder feature of Dotnet.

  • Setup "Publish to Folder"
  • No need for "Single file" option, as not many Dlls are part of this project (yet)
  • Update Build Pipeline to Release from the Published Artifacts using dotnet publish

Make `git` configurable

System might have several git versions installed. User should select which one to use. System default should remain default.

Custom Status Evaluation

Should be a generalization from the git fetch --all currently done by default. Maybe via PS1-Script, or execution of just an external command with specific arguments and then pattern detection in the results...

Scenario:
I have a git clone, A, with two remotes.
One, B, is a crawler which produces new entries, and from which I regularly pull.
The other, C, is a long-term backup storage, onto which I push the final states of A.

So, I want to know if there is incoming stuff (from B) AND stuff which needs to be pushed out (to C) at the same time.

Status Update after Fetch does not Capture the new State.

Repro:

  • Local clone with no changes and no incoming changes fetched. => status will be white.
  • Remote get changes.
  • Update in Checkouts Overview UI: first white, then fetch, then still white (!)
  • A second update run then shows the orange incoming arrow.

Implement Disk-Scan Alternative without Everything

The tool should also be able to run without everything.

Create a dialog to select either Everything or some FS roots (hard discs preselected, but editable).
For the slow scan, use dialog to report progress and possibility to abort.

Apply "global" Entry-Sort Operations to Selections

  • If Entries are selected, apply global sort operations to those selections only
    • Sort by name
    • Sort by path
    • Sort by date(s) (x2)
  • Label in the selection bar should state on which entries the sort operation will be performt
    • all entries
    • selection

Feature suggestion: add repos manually

I can see that scanning the whole machine is super convenient, but if you are in a hurry and just want to add a single new check-out, drag-dropping a folder on top of the tool would be nice.

Further Window Decoration Designing

Follow-up of #41

DWMWA allows for further Window Decoration Design adaptions on modern Windows 11:

private const int DWMWA_BORDER_COLOR = 34;
private const int DWMWA_CAPTION_COLOR = 35;
private const int DWMWA_TEXT_COLOR = 36;

internal static void SetCaptionColor(IntPtr hWnd, bool focussed)
{
    if (hWnd == IntPtr.Zero) return;

    int color = ColorTranslator.ToWin32(Color.FromArgb(0x22, 0x22, 0x22));
    DwmSetWindowAttribute(hWnd, DWMWA_BORDER_COLOR, ref color, sizeof(int));

    DwmSetWindowAttribute(hWnd, DWMWA_CAPTION_COLOR, ref color, sizeof(int));

    color = ColorTranslator.ToWin32(focussed ? Color.WhiteSmoke : Color.Gray);
    DwmSetWindowAttribute(hWnd, DWMWA_TEXT_COLOR, ref color, sizeof(int));
}

protected override void OnSourceInitialized(EventArgs e)
{
    base.OnSourceInitialized(e);
    IntPtr hWnd = (PresentationSource.FromVisual(this) as HwndSource)?.Handle ?? IntPtr.Zero;
    Utility.DwmHelper.UseImmersiveDarkMode(hWnd, true);
    Activated += (object? _, EventArgs __) => Utility.DwmHelper.SetCaptionColor(hWnd, true);
    Deactivated += (object? _, EventArgs __) => Utility.DwmHelper.SetCaptionColor(hWnd, false);
}

Option to `git fetch` on Update

Should be a global (default) setting with the option to adjust per repository:

  • off
  • fetch (selected remotes)
  • fetch (all remotes)
  • Update Documentation!
  • Minor version bump

Understand and Visualize Branches

  • Use git branch -a
  • If any branch has a equally named remote branch, the current branch has not --> warn!
  • Extend icon indication:
    • Current branch is neither main nor master -> change shape of lower range, but stay white, when without local changes
    • If current branch does not have a remote, but other branches do -> change shape of upper range & red

Dark Window Title Bars

Switch to Dark Window Title Bars for MainWindow and Dialog Windows (Settings, Search, About)

Context:
The Checkouts-Overview App follows a medium-dark design color schema. I did not overwrite the windows title bars, because I did not want to end up with non-OS look and maintenance effort.

I recently learned that there is an DWM-Switch, related to Dark Mode, which could work easily enough to adopt here:
https://www.meziantou.net/detecting-dark-and-light-themes-in-a-wpf-application.htm#updating-the-title-b-2cbb0b

Documentation MD for Icons Meaning

  • Add a Help-Link to the UI
  • Add MD files to the repository to represent the Manual
  • Create Section about the meaning of the Entry Icons
  • Create up to date screenshot for main README.md

About Dialog

Add "About" Dialog, with

  • Version information
  • License/Copyright information
  • Link to the website(s)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.