SmartGit 22.1.8 (2023-11-30)
============================
Fixed Bugs
----------
- Git-Flow, Finish Release: should not create tag (on wrong commit) after merge conflict
- History, Squash: possible internal error when trying to squash a commit with missing author-information
- Possible internal error with invalid proxy configuration
- Refresh (core): symlinks in .git/objects should be followed (low level property core.objects.followSymlinks must be set)
- Investigate: possible internal error when closing the window
- Log, Standard window:
    - massive performance regression for working tree status (since version 21.2)
- Log, Working tree window:
    - possible dead-lock when clicking submodule commit

Other Noteworthy Changes
------------------------
- improved error message in case of invalid .gitconfig file


SmartGit 22.1.7 (2023-07-17)
============================
Fixed Bugs
----------
- 2nd SmartGit instance crashes with FileSystemException
- Rebase, Step: should not be available in non-step mode
- Refresh:
    - possible problems with custom "filter.<driver>.process" (long running filter process)
    - -may not show modifications for files containing "eol" attribute without "text" attribute
- Linux: evaluation reminder dialog might be hidden behind main window making the impression that SmartGit hangs

Other Noteworthy Changes
------------------------
- Graph layout: reduced memory consumption
- added low-level properties github.userQuery.* to fine-tune/debug query-sizes


SmartGit 22.1.6 (2023-06-22)
============================
Fixed Bugs
----------
- Changes view, Split Index/WT files: even if changes.preservePositionWhenSwitchingBetweenWtIndexHead is set to false, selecting the index or working tree of the same file did not select the first diff
- Commit Message, Rewrap: possible internal error
- Distributed Reviews: pull requests may not be properly updated to merge base
- GitHub Enterprise: possible internal errror for "Generate Token" in preferences
- JNA: still created temp directories (regression since 21.2)
- Refresh:
    - refreshing fails when using negative respecs (^)
    - LFS (Windows): possible internal error for case-changed directories
- SSHJ: possible internal error for unsupported private key format
- possible internal error killing a (Git) child process
- GUI:
    - view tabs (Log, WT window): a too-fast drag-and-drop continued to show the drag-reject cursor
- Log window:
    - GitHub: possible too large amount of REST calls
- Working Tree window:
    - if in Setup wizard the Standard window is selected as default, neither the Commit toolbar button nor the Commit view were visible
    - Refresh: possible performance problems for .git/index file without checksum

Other Noteworthy Changes
------------------------
- Log window:
    - Graph: Varying Coloring uses now more distinct colors
- reactive license.serverPing.url


SmartGit 22.1.5 (2023-03-31)
============================
Fixed Bugs
----------
- Kill hanging process: possible internal error
- Refresh:
    - possible internal error in case of corrupt .git/index file
    - possible internal error related to bad branch.<name>.merge entry in .git/config
    - problem reading packed-refs
- Standard window: possible internal error when filtering

Other Noteworthy Changes
------------------------
- Log: remove notification "would you like the Log as default window?"
- Preferences: after changing the Startup window option, show restart notification
- Setup wizard: let the user confirm the Standard window


SmartGit 22.1.4 (2023-02-22)
============================
Fixed Bugs
----------
- Background scan: fixed memory leak if Detect Local Changes is disabled
- Changes view: Resolve may fail with "Input length = ..." error depending on the used encodings
- Fetch More: internal error when trying to fetch non-branch, like Gerrit refs/changes/01/000002/3
- Standard window:
    - Files: possible incorrect original path shown for renamed file
    - Filter: various regex-selectors, e.g. .* were non-functional
    - GitHub: possible internal error during refresh
    - Rebase may silently do nothing
- Linux bundle: old .svg file was bundled

Other Noteworthy Changes
------------------------
- Tools: the obsolete ff-merge.sh tool is removed automatically, even if upgraded from older SmartGit versions)


SmartGit 22.1.3 (2023-01-20)
============================
Fixed Bugs
----------
- Standard window:
    - Start Feature: could reset diverged local branch (not ahead or behind) onto remote branch (possible loss of commit)
    - Graph: internal error when selecting virtual and one other commit
- Log window:
    - Changes: clicking submodule commit did not reveal commit reliably
_ Hosting providers:
    - Azure: for multiple configured hosting providers (accounts), refreshing only worked randomly
    - GitHub: possible "Object author not found as parent of PullRequest" for pull requests of non-existing users
- Refresh:
    - \\ at line end of config file was erroneously treated as line continuaton
    - could break in case of inaccessible directory or file
- Setup wizard: possible internal error on Finish (related to proxy configuration)

Other Noteworthy Changes
------------------------
- Azure DevOps: added low-level property "azure.accountMatchHonorOrganization"
- Rebase: by default rejects Rebase Interactive when trying to rebase onto a commit of the HEAD's history (low-level property "rebase.invokeInteractiveForBranchHistory")
- Log window:
    - Changes: font to display comments might be too small to read: added low-level property "changesView.comment.fontSize" to configure the size


SmartGit 22.1.2 (2022-12-23)
============================
Fixed Bugs
----------
- Annotate: possible internal error
- Background scan: fixed memory leak
- Bitbucket: failed for pull requests with invalid refs (silently ignores them now)
- GitHub integration: possible error "Object 'requestReviewer' not found as parent of 'nodes'"
- Refresh:
    - possible error "is a directory" when opening a repository with symlinks in .git/refs
    - possible error "Bad entry" for \r\n continuation in Git config file
- Spell checker: possible internal error when accepting fix while the message was cleared automatically after a successful commit
- Syntax coloring, PHP: incorrect end of string detection
- UI:
    - Changes View/Compare: non-US-ASCII-related problems; restored SmartGit 21.2 behavior
    - Investigate toolbar icon had wrong background
    - Standard window, Commit: line length guide ignored left margin
- Various operations: possible error "Inappropriate ioctl for device" when writing .git/config
- Linux:
    - fails to start if 'which' command is not available
    - visible empty shell when clicking Shutdown

Other Noteworthy Changes
------------------------
- Graph: low-level property log.graph.commitMessageToolTipLimit can be set to 0 to disable message tooltips entirely
- Pull: Git config "pull.ff=only" is respected
- Refresh: for invalid pack files, a better error message with solutions is shown
- Toolbar: ability to add Fetch button


