detached 884905a

docs(changelog): add fuzzy cache system and graceful shutdown fixes to unreleased section

commit
884905ae3ae40d0c1ece11c56780835e655affba
author
Brice · · 2025-09-10 19:57 UTC
parent
200bd69
signature
unsigned
1 file · +24 -0
M CHANGELOG.md +24 -0
@@ -4,6 +4,30 @@ All notable changes to this project will be documented in this file.
44
55 ## [Unreleased]
66
7+### Added
8+- High-performance fuzzy cache system for dmenu history:
9+ - Binary serialization with memory-mapped files for zero-copy access
10+ - Trigram indexing (3-character sequences) for fast candidate filtering
11+ - Prefix trie (compressed tree structure) for prefix matching
12+ - Pre-sorted entry indices for O(1) top entries retrieval
13+ - Smart cache invalidation with filesystem persistence and background refresh
14+ - Comprehensive fuzzy matching algorithms: Jaro-Winkler similarity, Levenshtein distance, tokenized matching
15+ - Weighted scoring system combining URL, title, recency, and visit count scores
16+ - XDG Base Directory Specification compliance (cache stored in state directory)
17+ - Atomic operations for concurrent access control
18+ - Dependency injection using interfaces and gomock for testing
19+
20+### Changed
21+- Dmenu performance dramatically improved: 5 seconds → 4ms (99.92% faster)
22+- GetTopEntries optimized from O(n log n) to O(1) using pre-sorted indices
23+- Cache build time reduced to ~300μs for typical history datasets
24+
25+### Fixed
26+- Eliminated O(n log n) sorting bottleneck on every dmenu call
27+- Memory-efficient compact entry storage with minimal footprint
28+- Concurrent cache access with proper read/write locking
29+- Process no longer hangs when closing window with Cmd+Q or window close button - implemented proper GTK4 `close-request` signal handling and OS signal handling for graceful shutdown
30+
731 ## [0.3.0] - 2025-01-11
832
933 ### Added
@@ -4,6 +4,30 @@ All notable changes to this project will be documented in this file.
4 4
5 ## [Unreleased]5 ## [Unreleased]
6 6
7+### Added
8+- High-performance fuzzy cache system for dmenu history:
9+ - Binary serialization with memory-mapped files for zero-copy access
10+ - Trigram indexing (3-character sequences) for fast candidate filtering
11+ - Prefix trie (compressed tree structure) for prefix matching
12+ - Pre-sorted entry indices for O(1) top entries retrieval
13+ - Smart cache invalidation with filesystem persistence and background refresh
14+ - Comprehensive fuzzy matching algorithms: Jaro-Winkler similarity, Levenshtein distance, tokenized matching
15+ - Weighted scoring system combining URL, title, recency, and visit count scores
16+ - XDG Base Directory Specification compliance (cache stored in state directory)
17+ - Atomic operations for concurrent access control
18+ - Dependency injection using interfaces and gomock for testing
19+
20+### Changed
21+- Dmenu performance dramatically improved: 5 seconds → 4ms (99.92% faster)
22+- GetTopEntries optimized from O(n log n) to O(1) using pre-sorted indices
23+- Cache build time reduced to ~300μs for typical history datasets
24+
25+### Fixed
26+- Eliminated O(n log n) sorting bottleneck on every dmenu call
27+- Memory-efficient compact entry storage with minimal footprint
28+- Concurrent cache access with proper read/write locking
29+- Process no longer hangs when closing window with Cmd+Q or window close button - implemented proper GTK4 `close-request` signal handling and OS signal handling for graceful shutdown
30+
7 ## [0.3.0] - 2025-01-1131 ## [0.3.0] - 2025-01-11
8 32
9 ### Added33 ### Added

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 8

Tags 42

↑↓ moveenter openesc close