1cf17dc151
chore: proto cleanup and simplification
...
reuse as much as possible, keep rpc messages close with their rpc,
helper struct for uuid with into() and from(). also replaced the simple
things, such as imports and struct fields
2024-02-07 01:09:28 +01:00
4ae31df3ff
chore: moved select_buffer under buffer::tools
...
needed to more appropriately subdivide feature flags
2024-02-01 17:54:56 +01:00
1ee185b5ec
feat: add auth service
...
sneaked in to help with server development
2024-02-01 17:54:36 +01:00
164e9887b8
fix: serialize uuid as string when sending
2024-02-01 03:19:27 +01:00
97061524e7
chore: remove snapshot
2024-02-01 01:58:27 +01:00
bc3df45726
fix: fetch buffers after creating
2024-01-31 23:57:21 +01:00
f7fcf8bd22
feat: implemented snapshot method and some getters
2024-01-27 11:49:05 +01:00
741a074464
feat: implemented leave workspace and list buffer users, various fixes
2024-01-25 17:05:06 +01:00
f7bd5849be
fix: removed instance module, fixed prelude
2024-01-25 03:25:45 +01:00
94a7786812
feat: workspaces and new library structure
...
Co-authored-by: alemi <me@alemi.dev>
Co-authored-by: frelodev <frelodev@gmail.com>
2024-01-25 02:13:45 +01:00
1657521356
workspace_service cleanup
2024-01-01 23:34:59 +01:00
85add1ca0d
moved some messages from workspace_service to files
2024-01-01 23:29:35 +01:00
6230371020
feat: fixed proto and tonic includes
...
Co-authored-by: zaaarf <me@zaaarf.foo>
Co-authored-by: alemi <me@alemi.dev>
2023-12-29 01:06:28 +01:00
ab982f4882
changed build method for proto and lib proto includes
2023-12-28 22:04:40 +01:00
2f0875a38f
docs: better select_buffer text
2023-11-30 03:50:32 +01:00
7ad1da0f27
chore: updated docs, getter for buf name
2023-11-30 03:41:53 +01:00
5401d837c7
feat: add timeout to select_buffer
2023-11-30 03:30:50 +01:00
9d349e1b1e
fix: remove tracing
2023-11-30 03:08:22 +01:00
3197c083bf
fix: discard empty textchanges, drain range
2023-11-30 03:04:26 +01:00
3881bb38ea
chore: improved seen mechanism
...
instead of manually handling the mutex leave it to tokio and use a fancy
generic struct with update() and check()
2023-11-30 03:03:09 +01:00
1f50f75eb4
fix: apply() panic when out of bounds
2023-11-30 03:02:13 +01:00
10e4a458ce
chore: more tests, imports
2023-11-30 03:01:59 +01:00
da44aff408
feat: added TextChange helper methods and more test
2023-11-30 00:38:24 +01:00
b4b955a39e
fix: caught textchange diff bug, added tests
2023-11-30 00:37:57 +01:00
d562e406f2
fix: moved select_buffer out of client
...
due to instance mutexing it held the lock while awaiting for events,
which is undesirable!
2023-11-28 02:22:21 +01:00
1265f716d6
chore: packed clonable handles in sub struct
2023-11-27 14:55:46 +01:00
15ad6dba55
docs: documented select_buffer
2023-11-24 12:12:38 +01:00
3bc1159ffc
feat: utility fn to convert from index to rowcol
2023-11-24 11:08:03 +01:00
488c22c0f1
fix: missing await, debug on ignorableErr, content
2023-11-24 10:43:37 +01:00
8df0b8ec41
feat: poll doesn't ever lock the RwLock
...
to make try_recv deadlocks way more rare
2023-11-23 20:45:43 +01:00
0ba2c5ccef
fix: ouch mutexes are harddddd
2023-11-17 18:38:29 +01:00
175b9c945a
fix: new approach for select_buffer
...
this is definitely bloatier but should work and not deadlock?
2023-11-17 18:28:32 +01:00
152679669b
feat: buffer controller exposes its name
2023-11-17 17:38:47 +01:00
8dc3538f32
feat: experimental select_buffer client api
2023-11-17 17:00:10 +01:00
99ba5f708d
docs: ocd
2023-11-17 05:58:12 +01:00
76e61b1abb
docs: include doc into textchange block
2023-11-17 05:53:38 +01:00
9df4594408
feat: send granular changes, added deadlocked error
2023-11-17 05:47:57 +01:00
39f2bd6ac2
docs: updated usage and references
2023-11-17 05:47:40 +01:00
5be1a7b901
fix: export woot and not OT
2023-11-17 05:46:13 +01:00
2ccb5c936b
feat: moved TextChange into api, added from diff
2023-11-17 05:45:31 +01:00
5208ff65c0
fix: don't trigger on self change, smaller siteid
...
also set woot dep rev because cache
2023-11-17 03:30:39 +01:00
ca29ee3e0f
fix: better api with TextChange, ugly fixes
...
it's pretty ugly but it kinda works? really need to do this better
2023-11-16 06:52:25 +01:00
8267e1b890
fix: other way around...
2023-11-16 06:50:55 +01:00
e7ad2723ba
fix: initialize woot with str, gen siteid from uid
2023-11-10 04:29:50 +01:00
178ececfe2
fix: remove callback from controller api
2023-11-09 05:22:16 +01:00
8686715e9d
feat: swap in our WOOT implementation
...
it's kinda crude and buggy but some things might just work?
2023-11-09 05:21:24 +01:00
c6abc33c53
fix!: removed canc from factory, impl for Arc<str>
2023-09-13 00:05:15 +02:00
5812dea19a
feat: swap cursor start/end if needed when sending
2023-09-10 23:20:07 +02:00
ed151e2213
fix: docs, tests, leftovers
2023-09-10 04:23:39 +02:00
cf80104132
docs: updated features explaination
2023-09-10 03:47:59 +02:00
59aaf8f3b6
docs: fix references
2023-09-10 03:43:46 +02:00
6fe47ff682
fix: receive and return a runtime handle
2023-09-10 03:41:18 +02:00
4ec99bab36
chore: modularized crate into features
...
by default "client" is on so that it works like before but it's possible
to cherry pick features out and (for example) only build the grpc proto
structs
2023-09-10 03:40:31 +02:00
c0892b36cd
docs: move descr directly into traits, not module
2023-09-10 03:39:44 +02:00
9040222570
docs: fix references
2023-09-10 03:06:47 +02:00
56dcf99778
fix: im dumb forgot to actually add api folder
...
also im lazy and dont want to redo last 2 commits because i wrote a ton
into last one :(
2023-09-10 03:03:49 +02:00
5277eceb01
feat: reworked buffer controller
...
basically now calling recv assumes we have locked the editor state, and
no more operations will be enqueued. this allows to safely transform and
send server operations. the way local ops are transformed and sent is
still kinda buggy but it mostly works? "dead"locks sometimes until more
stuff arrives. also buffercontroller no longer implements operation
factory, you gotta make a factory yourself
2023-09-10 03:01:37 +02:00
b2520898b5
chore: moved factory under api, restructured
2023-09-10 03:00:47 +02:00
14145ec369
fix: kind of resolved local race condition...
...
... but it became so much spaghetti that I'm not eating any more pasta
for a while
seriously tho must be resolved, maybe moving this logic completely
serverside?
2023-09-07 20:39:45 +02:00
1e3439e08e
feat: send md5 hash with rawops
...
this should have a tiny impact on performance, but should be monitored
2023-09-05 20:40:31 +02:00
fb7f4c1b31
fix: updated cached buffer immediately
2023-09-05 20:40:10 +02:00
eeececf1b1
fix: attempt to solve client edits race condition
...
basically send increments a counter and we compare that before
transforming operations, allowing to stop processing, undo and try to
receive again. This won't solve all issues but should make them much
more rare? I hope
2023-09-05 20:13:09 +02:00
ed2f6688c3
docs: mentioned Instance early on
2023-09-05 01:31:57 +02:00
4bf3c1c7a5
fix: typo
2023-09-05 01:30:07 +02:00
81bbef6072
feat: helpers in textchange to convert to rowcol
2023-09-04 03:10:33 +02:00
690a1915c9
feat: include references to buffer before and after
2023-09-04 03:09:32 +02:00
adf6009472
feat: added Ignorable Error with generic default
2023-09-04 03:08:52 +02:00
f9977f0b14
fix: don't show source code in documentation
2023-09-03 23:04:19 +02:00
1034f0482c
chore: moved controller under api module
2023-09-03 23:04:08 +02:00
9f8245a9a4
fix: ignore cursor events from self
2023-08-21 03:53:57 +02:00
5f1f43e645
feat: derive Debug for controllers
2023-08-21 02:47:52 +02:00
0cce1d1ea0
feat: added poll/try_recv to controller, fixes
...
added Default derive to TextChange, added docs for poll and try_recv
methods, implemented new functionality in controllers, using a watch
channel (or reusing if available). Fixed global being always active and
wrongly imported when inactive.
2023-08-21 02:35:56 +02:00
3e434e3103
docs: link to factory examples subtly
2023-08-20 09:19:03 +02:00
af5fb90de3
docs: small details with refs
2023-08-20 09:16:20 +02:00
7f3cba475e
docs: also test example docs for correctedness
2023-08-20 09:13:21 +02:00
7148b823e6
docs: smaller box
2023-08-20 08:37:19 +02:00
db0c696cf9
fix: added factory doctests, caught bugs
2023-08-20 08:24:58 +02:00
4764e47da5
fix: added proto docs, changed a little bit
2023-08-20 07:32:08 +02:00
87c89f940a
ci: fix don't test that
2023-08-20 07:11:42 +02:00
a68032d9e5
ci: don't test examples
2023-08-20 06:57:49 +02:00
b84cac724b
docs: add link to feature comparison matrix
2023-08-20 06:52:36 +02:00
464d58f0ee
feat: added some gifs, explained async_trait fn
2023-08-20 04:00:52 +02:00
bb10367b08
docs: fix missing colon and last warning
2023-08-20 03:36:50 +02:00
1f1e8a78ba
docs: made it even fancier and added refs
2023-08-20 03:34:48 +02:00
5d6957c9ad
docs: even better examples
2023-08-20 03:11:06 +02:00
3382ea72ea
docs: fix example
2023-08-20 01:43:28 +02:00
2facbd8f9e
chore: keep track of bug
2023-08-20 00:47:53 +02:00
2ad5d4f6b0
docs: a ton of documentation
2023-08-20 00:46:55 +02:00
1e05af6d79
feat: sync send in controller, docs, better import
2023-08-19 21:44:27 +02:00
489ade9127
feat: more stuff into prelude
2023-08-19 18:28:37 +02:00
87a1c17599
feat: both sync and async instance, sync feat
2023-08-19 18:28:27 +02:00
4562c2732b
feat: faster accessor, fix prelude
2023-08-19 05:04:25 +02:00
4f3e09abd3
feat: instance is sync and way more elegant
2023-08-19 04:37:31 +02:00
bd6132dc1e
feat: stop worker when dropping controller, unwraps
2023-08-19 04:02:21 +02:00
853d754d8b
fix: pass runtime for callback spawning
2023-08-18 04:01:58 +02:00
bbdcfe2712
feat: attempt callback impl on generic controller
2023-08-17 04:36:59 +02:00
1cc03838eb
feat: return controllers, add attach
2023-08-17 04:36:24 +02:00
463515da29
fix: pub static refs
2023-08-17 03:39:40 +02:00
fecd28165a
feat: plainer names and prefixed prelude
2023-08-17 02:58:55 +02:00
b8578a89a4
fix: inaccessible fields, pub(crate) constructor
2023-08-17 00:04:37 +02:00
f8e77f0827
feat: reworked client, added static instance
2023-08-16 23:09:47 +02:00
96217d1a1a
feat: standardized Controller and ControllerWorker
2023-08-16 18:58:42 +02:00
74faca0f25
chore: cleaned up server and lib after split
2023-08-16 18:58:11 +02:00
9a1d84bc64
chore: split cursor and buffer protos
2023-08-16 17:08:53 +02:00
8595d0c927
fix: imports, Arc<T>
2023-08-11 15:50:17 +02:00
98cae0969d
fix: remove workspace trait, add channel error
2023-08-11 15:34:04 +02:00
37e6268f0c
chore: buffer(controller->handle, client->controller)
2023-08-11 15:33:40 +02:00
5cddb27b98
feat: initial features splitting, added singleton
2023-07-30 22:58:24 +02:00
02b2588073
feat: major restructure, workspace rework, tweaks
...
all controllers use internal mutability so that they can all be put
behind Arcs
2023-07-30 17:48:55 +02:00
041acdbb94
feat: initial barebones structure for workspace
2023-07-13 01:35:18 +02:00
59a0f71754
fix: better names for delta operation args
2023-07-12 00:23:41 +02:00
ca42874590
feat: refactored and improved operation controller
...
now polling for changes returns span and text so that it's possible to
edit just the changed region. greatly improved controller internal api
with crate-level traits keeping error handling localized
2023-07-09 03:44:27 +02:00
d086997053
feat!: start+end in cursor, merged cursor structs
2023-07-05 00:09:09 +02:00
38911bdc31
feat: reworked cursor handle mechanism
...
instead of storing cursors it just streams them as they happen. instead
of just getting cursors from the controller, now you also send your
operations into it, mimicking more the behavior used for text ops
2023-07-04 22:54:25 +02:00
06523b2325
fix: factory delta with abs index and not skips
2023-07-04 00:58:56 +02:00
43634acc2c
fix: remove unnecessary async, re-exported ot, refactor
2023-07-02 23:59:04 +02:00
365811d963
chore: thanks clippy
2023-07-01 20:22:39 +02:00
b9ab3403dd
chore: aligned match case, renamed to unwrap_or_warn
2023-07-01 14:12:33 +02:00
2c695a41f6
fix: ignore errors better, unified op processing
2023-07-01 14:00:50 +02:00
107c4673ef
chore: separated modules in a cargo workspace
2023-04-21 18:47:10 +02:00
c5d171a641
feat: add delta (replace with offset) in factory
2023-04-20 04:36:04 +02:00
97be3cf4ce
fix: send mock values to unlock and stop workers
2023-04-20 04:27:11 +02:00
6fe92b9e8e
chore: better logging of workers stopping
2023-04-20 04:26:59 +02:00
ebf25fee44
feat: cleaner way to detach and stop workers
...
actually the stopping channel doesn't fit super well inside the
OperationController itself since the tasks are handled above that
abstraction layer, but storing it inside makes my life incredibly
simpler so im gonna do that for now
2023-04-20 03:47:35 +02:00
1bde0d414e
chore: separated op processor and controller
2023-04-20 03:25:07 +02:00
243f23a04b
feat: propagate range of buffer affected by change
...
added some const functions to calculate leading and tailing noops, made
apply() and process() return Range<u64>. actors implementation is still
awful but will do them properly in the future
2023-04-19 20:13:36 +02:00
7f41127f8b
chore: import fixes
2023-04-19 19:18:48 +02:00
3e95ff9971
chore: at least log ignored errors
2023-04-19 19:18:31 +02:00
a843cf6cb9
fix: force unix fileformat
2023-04-19 18:18:13 +02:00
3609dbfa84
chore: finished reimplementing features modularly
...
now everything that worked in 0.2 seems to work again, and should
actually be better. plus, merging differences is done properly and thus
should be way more reliable
2023-04-19 04:18:22 +02:00
b8aa7d5fce
fix: temp value was dropped
2023-04-18 21:46:19 +02:00
ead5ffc49c
chore: struct for storing cursor states
2023-04-17 14:57:06 +02:00
35935d88a4
chore: rewrote the codemp client using new traits
2023-04-17 14:56:25 +02:00
eafbc41bd1
chore: split op factory into processor and factory
2023-04-17 14:56:00 +02:00
75e397854b
chore!: initial work on refactoring client+factory
2023-04-16 03:24:18 +02:00
44d0b3594c
fix: more precise callbacks, catch errors in cbs
2023-04-13 03:23:57 +02:00
a8d0cb0666
fix: don't send noops
2023-04-13 03:23:44 +02:00
eeb72545c6
feat: async opseq queuing and transforming
2023-04-13 02:19:31 +02:00
56db49746d
chore: commented out unused stuff for now
2023-04-13 00:54:37 +02:00
07b8e3a517
fix: friendlier conn addr and logging
2023-04-13 00:54:01 +02:00
ftbsc
f7cba63456
feat: allow setting remote debug via vim global
2023-04-12 18:12:50 +02:00
ftbsc
1a0c649845
feat: allow tls
2023-04-12 18:12:38 +02:00
ftbsc
7ae5329ce5
feat: added whole content diff to opseq
2023-04-12 16:58:28 +02:00
ftbsc
0f5e4c7f8d
chore: small style tweaks
2023-04-12 16:58:00 +02:00
c3d7889e23
fix: removed some log prints
2023-04-12 05:45:37 +02:00
38bf411d54
fix: comparisons with null, hardcoded path
2023-04-12 05:23:20 +02:00
77eae35bc3
feat: allow to request remote tracing via socket
2023-04-12 05:00:37 +02:00
a872c39d7f
fix: properly print logs in nvim
2023-04-12 05:00:18 +02:00
2fde9659db
feat: parse CLI args in server too
2023-04-12 04:59:33 +02:00
a52f74d092
fix: move cursor in insert, error if not connected
2023-04-12 04:21:02 +02:00
8ca5128ca9
feat: very crude cursor implementation
2023-04-12 03:29:42 +02:00
e471a6dbc9
chore: return nil
2023-04-12 01:38:47 +02:00
55c4ddb93a
feat: improved Lua API for plugin
...
added commands to connect/disconnect, jobid is kept internally, commands
to hook/unhook callbacks, refactored stuff a little
2023-04-12 01:38:38 +02:00
c1b7073e89
fix: better error handling
2023-04-12 00:33:14 +02:00
dd0acdad2f
fix: map errors
2023-04-12 00:32:56 +02:00
3827ab066d
fix: one factory per buffer, create on attach
2023-04-12 00:32:39 +02:00
1eec71f3b2
fix: callbacks local to buffer, local bufnr + path
2023-04-12 00:31:59 +02:00
8e2f41a1c8
chore: made OperationFactory async and mutexless
2023-04-11 22:35:37 +02:00
0a464296cd
feat: added Join/Share commands
2023-04-11 22:35:27 +02:00
b891c0d2f0
feat: added sync rpc
2023-04-11 22:35:10 +02:00
228f6a54f0
fix: catch some edge cases
2023-04-11 17:12:22 +02:00
de153c798c
fix: retain ending chars
2023-04-11 14:24:53 +02:00
ca4f68c5ec
feat: added delete fn, handle CR and BS
2023-04-11 14:24:40 +02:00
532de6639f
feat: pass back stderr
2023-04-11 14:02:45 +02:00
f1f65aafdb
chore: cleanup nvim main
2023-04-11 14:01:55 +02:00
b12b6dc68f
feat: added reference client in lib
2023-04-11 14:01:27 +02:00
2472164350
chore: removed cli client
2023-04-11 14:00:49 +02:00
4f43573aa0
feat: basic nvim RPC client
2023-04-11 06:20:40 +02:00
9bf12b8bc3
feat: add user to msgs, pass msgs directly
2023-04-10 20:24:11 +02:00
14e9a1e86e
feat: added Operation Factory struct
2023-04-10 01:41:22 +02:00
ebbca24a99
chore: dramatically simplified everything
...
working on this was really hard, so i'm making simple things first.
removed almost everything except bare buffer changes, and not even done
in a smart way, but should be a working PoC? now trying to make a
working client to test it out and actually work on a real prototype
2023-04-07 03:10:45 +02:00
5ff2166fa2
chore: warnings be gone
2022-10-18 02:28:16 +02:00
9bbd30a5f8
feat: super barebones synched cursor across clients
2022-10-18 02:22:04 +02:00
60e53b4a94
feat: made them all UUIDs because I hate myself
2022-10-18 02:20:31 +02:00
f596df73c4
chore: moved stuff into a common library
2022-10-18 02:19:15 +02:00
e9500afd55
feat: did some plumbing for events and cursors channels
2022-09-24 01:14:12 +02:00
7f4696f164
feat: initial work on auth interceptors
2022-09-17 21:46:40 +02:00
711c7ce7c6
chore: mark unused variables to suppress warnings
2022-09-08 00:19:01 +02:00
57dc0b25e9
fix: removed useless mut
2022-09-08 00:18:48 +02:00
911ed4e212
chore: added events to modules, added some docs
2022-08-29 02:50:14 +02:00
1f32834572
fix: send buffer events
2022-08-29 02:49:24 +02:00
851781b041
feat: made statemanager more friendly in its usage
...
basically removed the need to manually compose messages and added
methods to handle it.
2022-08-29 02:48:09 +02:00
824cb62933
chore: moved responsabilites around again
2022-08-28 23:41:11 +02:00
6fd0ab4944
feat: reworked workspace and workspaceview
...
now there are handy methods that hide the underlying message passing
2022-08-28 23:40:15 +02:00
692c3f4977
fix: some tweaks to make rust-analyzer happy
...
stuff used to make sense but I changed some things below. Now I need to
redo my plumbing, but I don't want my language server going crazy.
2022-08-28 23:38:45 +02:00
5bb535385b
feat: added events struct
...
there's also quite some commented out code. I first approached the
problem in a OOP way, but that's not the right way for rust. Keeping
that code just to remember my vision.
2022-08-28 23:36:46 +02:00
18d86020c0
fix: add getter to state workspaces, imports fix
2022-08-03 18:51:56 +02:00
e030b9a48f
feat: added some getters to state obj, implemented /buffers
2022-08-03 15:09:15 +02:00
7a4e69377d
fix: some temporary fixes to make it compile
2022-07-31 13:47:55 +02:00
f854b902a1
feat: split services in subdir and separate files
...
Having them all in main.rs was becoming unmanageable
2022-07-31 13:47:18 +02:00
8316439a3e
feat: moved state managers under 'actor' dir
...
Since we're building (sort of) around the actor model, might
as well sort stuff that way.
2022-07-31 13:46:21 +02:00
2287793cd9
feat: added tracing, added buffer_worker
2022-07-30 03:02:38 +02:00
60e6f4640c
feat: added buffer object, reworked objects with internal worker
2022-07-30 03:02:04 +02:00
97e9b1f737
feat: initial work on Workspace buffer edit proto
...
Co-authored-by: f-tlm <f-tlm@users.noreply.github.com>
2022-07-21 10:40:43 +02:00
89588d7a8c
chore: imports
2022-07-16 03:46:16 +02:00
ede7a7758c
feat: made nvim client a feature (for now, enabled by default)
2022-07-16 03:46:02 +02:00
2195cb28b8
feat: implemented basic create/sync client
2022-07-16 03:45:32 +02:00
420ca3e224
feat: implemented basic session flow on server
...
Co-authored-by: f-tlm <f-tlm@users.noreply.github.com>
2022-07-13 01:58:34 +02:00
7272879180
feat: state manager with message passing
...
Co-authored-by: f-tlm <f-tlm@users.noreply.github.com>
2022-07-13 01:58:01 +02:00
773a90b94f
feat: reworked operation matching with enum
...
Co-authored-by: f-tlm <f-tlm@users.noreply.github.com>
2022-07-13 01:55:31 +02:00
934917ffa2
fix: remove print, answer with command
...
Co-authored-by: f-tlm <f-tlm@users.noreply.github.com>
2022-07-13 01:55:04 +02:00
3425c57177
fix: neovim rcp call and notify, added test buffer command
2022-07-11 02:08:37 +02:00
c213536c3b
feat: implemented connection and state managers
...
Co-authored-by: f-tlm <f-tlm@users.noreply.github.com>
2022-07-10 23:47:14 +02:00
6e26282faf
build: finished following tonic tutorial
2022-07-10 20:44:43 +02:00
65300edf90
build: initial commit with tonic stubs
2022-07-10 19:01:56 +02:00