SmartGit 22.1.1 (2022-11-24)
============================
Fixed Bugs
----------
- Fetch: possible internal error
- Git config file: possible corruption when writing, especially for lines after a comment line
- Log:
    - Subdirectory Log: internal error double-clicking a commit
    - Graph: possible internal error when filtering with set low-level property "log.graph.topoFilter.alwaysIncludeContainingMerges"
- Push To: did not configure tracking even if options were set to do so
- Preferences: certain .gitconfig options may become confused if not stored with canonical case in .gitconfig
- Standard window:
    - internal error cloning a repository into a directory which was already open and had been deleted outside SmartGit
    - Local Files, Push toolbar buttons: count badge might be outside the button depending on the screen zoom level
- i18n:
    - Investigate: i18n problems
    - macOS: window-less menu bar was not translated


SmartGit 22.1.0 (2022-11-11)
============================
Fixed Bugs
----------
- File Log: hitting Del in the Branches view caused internal error
- JIRA: many recurring dialogs after cancelling SSL client certificate


SmartGit 22.1 RC 4 (2022-11-08)
===============================
Fixed Bugs
----------
- command line parameter --write-default-theme-file produces incomplete own-light.theme file
- evaluation was not possible on WSLg
- Refresh:
    - performance regression when processing huge modified file
    - possible internal error in case of concurrent file system modifications
- Standard window:
    - Apply Stash: possible internal error if there was no stash available
    - Commit: possible error "bad revision 'HEAD'" on first commit
    - Refresh: graph might show outdated state

Other Noteworthy Changes
------------------------
- i18n: updated translations (Chinese and Japanese)
- renamed low-level properties starting with "changesView." to start with "changes."


SmartGit 22.1 RC 3 (2022-10-27)
===============================
Fixed Bugs
----------
- Graph:
    - in rebasing mode after conflict, when squashing two commits "in-progress" marker is missing
- Shutdown: fix for (invisible, but reported) exception
- Standard window:
    - Refresh:
        - graph could show outdated state
        - possible internal error when working in old branch
    - Linux: the right Graph toolbar buttons were misaligned

Other Noteworthy Changes
------------------------
- Changes view: added low-level-property changesView.scrollHorizontally to tweak horizontal scrolling
- Syntax coloring:
    - support for Zig
- Linux, bundled JRE: in case of hard crashes, log longer stacktraces


SmartGit 22.1 RC 2 (2022-10-21)
===============================
Fixed Bugs
----------
- Cherry-Pick/Revert File: possible internal error when invoking on a commit which contains file and directory with the same name
- Refresh:
    - rename detection must not obstruct conflict
    - Git filter configuration: escaped quotes were not handled properly
- Standard window:
    - Pull: possible false-positive "Pulled nothing new" despite of branches being fetched
    - Start Feature: was disabled if main ref was missing
- Linux: some list controls had screed up line heights

Other Noteworthy Changes
------------------------
- Refresh: added low-level property core.git.invokeFilterInShell which may resolve problems with more complex Git filter definitions


SmartGit 22.1 RC 1 (2022-10-14)
===============================
Fixed Bugs
----------
- Drag and drop of views: possible internal error
- Create Pull Request (GitHub/others): didn't show error in case of failure
- Refresh: error "Node ... is marked as missing but commit exists in repository" after filtering for a single commit
- Syntax:
    - YML: incorrect detection of numbers after text
- Standard window:
    - My History:
        - repaint problem with HEAD commit (remained too long in bold state)
        - possible internal error related to GitHub pull request
- Installation upgrade (especially on macOS): ~currentl-log.<number>.tmp file might remain in updater directory preventing upgrade

Other Noteworthy Changes
------------------------
- Log Graph:
    - Modify Commit: denote current commit as "editing" instead of "done"
- Select from Log/JIRA: use insert/replace-selection instead of replace-all where useful
- Linux: force X11, because SWT has too many problems with Wayland
    (for those with more problems in forced X11: they can comment the "export GDK_BACKEND=x11" line in smartgit.sh)


SmartGit 22.1 Preview 17 (2022-10-10)
=====================================
Fixed Bugs
----------
- Drag and drop: possible internal error
- Gravatar image: pending gravatar image showed up as white for dark theme producing visual noise
- Log Graph:
    - initiating a range-rebase using drag and drop did not work for commit having multiple children
- Refresh: possible internal error in case of concurrent file system changes
- Standard window:
    - if local main branch is missing, remote main branch did not show up if multiple remotes were configured
    - My History: 'tracked branch has different name' check reported false-positive
- Linux, deb-bundle: bundled JRE had incorrect permissions preventing the execution of external commands

Other Noteworthy Changes
------------------------
- Log Graph:
    - use more colors for refs
- Working Tree/Log window:
    - added low-level properties docking.dnd.minTime and docking.dnd.maxTime to reject unintentional drag and drop of views
    - added low-level property docking.dnd.enable to disable drag and drop of views
- Standard window:
    - All Branches + Tags: use same ref colors as in My History view
    - by default show current branch not just bold (might be harder to notice in dark theme), but also with leading triangle
    - Checkout: allow switching branch with dirty working copy
    - command error popup shows now error details instead of just "Command failed!"


SmartGit 22.1 Preview 16 (2022-09-30)
=====================================
Fixed Bugs
----------
- Branches view:
    - Add Branch/Tag was missing in Local Branches/Tags category
    - Git-Flow:
        - Release and Support category context menus miss "Start" operation
- Changes view: clicking submodule commit did not open submodule anymore
- Cherry-Pick: when cherry-picking multiple commit and using Commit instead of Continue after a conflict, "git cherry-pick --continue" needs to be invoked
- Clone, GitHub: "Object 'id' not found" error when trying to list repositories
- Graph:
    - for remote refs, jigsaw piece didn't always show up for tracked remote branch
- Git-Flow toolbar button misses various operations
- GitLab: strange, unparsable message in case of duplicate merge request
- Refresh:
    - .git/config files could not be parsed if lines ended with \ to be continued on next line
    - .git/config files could not be parsed correctly if section or key names were not entirely lower case
    - possible internal error in case of 0-size or incomplete files in .git dir
    - possible internal error related to missing-untracked rename detection
