Skip to content

Add Name / Size / Date sorting and ascending/descending controls - #3

Merged
lovitus merged 4 commits into
mainfrom
codex/name-size-date-sort
Sep 21, 2026
Merged

lovitus merged 4 commits into
mainfrom
codex/name-size-date-sort

Conversation

@lovitus

@lovitus lovitus commented Sep 21, 2026

Copy link
Copy Markdown
Owner

Requested feature

Both Windows file panes now offer Sort: Name / Size / Date plus an Asc / Desc button. Name defaults to A-Z, size to largest-first, and modification date to newest-first. Reverse is available for every key. Folders stay first; unknown metadata stays last; byte counts and timestamps are compared numerically with deterministic name tie-breaks.

Sorting preserves selected names (not obsolete list indexes), including when sorting the inactive pane. The Hash/transfer/rename/delete selection remains unchanged. Each pane's key and direction survive refreshes and navigation. Listing updates and sort changes are serialized on the UI thread to avoid background-refresh ordering races.

Verification

Portable unit tests, vet and five race runs passed locally and in the source-integration job. Added native Windows executable tests for all keys and directions, both panes, quoted/Unicode names, numeric metadata, selection/hash preservation, independent panes, refresh and directory navigation. Existing hash regressions remain enabled. Windows CI runs both executable scenarios five times, using temporary files and loopback SSH only.

Release

Requests v2.0.16 through the existing CI-gated release workflow after merge. Both Linux and Windows CI must pass on the exact main commit before tagging; the published Windows amd64 executable is then downloaded, checksum-verified and tested for sorting and hashing. Linux amd64 is downloaded and smoke-tested. Other targets are built by the existing release pipeline. Temporary staging helpers are not in the final diff.

@lovitus
lovitus merged commit 528ba0c into main Sep 21, 2026
2 checks passed

lovitus commented Sep 21, 2026

Copy link
Copy Markdown
Owner Author

Completed: sorting released as v2.0.16 and the published binary verified

Release v2.0.16 is published, not a draft or prerelease. Feature merge: 528ba0c0a1a6b36daec9844833ac2074e09cd7f6. Final tested/tagged commit: 4298b808fb714f02966561f61a2edd95f7e58ede.

Both panes offer Name / Size / Date with Asc / Desc. Defaults are A-Z, largest-first, and newest modification-date first. Folders remain first, unknown metadata last. Sorting preserves selected names, keeps panes independent, and retains the chosen key/direction through refresh and navigation.

Final verification

Check Result Evidence
Linux full suite, reconnect/forwarding E2E, race detector and five-repeat stability suite PASS CI 35557031182
Windows GUI unit tests, amd64/arm64 release-mode builds and extracted amd64 executable tests PASS Windows CI 35557031181
Sorting GUI/SSH scenario, hashing GUI/SSH scenario and native-buffer regression 20/20 each, no failures; 159.402 seconds total Same Windows CI, gui-test.log artifact
Existing release pipeline, all platform archives, Linux packages and package repositories PASS Release 35557368422
Downloaded published Windows amd64 ZIP: checksum, version, sorting and hashing through actual native controls and loopback SSH PASS; 10.480 seconds for tests Published-binary verification 35557031289
Downloaded published Linux amd64 archive: checksum and version execution PASS Same published-binary verification run

The sorting executable test covers all three keys in both directions in both panes, numeric size/date ordering, folders first, quoted/Unicode names, preserved selections, unchanged inactive pane, hashing the selected filenames after a reorder, refresh, and entering/leaving a directory. Existing six-algorithm hash tests remain enabled.

Intermittent test-driver failure resolved, not bypassed

The first main run found an intermittent empty Clear caption in the pre-existing hash test driver. Its SendMessage wrapper passed native output buffers as ordinary uintptr arguments, which could become stale when the Go stack grew. A new native STATIC-control regression reproduced an empty caption on the first trial with the old wrapper; the escape/lifetime annotation then passed 20 runs of 16 fresh-stack reads. Before/after reproduction. No feature assertions were removed and publication stayed blocked until both final CI jobs passed.

Verified published Windows ZIP:

da91895aef93d773d3e50d03d9a76e12824a3a1dfae2d2f8d1b459a52c717fc9  flyssh-2.0.16-windows-amd64.exe.zip

Runtime GUI testing is Windows amd64. Windows arm64 and other release targets were built, not all executed on their native architectures. Linux amd64 received the downloaded-binary smoke test. Tests used temporary fixture files and loopback SSH, not personal servers/files. Screenshots, full logs, version and checksum evidence are in the published Windows validation artifact.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant