Releases: Sambigeara/fuzzynote
v0.25.5
v0.25.4
v0.25.3
v0.25.2
v0.25.1
v0.25.0
Eventlog -> Tree CRDT refactor
Major changes to underlying CRDT mechanism.
Changelog
- fc20aed Add brute force migration from old CRDT schema to new. Move legacy code to separate file
- bba2eef Basic test-suite now working with new CRDT structure
- a847739 Bring tests into working order after a period of neglect
- b51db64 Btree+linked WIP: basic range of tests now working
- 891377f Btree+linked lists implementation in progress, out-of-order Update seems functional
- e9c1348 Bypass eventChan consumer if using custom consumer for tests
- 685ef07 Change filename crdt -> events
- 49bbaf7 Change tree node children to DLL. Fix Move* operations by correctly moving parents
- fa5dcc0 Comment out debug code cos it's preventing tests running and I don't need it right now
- 4efd579 Enabled some tests. Disabled one broken one. Test state cleanup still inconsistent
- 2c69295 Fix BuildWalFromPlainText
- c1e247b Fix Paint newPos return
- fce9c13 Fix Undo tests
- 9fa40a8 Fix out of order add child item state. Other tidying. Added more (currently broken) tests.
- fe75ee4 Fixed case with PositionEvent preceding any UpdateEvent (node is now hidden, rather than empty and active). Tidied more tests
- 2bd3875 Fully functioning CRDT??
- 2f4864e Further progress
- 9724c93 Merge pull request #93 from Sambigeara/listitem-crdt
- 08a3d55 Minor tidying pre btree+dll approach
- 1355e37 Moved latest event caches from DBListRepo to crdtTree
- ba3a3a1 Only set processed wal cache after successful processing of wal in
Replay
- 956fb15 Preemptively remove redundant compaction code
- 677a285 Re-enable processedWalCache in pull. Fix no sync scheduling if auth fails
- f0db366 Release: v0.25.0
- 7aeb5a4 Revert back to randomly generated wal name, rather than checksums (given wals generated from the trees are non-deterministic due to iterating over event maps)
- 0733ce3 Revert to lamport ts's. Gather fix. CRDT node resolution fix
- 17fec2e Started implementing orphan cache btree with tests
- 1864249 Started to integrate new DanM CRDT implementation
- fd95499 Tidy public service API. Add atomicity into Undo/Replay ops by grouping events
- 20df87f WIP: Reenable Gather. Refactor Pull.
- 64c23e0 WIP: eventlog->ll CRDT refactor. processEventLog rewrite. etc
- 712238a all permutation test case generator. more fixes
- 8087ace more fixes
v0.24.1
Changelog
- dc2f3b9 Add README note for web-app
- 18a0e83 Fix nil pointer deref on URL copy in search line
- 39afb35 Fix state update event trigger again (it is required on flush too, to trigger change back to "in sync")
- b328a9b Merge pull request #95 from Sambigeara/fix-search-url-open
- bb0c838 Release: v0.24.1
- c0721e6 Update README.md
v0.24.0
Changelog
62ea0d6 Active friends support
410a52c Don't bother attempting request with no ID token set
50a4f02 EmitCursorMoveEvent is now triggered from the client specific code, rather than the common service client code
f6e8b6f Expose SyncState API
dd13ada Fix repeating pull scheduling by using a buffered channel (as producer/consumer run in the same thread)
2fa8231 Fix state update event trigger (trigger from each input event rather than the push ticker)
3a00c3c Handle pending friends in addition to active friends
ae6fc60 Prevent empty strings being sent to remote wal delete by not sending underlying array capacity
c220c58 Reduce websocket event bucketing interval
5571ede Release: v0.24.0
091c7e6 Websocket optimisations and targetted refresh
v0.23.0
v0.22.0
Changelog
ee145ac * GetCommonSearchPrefixAndFriends is now public
63735cd Account for multiple spaces in fzn_cfg lines by using strings.Fields
66aae00 Add basic SetText event type to allow full text override of ListItem (used in web client)
89ed748 Add ensureScheme bool for public MatchFirstURL function, to allow matching and return on less strict URLs
29ebe0d Add match pagination support (#83)
793d45b Aggregate incoming websocket events and publish to walChan when available, to avoid backlog of events and numerous pointless replays
79bf09e Can now bypass Match call during HandleInteraction to prevent unnecessary computation (relevant for the web browser). Added another public interface to retrieve the state of a listitem at point in time
4e5c5ea Change default search behaviour to Full match (without =
). Fuzzy search now triggered by preceding ~
1bb5354 Collaborator line parsing optimisations
154bb2c Compaction fix and gather optimisation
c7e8656 Create common ping function, and use it to retrieve user email on web start (only relevant if initial auth is done via ID token, and local user is not known/available)
931abbf Delete on search group now only deletes currently selected search group
1c828e2 Disable compaction
dd0807f Disable initial local load so full web load occurs in first iteration (as Replay is the most expensive part so we want to minimise calls)
9acbb37 Do an initial remotes cloud sync on startup
e7c8502 Don't bother removing local client from friends cache when triggering friend state change
9ac4e09 Ensure case insensitivity on friend cfg mutations, and when sharing lines
9cbeb0b Ensure friend search groups are generated from set intersection of friends across lines
5df230d Ensure moving hidden item does not unhide
1f22a96 Ensure newer wal schema versions aren't picked up for (broken) processing
c6dcd15 Escape user email within fzn_cfg regex (fixes emails with +
etc not being matched)
39fc43a Expose GetListItemNote function that accept listitem key and returns note if item available
fc0b346 Expose SaveListItemNote and EmitCursorMoveEvent funcs
06e3c6c Fix Delete->Undo->Redo breaking bug by updating undo/redo log event to reflect updated creation times
d78d9e1 Fix Redo on Add (resulting in a Delete) causing nil pointer deref
798c887 Fix SaveListItemNote
eee52af Fix pull
loop wait timer race condition
3c47c46 Fix and re-enable friends cache reset on full Replay
c2affcb Fix bug causing old (pre auto email append on new item creation) lines to not push to the owned web remote
814bfe1 Fix bug that occurs with enabled s3 bucket due to local and s3 walfiles both incorrectly generating the same empty stub uuid via GetUUID() (and therefore overriding in the walfile maps)
9c9ec16 Fix bug where Updates on previously shared lines append the previous friend email into the line
e348c4e Fix bug where whole line == @Friend causes inconsistent behaviour
c817fef Fix cfg lines not emitting to remote on line copy/paste (due to omitted self email address in rawline)
b77cbaf Fix delete->undo->redo on remote origin item causing nil pointer deref
24ac4a8 Fix handling of duplicates when establishing if a line is already processed in repositionActiveFriends
47edb9c Fix item copy when userClientSearch is enabled
fac0d65 Fix move up/down when useClientSearch
e4360fe Fix nil pointer deref on ctrl-d on empty post-start search line
d25407d Fix non-web usage initial sync (not triggering without input events in client)
9659fae Fix overlapping bottom line in terminal client
c20c971 Fix remote Undo-on-Delete race condition bug
c874b1c Fix wasm oom (#91)
fd04602 Fix {d} entry offset on listitem lines
dd5d3cc Fixed sync interval race condition
10f8bd6 Force lower case when storing email
d0d755b Friend api refactor (#87)
ff9e19b Full E2E friend/remote cloud support
32e0ba4 Gather optimisations
6a878f0 Generally swopped out poor usage of Sprintf for string concatenation where easy/appropriate
62ba809 Got rid of redundant local primary.db file and UUID management
293a2fe Gracefully exit websocket consumer goroutine on web refresh to avoid infinite loop and CPU destruction
b316ee0 HandleInteraction now accepts search array and visibility boolean as arguments to allow clients to handle themselves
346a3b2 Improve email matching regex for fzn_cfg lines
2f98283 Improve web connection/token handling
d8a4f48 Improvements to debug function: prettier printing
82220df Improvements to the friend update mechanism, including atomicity to fix race conditions
91bcf0d Increase gather window to 30 seconds, and reduce compaction multiple to every other gather
dcd90e3 Increase sync intervals
802df49 MVP: Basic line email based collaboration
5190dc2 Main service functions now accept ListItems as arguments rather than indexes
72b52bd Make GetUnsearchedFriends a common public API
fed9866 Make common string prefix retrieval case-insensitive
4271977 Match will no longer match implicitly on local client email
fc92df1 Merge pull request #85 from Sambigeara/user-mapped-remotes
514c764 Minor misc tidyup
7812494 More explicit closing of various sync loops/goroutines with cancellable context passed from top level Start() function
5087a48 Move duplicated variable to service package
b64ffb0 On gather, push the full log to every non-owned walfile to ensure that any missed events are guaranteed to eventually get pushed
1a42bf8 On stop with purge (e.g. logout for web client), we wait for un-flushed state to be pushed to remotes prior to terminating
d67142d Only increment currentLamportTimestamp in processEventLog function, as this is a guaranteed path (and otherwise, local origin events end up incrementing by 2)
c24f89e Only locally replay wals during gather if not already processed
760139d Only run compact every Nth gather
0a885e7 Only set searchline on selected items if new searchgroups are returned
cee5126 Only take longest common prefix on line if there's more than one line
f4588a7 Optimise the pull algorithm by:
bdf69cb Optimised flushPartialWals by using common byte wal for owned wal files. Removed push to all wal files on start and re-enabled initial gather (as this covers this case)
8ccdb6b ParseOperatorGroups is now a public function. Operator group parsing removed from backend for SetText events (these are now handled in the client)
9700aaf Pass walfile uuid to websocket goroutines to prevent buggy websocket event behaviour and unintentional sharing of notes!!
771a36c Persist event friends (#89)
99c09ad Populate processed events cache after replaying events (on initial run), to ensure friends cache is fully populated
09a62d6 Pull now merges all new wals prior to publishing to the walChan
e3c5504 Pull optimisation. Slice pointer cleanup. + misc
d089496 Push optimisations
97fad64 README updates
a68f450 Release: v0.22.0
ef27cb6 Remove commented out Ticker code
94a0dc2 Remove friends map mutex because map access won't occur concurrently
e596c8c Remove login prompt flow logic. Removed references to sync modes
bf41e90 Remove pointless ctx interfaces
30098d1 Remove redundant remote management code
ae72e8d Remove unused s3 walfile attributes
f41235d Remove websocket event aggregation, seems to be pointless
8bbbf69 Removed friend type and states as no longer required
6011f20 Removed per-walFile processed events caches - now just stores list of acknowleded walFiles against an eventLog key
876f2ae Removed wait groups from flushPartialWals as the current implementation was causing deadlocks to manifest when the app was under higher load
d9ed772 Reset friends cache on full replays
7e15b14 Return early from generateFriendChangeEvents for irrelevant events
a20a733 Return early from repositionActiveFriends if line is already ordered, avoiding expensive string building
3001a80 Revert "Remove friends map mutex because map access won't occur concurrently"
cff606e Revert "gather
optimisations"
7fa7fce Save commented convenience code for inspecting failed compactions
0b84a82 SelectedItems now uses curItem.Key() as the key, rather than an index
57bf956 Simplify the service/client interface, and optimise (#84)
f22bd68 Slight tidyup of friend line/offset generation function
a783bff Start of visible line ^fzn_cfg:friend ...$
now enforced when matching friend config lines
5c70778 Store walfile maps by value rather than pointless by pointer
e402198 String optimisations:
2076282 Temporarily disable friends cache reset as it leads to strange behaviour
67701f3 Unify undo event logs (#88)
b8278e0 Use defer
on friend map mutex unlock to guarantee freeing up
3a66557 WIP: 1:1 user/remote refactor
f4b8787 WIP: basic initial support to match and share based on emails in the ListItem Lines. Currently won't recognise remote events on local origin items
dec3cf3 Wait for web connection to be established prior to initial sync
3cc82fa Wal checksum optimisation (#90)
b150424 Wal dll replay optimisation (#92)
7a98ce3 Wal integrity checks now act on original ListItem state rather than a copy, allowing for true equality checks
acdb58a Wasm browser logout Purge support
7a64055 Web connection keep-alive
cf42d5a Wrap WalFile map ops in RWMutex's
d289124 gather
optimisations
680d080 push
now operates on a delayable timer, rather than 5 second triggered windows (which can be expensive with some clients)
944eda0 generateFriendChangeEvents no longer waits for active web connection, so lines/friends correctly parse now in initial local load
b7e14dc getMatchedWal func now uses much more efficient strings
pkg ops rather than regex to determine @Friend:line existence
cf29a98 item key correctly set when useClientSearch is active (prevents non-matching items showing when search active on web browser
290df95 make consumeWebsocket a method of the DBListRepo type rather than the Web type, as it makes much more sense