- Subtrees: ignore subtrees which form invalid hierarchies (which can occur due to buggy commit messages)
- Syntax:
    - InnoSetup: wrong highlight for '-quoted commands
- Log:
    - Commit view: Copy Full ID was missing
    - Files: sorting by Name was broken
    - Refresh: subtrees may still show up for existing repositories after having configured LLP "nodecache.subtrees.enabled=false"
- Standard window:
    - possible internal error filtering graph
    - Files view (Local and Graph): renamed file's name might not show up properly
    - Jenkins: query did not timeout
- Working Tree window:
    - Cherry-Pick: did not remember selected button
- Linux:
    - installation update: temp dir might remain (and can't be trashed on restart)
- Windows:
    - command line parameters: a trailing \ in a quotes string was treated as escaped "

Other Noteworthy Changes
------------------------
- Add Branch: by default the "Add Branch & Checkout" button is selected, because it is needed more often, unless the Standard window is used and a checkout would be rejected because of local changes
- Bisect: in Finish dialog allow to copy ID
- Graph:
    - Drag and drop of (remote=local) refs should only show (local) while dragging
    - Files:
        - Save As: swapped buttons to be in visual order
- Merge: reject to merge commits from own history
- Rebase: immediately start interactive rebase when trying to rebase onto own history
- Stage: warns if a (text) file contains conflict markers
- Standard window:
    - GitHub integration: operations like Finish should not fail if connection to GitHub is not possible
    - Mini-Log vs. Commit Message: better use available space
    - Push: if no remote is present, offer to Add Remote
    - Remote | Add
    - Local Files:
        - double click on a file in the Local Files display either can stage/unstage the file or open the compare; this can be configured in the preferences
        - context menu:
            - for conflicting files, the Conflict Solver is shown as default command
            - no default (bold) menu item for multi-selection
    - My History:
        - CI information also honors pending/running workflows
- GUI:
    - use new icon for file renamed in index, modified in working tree
    - line length guide: background color for too long line hard to see on dark theme
- don't show preview expiration date in title as it confuses users


SmartGit 22.1 Preview 15 (2022-09-05)
=====================================
New Features, Improvements
--------------------------
- Japanese translation

Fixed Bugs
----------
- GitHub: Clone dialog did not show up all (organization) repositories
- Log:
    - Commit details: fixed open links for unpushed commits or commits pushed to only a specific repository
    - Save As: saved file with (temp-file) permission 400; now trying to retain the permission of an overwritten file or using 644
    - GitHub: creating pull request to upstream fails
- Refresh:
    - internal error related to remove.<id>.fetch/push definitions which do not refer to remote refs
    - possible internal error related to squashed subtrees
    - LFS: rename of LFS file is not detected (untracked/missing shows up instead)
- Standard window:
    - Create Pull Request: allowed to send a pull request to same branch which was rejected then by the server
    - Pulls: popup might show too low number of pulled branches

Other Noteworthy Changes
------------------------
- Commit message fields, JIRA issue selection: use replace-all for all dialogs (not some replace-all, others replace-selection)
- default font size can be now configured using ui.fonts.defaultSize (has no influence on menubar, popup menu, radio button/checkbox symbols)
- Repository settings (or for defaults in preferences):
    - Pull: allow to configure Merge vs. Rebase behavior
- Fetch All: to fetch from all remotes
- Refresh:
    - more memory-efficient untracked-missing rename detection
- Log:
    - Graph:
        - Merge commits (even those in stashes) are shown in black now (changed default of log.graph.showMergeCommitsGray to false) because they are often more important than the merged commits
- Log and Working Tree windows:
    - Branches view: added Fetch to the remote's context menu
- Standard window:
    - Commit message field: optional index selection became a little bit smarter (removed files.selectIndexOnFocusCommitMessage)
    - Files: improved the display of long file paths, especially if renamed
    - Local Files toolbar button shows the total of Working Tree and Index changes
    - Submodule: closing a submodule repository tries to select the parent repository
- GUI:
    - toolbar: should be more tolerant now when dragging slightly as part of the click


SmartGit 22.1 Preview 14 (2022-08-22)
=====================================
New Features, Improvements
--------------------------
- Cherry-Pick: support for Skip
- LFS:
    - for untracked files the (will-be-tracked-by-LFS) state is also indicated
    - Track: is limited to untracked files
    - Lock/Unlock: is limited to unlocked/locked files
    - Files tables: a new column "LFS" is available for showing the LFS state
- Rebase/Revert: conflicts are considered as warnings, not errors
- Standard window:
    - Graph: added hamburger menu for columns and author display
    - LFS commands
    - Local Files:
        - unchanged LFS-locked files will be always be shown (to not forget about unlocking them)
        - at the right side, LFS-state is shown

Fixed Bugs
----------
- Checkout: EOL-correction may not work for UTF-8 with BOM encoded .gitattributes
- Clone: possible internal error trying to clone from SVN repository
- Commit message input field:
    - after clearing the default message (e.g. after a cherry-pick), the next refresh brought it back
    - possible incorrect position of line-end guide lines depending on the used font, e.g. for Iosevka SS04
- default Tools: a new default Edit tool is created if the previous one had been deleted or modified
- GitHub: error "Object 'defaultBranchRef' not found as parent of 'repository'"
- Refresh: local LFS lock information was used even if querying for locks was disabled (so showing easily outdated information)
- Log:
    - Graph: searching for refs was broken (regression since 21.2)
- Standard window:
    - File log failed to open for renamed file
    - Graph: deselecting commit did not clear Changes view
    - Pull: LFS locks were not queried even if low-level property status.lfs.locks was set
    - Refresh:
        - for GitHub repositories, the Graph was not updated reliably after performing an operation, e.g. Pull
        - internal error opening Git-SVN repository
- Working Tree window:
    - Journal: false-positive warning about pushed commits for detached commits

Other Noteworthy Changes
------------------------
- added low-level property log.graph.commitMessageTruncatedEllipsis
- Standard window:
    - Graph:
        - Copy commands should not append trailing newline
        - selecting a pull request should show commit details for this artificial commit (as the Log window does)


SmartGit 22.1 Preview 13 (2022-07-28)
=====================================
New Features, Improvements
--------------------------
- Standard window:
    - Jenkins integration
    - Teamcity integration:
        - query for local branch commit to show more approriate results

Fixed Bugs
----------
- Standard window:
    - Graph showed outdates state
    - Local file changes: may not reliably refresh root state banner

Other Noteworthy Changes
------------------------
- Standard window:
    - [+] tab: filter input field to quickly find repository by name or path parts


SmartGit 22.1 Preview 12 (2022-07-22)
=====================================
New Features, Improvements
--------------------------
- Standard window:
    - ability to create pull request even without finishing a feature
    - My History: Continues Integration (GitHub, Teamcity)
    - (safe) Rename (local) Branch: performs a couple of safety checks and renames the remote branch, too

Fixed Bugs
----------
- Prune Worktrees: did not work any more with latest Git version
- Refresh: possible memory overflow due to file monitor cache growing too large
- Working Tree and Log window:
    - Output: right-click did not show context menu
- Standard window:
    - Features: possible internal error after configuring main branch
    - My History: clicking 2 times a local branch with far behind tracked branch did not select the tracked branch
    - Graph: may not reliably refresh root state banner
- Linux:
    - opening new repositories quickly by double-click might get stuck

Other Noteworthy Changes
------------------------
- license reworked:
    - non-commercial use:
        - removed hobby usage option
        - requires registration
    - evaluation requires machine-specific activation now
- JIRA: support token-based authentication
- show notification if a deprecated low-level property is used
- Files view (split presentation): if a file rename is staged and then modified, the working tree displays the modified state
- Branches, Stash: Copy Message: copy the message from commit which might include, e.g., line separators
- hosting providers: improved error reporting
- Repositories view: for open repositories show remotes in tooltip
- too large tooltips can be expanded/collapsed using F1
- Standard window:
    - All Branches + Tags: ability to push tag
    - Pull: automatically delete obsolete tracking branches (if the commit is merged and no merged commit has a different author or committer than me)
    - Rebase: warns if pushing would require a forced push


SmartGit 22.1 Preview 11 (2022-07-03)
=====================================
New Features, Improvements
--------------------------
- Bisect: the user is notified about the first found bad commit
- Clone, GitHub: shows the same "top repositories" as GitHub website
- Log graph, Rebase-state:
    - reworked logic for pending ("todo") and "done" commits
    - the "current" commit is denoted
- Standard window:
    - Bisect:
        - the Graph's context menu contains a "Try Commit" menu item
    - Garbage Collector

Fixed Bugs
----------
- Start Feature: hang after adding feature for which the name contained a quote character
- Investigate:
    - JIRA-links in commit message had no context menu to copy URL
    - some controls were focusable which shouldn't be
- Refresh: repository might be false-positively considered as bare
- UI:
    - pressing ESC inside a (multiline) Text control did not close the dialog
    - pressing ESC to close a completion popup closed the dialog, too
- Log window:
    - Refresh:
        - possible internal error related to missing local objects
        - confusion of replaced vs. replacing ID when using git-replace
- Standard window:
    - GitHub:
        - no pull requests showed up in case of the source repository of one pull request being deleted
        - possibly obsolete model might have been set during pull request refresh resulting in "jumps" of the graph to some unexpected/old state
    - external tools: cancelling a tool's Save dialog showed empty result window
    - Stashes: Apply was enabled even for multi-selection
    - UI: minor gliches at the borders of some left panes
- Working tree window:
    - possible internal error trying to scan repository from detached working tree
    - Journal: shortcuts displayed in context menu, e.g. Ctrl+Shift+K, did not work

Other Noteworthy Changes
------------------------
- Add/Open Repository: when selecting a .git-directory, the working tree should be used instead
- Bisect: dropped separate "Reset" command by using "Abort"
- Changes view, GitHub: denote whether comment is pending
- Conflict Solver: by default SmartGit waits for the external process to finish before proceeding (low-level property externalConflictSolver.waitForProcess)
- GitHub: switched to GraphQL API (improving performance and error message)
- Syntax coloring:
    - C(++): support for binary literals, e.g. 0b0100
    - Pascal: added try/finally keywords
- File Compare, Conflict Solver, Text editor: Undo/Redo first selects the change to undo/redo
- Log window:
    - Branches view: hamburger menu options work now only for the current and new windows, but not for other already open ones (to be consistent with other options)
- Standard window:
    - Graph: honors low level property log.graph.preserveParentOrder now
    - All Branches + Tags: hamburger menu to configure sort order and whether tags are shown by default
    - Stashes:
        - changing Graph selection also updates selection in the left stashes list (so both are synchronized)
        - Graph: allow to apply/drop stashes by right-clicking one of their commits
- some path tables: improved sorting ("subdir" before "subdir/subsubdir" before "subdir-2")


SmartGit 22.1 Preview 10 (2022-06-01)
=====================================
Fixed Bugs
----------
- Changes view, GitHub: comment on last line was incorrectly mapped to first line
- Cherry-pick: "Append source SHA to commit message" was not honored when cherry-picking without committing
- Log: possible internal error when searching for a commit
- Push: internal error pushing one new local and some other tracking branch and tracking should be configured
- File Compare selection: the file's relative path was used instead of the file name for determining the matching configured file compare
- Refresh:
    - symrefs pointing to other symrefs could be considered as invalid though they were fine
    - symrefs should be resolved even if target is outside of refs/
    - possible error "Unknown Chunk ID" when using Git 2.36
- Standard window:
    - Features: if "gitflow.prefix.feature=/" is configured, every branch should be considered as feature (as if the prefix was not configured at all)
    - Finish: possible error "Connection to GitHub failed" if there are existing pull requests which have been created by a bot
    - Repositories tab:
        - could not delete single repository group
        - internal error invoking Move To for several selected repositories
    - possible internal error related to displaying renamed/moved file
    - possible internal error closing a repository quickly after opening it

Other Noteworthy Changes
------------------------
- External tools: previous default tool "Format Patch" has been removed;
  who needs using it, can readd it manually: https://docs.syntevo.com/SmartGit/Latest/Example-Tools.html#format-patch
- GitHub: improved handling of permission-related OAuth problems
- updated JRE to 17.0.3
- updated SWT to v4952r11
- Standard window:
    - Copy Name works on pull requests, too
    - Open Ref/Commit in browser (GitHub web frontend)
    - Undo Last Commit: requires clean working tree and index
- Windows:
    - dark theme: search input fields now use light instead of dark icons


SmartGit 22.1 Preview 9 (2022-05-06)
====================================
New Features, Improvements
--------------------------
- Standard window:
    - Edit Author
    - external tools
    - Reflog (was experimental before)

Fixed Bugs
----------
- Changes view:
    - for Unified view and a removed block, Goto Next Change jumped to the beginning of the block
    - obsolete image/submodule information may remain after switching to another file which gives "file size exceeds" error
- Log and Working Tree window:
    - Toggle Assume Unchanged/Skip Worktree: option was missing in context menu for missing files
- Log window:
    - Graph filtering for Modified Content may miss matching files with invalid UTF-8 file names
    - Delete Ref: for local, non-tracking refs warning may not mention "unpushed commits"
- Refresh:
    - internal error opening file located on repository root
    - Windows: possible "access denied" for System Volume Information
- Startup: internal error if ~/.gitconfig started with UTF-8 BOM
- Standard window:
    - All Branches + Tags: internal error when clicking Copy Name/Path/Relative Path in Files view
    - Finish Feature: for merge commit author from last feature commit was used instead of configured author
- Linux: shutdown of file monitoring may block application shutdown for a long time
- macOS:
    - Branches view: ahead-behind information scrolls horizontally instead of staying at the right side

Other Noteworthy Changes
------------------------
- Changes-Compare: experimental low-level property compare.applyCleanSmudgeFilterForWorkingTreeFile to apply the clean-filter, followed by the smudge-filter for the working tree file
- Fast-forward external tool has been replaced with built-in command
- Preferences, Executable: show Git version
- Submodule Update: don't stop in case of update errors in a single submodule
- Standard window:
    - Commit: if nothing is staged,
        - multiple changed files are selected, commit them
        - a single file is selected and multiple committable files exist, ask whether to commit this file only or all
    - hide feature-related toolbar buttons if Git-Flow is explicitly disabled in .git/config
    - GitHub integration: now also supports GitHub Enterprise


SmartGit 22.1 Preview 8 (2022-04-13)
====================================
New Features, Improvements
--------------------------
- Standard window:
    - GitHub: pull request display
- Syntax coloring:
    - added support for Crystal

Fixed Bugs
----------
- Init: Git property init.templateDir was ignored
- Preferences, Hosting Providers:
    - cancelling Edit might effect original data
    - Bitbucket: updating a token after having successfully checked connection did not validate the token again
- Push: initially pushing a feature asked user for setting a JIRA issue in progress, but did not
- Standard window:
    - improved/fixed display of repository tab bar
- GUI:
    - natural sorting did not work reliably in all cases
    - if a table column was too wide (from the content), it was shown very narrow, e.g. in the Interactive Rebase dialog for commits with very long commit messages
- Linux: bundled JRE: some required files had wrong permissions

Other Noteworthy Changes
------------------------
- Branches views: ahead/behind counts are drawn inverse now
- Merging: added low-level property merge.preventMergingToFeatures to allow merging branches to features
- Pull/Sync: improved performance
- Standard window:
    - Add Branch: added low level property standard.addBranch.allowOverwrite
    - All Branches + Tags: ability to copy tag name
    - Copy ID/Message: work on multiple selected commits
- Log:
    - Graph: pull request commits are rendered in black instead of gray
- Syntax coloring:
    YML: treat hashes not as partly numbers


SmartGit 22.1 Preview 7 (2022-03-23)
====================================
New Features, Improvements
--------------------------
- Repository-related notifications: include repository name/path

Fixed Bugs
----------
- Changes view:
    - Unified display: left and right change stripes could become out of sync with viewport
- Clone wizard, Add Hosting Provider: internal error clicking OK
- Commit message input field:
    - line-length guide incorrectly displayed for wrapped lines
- Open Repository: possible internal error related to worktrees
- Startup: bug file becomes reset when starting 2nd instance of SmartGit
- Syntax:
    - Cmd/Bat: a single 'rem' line was not detected as line comment
- Standard window:
    - clicking the [+] tab did not focus the repositories tree control
- macOS: after installation directory update the .app icon was broken

Other Noteworthy Changes
------------------------
- Clone:
    - Select repository from hosting provider: added filter input field
- Commit message input field:
    - File name completion: if there is some staged file, by default don't suggest paths from modified working tree files (low-level property commitMessage.completeAlsoWtFiles)
- Repository Settings: split User & Encoding
- Standard window:
    - by default don't show entries for renamed source files
- Syntax:
    - Basic: support for ' line comments
- upgraded to Java 17


SmartGit 22.1 Preview 6 (2022-02-28)
====================================
New Features, Improvements
--------------------------
- Standard window:
    - Pull toolbar button: for multiple remotes separate actions to fetch separate remote
    - Working tree files: allow to open/edit (on Windows filetype specific using registry entries)

Fixed Bugs
----------
- Changes view: error banner might remain after switching to a different file
- Compare, Conflict Solver, ...:
    - Find & Replace: "Replace All" did not replace the occurrences before the caret/selection
- Graph: SHA column showed too many characters, partly truncated
- Interactive Rebase: misleading error message when trying to invoke on the initial commit
- Preferences dialog, Hosting providers: cancelling Edit dialog affected original data
- Push: always configured tracking even if corresponding options were disabled
- Refresh:
    - files declared as binary in .gitattributes might be interpreted as text and showed up modified
    - macOS: core.precomposeunicode=false caused reporting of untracked/missing file pairs on APFS
- Syntax coloring:
    - Bash: invalid detection of $() in some cases
- Standard window:
    - after cloning an empty repository and performing the first commit, master showed warning about broken tracking
    - Commit: clicking an outgoing commit asked to replace even if the messages were equal
    - Edit Message was enabled while rebasing
    - History, Files: pressing Ctrl/Cmd+S on file selection triggered Save Stash instead of Save As
    - Output: might not show up the actual cause of an error
    - Push Up To: for a new branch did not configure tracking
- GUI:
    - some toggle actions/checkbox menu items did not work correctly
    - Find Command/Find Object popup: scrolling with mouse switched tabs
    - Windows: File Log did not scroll Files selection to visible area reliably

Other Noteworthy Changes
------------------------
- Add Remote dialog: ability to enter/select absolute paths
- Changes view:
    - "Take Ours" and "Take Theirs" work even for files too large to display
    - consistent handling of errors in banner
    - if Next/Prev loads a different file, no popup is shown any more
- Commit: for an empty repository, performing the first commit will create an empty first commit
- Compare, Conflict Solver, ...:
    - Find & Replace: "Replace All" is now undoable in 1 step
    - header text above file contents becomes selectable
- Conflict Solver/Changes view: replaced "Stage" by "Mark Resolved"
- External tools: for return values != 0 show a "failed" icon
- GitHub: merge pull request dialog improvements
- Graph:
    - Rebase: shows number of already rebased + overall number of commits
- Log window:
    - Graph: improved bisecting coloring
- Rebase Interactive dialog: allows to drag multiple commits
- Refresh: support for sparse Git index files
- Syntax coloring:
    - Bash: improved for commands between $( and )
- Standard window:
    - Commit view: clicking the HEAD commit selects "Amend" checkbox also for repositories without remote
    - Changes view: shortcuts for Next/Prev change
    - File log: set shown refs to same as shown in repository Graph
    - improved display of renamed files
    - Ref context menu: added Rebase (similar to Merge)
    - Start feature is enabled for empty repositories, but explains next steps to user
- Working Tree window, Log window:
    - Files view: if the split table for index and working tree is shown, it will behave similar to the Standard window: keeping the empty working tree table visible if all changes are staged
- Spell checker: added low-level property spellchecker.checkWordAtCaret
- Setup wizard: option to select Standard window as default
- SWT: setting focus should not bring the window to front
- MacOS: Help menu missed search input field
- Linux tar.gz bundle: rebuilt Git 2.35.0 on Ubuntu 18.04


SmartGit 22.1 Preview 5 (2022-02-02)
====================================
New Features, Improvements
--------------------------
- Commit:
    - the first commit in an empty (externally initialized) repository will create an empty "initial commit", too
- Log window:
    - Commit:
        - Open links works for pull requests, too
    - Graph:
        - Pull Request: added Drop Local to context menu
- Standard window:
    - Commit:
        - shows current branch name as header
        - for feature branch more pushed commits are shown from the feature branch
    - display Submodules and allows to open them in separate tab (in Local Changes, Submodules)
    - improved feature workflow:
        - shows 3 buttons: Create, Integrate, Finish
        - Integrate prepares for a trivial Finish, integrating remote feature changes, integrating remote develop changes, pushing
        - Finish also works if not yet pushed, but based on latest develop commit
    - Output:
        - clicking the left-most status bar icon also can show the output of the currently running command
        - after a command fails, a detailed output dialog is shown by default, but can be configured to just show a auto-hiding popup
    - Repositories ("+") tab: added Select Obsolete Repositories and Move To commands to context menu
    - added shortcuts to access Repositories ("+") tab, Files, Graph and Commit views
    - Find Object and Find Command (Ctrl+P, Ctrl+Shift+P)

Fixed Bugs
----------
- Changes view: error about too long lines showed line number zero-based
- Commit:
    - in Modify-Rebase mode Commit triggered Step instead of Continue
- Log window:
    - Commit: does not reliably update pull request comments once loaded
- Refresh:
    - Log:
        - possible internal error in case of degenerated commit/tag objects
        - possible internal error related to non-standard lines in commit objects
    - for worktree repository, bisect-refs were not detected
    - file handle leak
    - Windows: could fail in case of broken directory junction
    - "slow clean filters" was over-ambitious
- Syntax:
    - Shell script: several problems
- notifications may not be closable if showing up in multiple windows
- Standard window:
    - Branches/Graph ref context menu:
        - right-clicking tag should not allow to check out
        - delete/merge was enabled for HEAD
    - Graph: "Local changes" banner sometimes kept showing for no local changes
    - Pull: false-positive warning "local branch seems to be a rewrite"
    - possible internal error because of incorrectly disposed repository controls
    - Init: endless spinning wheel in status bar
    - Stage: error staging a modified, renamed file
- macOS:
    - with dark system and light SmartGit theme the (x refs) box in the Graph was unreadable
    - "Show Standard Window" menu item was placed in wrong menu
- Windows 11:
    - docking tabs: x button showed up as + (unicode character was no found)

Other Noteworthy Changes
------------------------
- Hosting providers: for customer server, SSL system trust store ("WINDOWS-ROOT") is also used
- Submodule update: shows progress (requires Git 2.27+)
- Log window:
    - Repositories view: don't display uninitialized submodules (to be consistent with Working tree window)
- Working tree window:
    - Journal: style similar to Graph
- Git: updated to version 2.35.0
- SSH: updated SSHJ library (required for newer SSH servers)
- Preferences:
    - Commands, Commit: removed option "Use font configured in User Interface"
    - User Interface: changed "Use background color for file tables to indicate certain states" to the low-level property filteredTable.useBackgroundColor


SmartGit 22.1 Preview 4 (2021-12-09)
====================================
New Features, Improvements
--------------------------
- Changes view: indicate LFS state
- Files view: indicate LFS state
- Standard window:
    - Compare with Working Tree
    - Integrate: allows to integrate ahead and behind feature branch without requiring to push first
- Syntax coloring:
    - support for Groovy/Gradle scripts

Fixed Bugs
----------
- startup: internal error related to settings
- Blame: not readable in dark theme
- Branches: remote branches did not show up for git config "smartgit.refLimit.remoteBranch[Include|Exclude]RegEx" configured empty
- Edit Commit Message: for the HEAD commit, the message did not ended with a newline like for non-HEAD commits
- Edit Ignore File: showed only subset of all available ignore files
- Refresh:
    - false-positive "slow clean filters" warning
    - upper/lower case file name problems with .gitattributes (LFS)
    - possible internal error related to recursive definition of symrefs
- Log:
    - Subdirectory Log: fails with "The specified path does not exist in the repository"
- Standard window:
    - Changes view: changing font/size in preferences did not trigger redraw
    - Rebase Interactive: did not warn about modifying history
    - Linux:
        - selected tab is hardly noticable for dark system theme
- Working Tree window:
    - Show Changes did nothing on partly staged files
- macOS:
    - macOS 11, tables: scrollbar might not match table content
        https://bugs.eclipse.org/bugs/show_bug.cgi?id=575259

Other Noteworthy Changes
------------------------
- Built-in SSH client: support for "--" parameter used by Git-LFS
- Refresh: more efficient processing of filters (e.g. LFS)
- Log:
    - Commit Details: limit amount of displayed "merged to branches" to prevent performance problems and internal error for too long, wrapped lines
    - Graph:
        - use gray as color for the signed symbol
        - use subtle indicator for multi-line commit messages
            a tooltip shows more text for truncated messages
        - added Copy Name to context menu of ref
        - show triangle by default in refs to indicate HEAD ref (use log.graph.drawHeadRefWithTriangle to disable)
        - Refresh: for partial clones, avoid fetching root commits
        - drag and drop: don't starts scrolling too quickly
- Standard window:
    - added LLP standard.filter.showPermanently to show the filter input field permanently
    - shows banner in Graph view if there are local changes
    - Start feature: offer "develop" as main ref, if present
- Bug/crash report: if build is too old, asks to upgrade and don't send
- updated the bundled JRE to 11.0.13
- accelerators are ignored while a mouse button is pressed
- support for commit dates > year 2038


SmartGit 22.1 Preview 3 (2021-12-09)
====================================
New Features, Improvements
--------------------------
- Preferences:
    - added page for important options of the user's git config, e.g., user.name/user.email
- Standard window:
    - Copy path/name on local directory (context menu)
    - Edit git config for repository and user
    - Ignore on local directory (context menu)
    - Integrate (Feature): streamlined workflow
        - immediately integrates main branch (and skips tracked branch) if the local branch is a complete rewrite of its remote branch
        - if Integrate is a no-op, tell the user to Push the branch to finally become able to Finish it
        - Pull defaults to Fetch if the branch is a rewrite of its remote branch

Fixed Bugs
----------
- assertion starting SmartGit with previous settings
- git config writing:
    - empty values in config files were not preserved
    - empty sections should not be created, but kept if existing
    - Tag grouping: might have written empty "taggrouping" section to config
- Graph:
    - aborting a drag and drop (e.g. with Esc) over a link opened this link
- Refresh: possible internal error opening bare repository containing .git directory
- Standard window:
    - Clone:
        - failed silently if, e.g. the Git-LFS processing caused errors
        - if a clone in a different tab finishs, the active cloning card also became hidden
        - internal error cloning into a directory which was open as repository already
    - Discard: internal error invoking on selection with files and submodules
    - Local Changes Files: conflict file showed up in Working Tree and Index lists
    - Pull: showed "bas revision 'HEAD'" if repository was empty
- Working Tree window:
    - Journal, Edit Message: actually invoked Add Tag

Other Noteworthy Changes
------------------------
- Add Branch/Tag: use HEAD if invoked with focus in Branches view
- Clone: shows progress for "Filtering content" phase
- Commit and other operations: don't check for user.name/user.email
- Conflict Solver (external): set low-level property externalConflictSolver.waitForProcess to false to wait until the command has finished before showing the resolve-dialog
- Graph: improved auto-scrolling for drag and drop, especially with respect to when to start scrolling
- Preferences:
    - User interface: option to load previously open repositories in "Preferred window" or the previously used window
- Repository Settings: removed "Remember as default" option (because of the possibility to edit the defaults in the preferences)
- Setup wizard: don't ask for user.name/user.email if ~/.gitconfig exists, but can't be read, or if it contains includes
- SSH fingerprint confirmation dialog: show as Base64 encoded SHA-256 (as this is the information published by, e.g., GitHub)
    set low-level property ssh.fingerprint.sha256 to false to see the old MD5-hex hash
- Standard window:
    - My History, All Branches + Tags: clicking a ref should scroll it into view if already selected, but not visible
- Working Tree window:
    - Compare: invoking on an unchanged file always compares with working tree file (to be editable), not with index


SmartGit 22.1 Preview 2 (2021-11-26)
====================================
Fixed Bugs
----------
- Log window:
    - Graph: 'origin=branch' ref pair shows up with wrong (gray) color if only remote branch is selected in Branches view
- Refresh:
    - Graph:
        - possible internal error
        - possible "Unexpected type 'tag' instead of 'commit'" in combination with low-level property core.tags.loadDetails=false
    - "Pack index for ... does not exist" error
- Syntax:
    - JavaScript/TypeScript: problem with `strings`
    - PHP: end of code section not detected correctly
- Standard window:
    - Graph:
        - Filter: after revealing old node, preserve node in graph until a different branch or commit is selected
        - dragging of commits did not work
        - may unexpectedly reset selection back to older state

Other Noteworthy Changes
------------------------
- Preferences: added option to make the Standard window the "preferred" window, no need for a low-level property any more
- added low-level property repositories.reopenUsingDefaultMode to always open the repositories that were open on exit in the "preferred" window
- added experimental low-level property log.graph.highlightSelectionColor to configure a color that is used to highlight the parent connector
- Standard window:
    - added information to the My History and All Branches + Tags views
    - added Move or Rename


SmartGit 22.1 Preview 1 (2021-11-22)
====================================
New Features, Improvements
--------------------------
- Graph view:
    - highlights the selected commit's first-parent history in bold (on HiDPI screens, for LoDPI screens set the low-level property log.graph.highlightStrongAtDpiScaling to 1)
        https://smartgit.userecho.com/en/communities/1/topics/295-
- Cherry Pick, Revert: support "Continue"

Fixed Bugs
----------
- Changes view: if one image is refreshed, zoom was reset for that image only but not the other
- File Log: possible incorrect mapping of refs to commits for skipped merges
- Refresh:
    - certain cherry-picking and reverting states were not detected
    - a symlink to a file with non-ASCII characters in the name showed up as always modified
- Linux: autohiding scrollbar in Graph caused problems, replaced by separate slider
- Windows: bundled JRE was not detected under very special conditions

Other Noteworthy Changes
------------------------
- Commits view:
    - for 2 selected commits shows the commit details for both commits
    - for >2 selected commits shows the number of the selected commits
- Graph view:
    - more ref colors are available
    - used color is based on ref name (so is reproducible even on different machines)
    - in standard window and Log window with Default Coloring the commit dots use the branch color
    - unpushed commits are shown using a filled dot
    - improved filter responsiveness, especially for many matching commits
- Standard window:
    - drag and drop is more strict about dragging a ref or commit (similar to the context menu)
    - less intrusive filter input fields for graph and file tables
        - Local Changes: the filter only operates on the Working Tree files, not on the Index files, same for the selected Directory
    - show separate page for a cloning repository
    - if there are local changes, Pull will be rejected completely (to prevent less easy to understand states)
- Preferences:
    - for the Standard window the features can be limited to not overwhelm Git newbies
    - made more clear which Commands option influences what window
    - UI page: removed "Remember Log/Working tree" option because it was obsolete now with repositories remembered in what window they were opened
    - Extensions for syntax coloring: show modified (compared to default) with ability to reset to default
- Search Repositories:
    - clear found repository list on new manual search
    - made found repositories list sortable
- UI:
    - remember which repository was opened in what window type (and the order and current repository for the standard window)
    - split "Modify or Split Commit" into 2 separate commands
    - unified all graph context menus to have similar, more logic grouping of commands
    - use larger font in some dialogs
    - simpler icon (on macOS 11/12 better matching the others)


SmartGit 22.1 Preview 0 (2021-10-20)
====================================
New Features, Improvements
--------------------------
- Standard window:
    - targets non-tech users or simple workflows (e.g. single or feature branches)
    - more restricted workflows than in other windows to prevent common pitfalls
    - rather "there is just one way to do something" than "you can do something anytime"
    - support for single-remote (central) repositories only
    - strict separation between working tree (Local Changes) and graph (History) with smart switching between both
    - modes for operations on local branches (My History), checkout/search other branches/tags (All Branches + Tags), see stash details (Stashes) or find historic commits (Reflog)
    - reveal refs on single-click, in My History a delayed second click reveals remote/tracked branch
    - repositories open in tabs
- Changes view: support for diff filter textconv
- Modify or Split Commit: Modify and Modify All have been unified; there is a Continue button to get the old Modify behavior
- Submodule Add: option to define at which branch to add the submodule

Fixed Bugs
----------
- Branches view:
    - pull request nodes did not preserve selection on refresh
- Changes view:
    - changes to .gitattributes did not trigger a refresh
    - may interfere/block too much with main operations
- Clone:
    - false-positive detection of local URLs
    - created unexpected "develop" branch if ".gitflow" file was present
- GitHub/others: fetching invalid pull request may fail with "conflicting" error
- Log:
    - Files/Changes view: file content for specific unicode file names may not be loaded/found
    - Files: selecting the next file did not work in all conditions
- Pull: "Remember as default" did not work for Rebase option if .git/config contained "branch.autosetuprebase"
- Refresh:
    - no proper refreshing after specific case-change-only renames
    - internal error if .git/index (or commit tree) contains path "."
    - possible internal error if reading .git/config failed
- .gitignore/.gitattributes: first line misinterpreted if file was encoded with UTF8 with BOM
- various commands: possible false-positive "commit already pushed warning" for detached HEADs
- layout of some windows was not always remembered/restored correctly
- macOS: failed to launch from path with umlauts

Other Noteworthy Changes
------------------------
- Branches view (Log, Working Tree windows):
    - show ahead/behind commits at right side
- Commit:
    - select Index file change if commit message input field receives focus
    - context menu item to rewrap message
- Log:
    - Graph:
        - ref labels use configured colors
        - HEAD history is shown with bold lines
        - pushable commits are shown with bold dots
        - added low-level properties "log.graph.head.line.bold" and "log.graph.head.line.constantColor" to tweak the look of the HEAD history lines
        - uses ref-name-based coloring instead of a possible changing color for up to 6 refs
        - for selected "Show Only Selected Branches" and unselected "Include Tracked Remote Branches" still show the remote/tracked ref if it is at the same commit
    - File log:
        - removed (almost) nonsensical commands
        - own toolbar configuration
        - no switchable perspectives any more
    - Files: optionally shows unchanged directories
    - Commit details:
        - when diffing commits, show details about selected commits (so the user not just blindly compares 2 hashes), including the merge base
    - Discard is only available if Working Tree node is selected
    - perspective specific toolbar layouts
- Merge:
    - added squash merge, so the squash-merge workflow is more consistent with command line Git
    - merging from a commit uses a ref on the commit only if it is unambiguous
- Push To: is now applicable on "Other" refs, too
- Refresh:
    - faster refresh if basic state in case of many refs
    - does not display repository-related notifications when opening worktree repositories
- GitHub/GitLab: improved error message in case of missing API token
- GUI:
    - new more consistent icon set
    - in several controls: own platform-indepdenent double-click/word selection handling
- autoupdate switched to https
- replaced JGit with own code
    - git config: support for includeif
    - support for .mailmap
    - support for git replace
- Search Repositories:
    - add repositories at same (best matching) group as Add Repository would do
    - imported repositories get selected in Repositories view
    - clear repository list on new manual search
    - list of found repositories is sortable with path and selected
- Low level properties:
    - renamed "stash.*" to "bitbucketServer.*"
    - renamed "bitbucket.*" to "bitbucketCloud.*"
    - Modify or Split Commit: Modify and Modify All have been unified; there is a Continue button to get the old Modify behavior
- Windows: use "Windows-ROOT" trust store
- updated SWT to v4948r8 with support for dark theme on Windows 11
