Commit graph

549 commits

Author SHA1 Message Date
cschen
d22446ee10 fix: this time is the good one 2024-08-14 16:31:28 +02:00
cschen
6c30699acc Revert "(to alemi: always has been) fix: try now lmao."
This reverts commit 1b5b9e74bf.
2024-08-14 16:15:42 +02:00
cschen
1b5b9e74bf (to alemi: always has been) fix: try now lmao. 2024-08-14 16:07:19 +02:00
2916848165
fix(lua): its all async now 2024-08-14 15:56:36 +02:00
4bed9d7432
fix: cursor controller backpressure
Co-authored-by: cschen <cschen@codemp.dev>
2024-08-14 15:56:10 +02:00
413247f9b4
fix: update local version on send
also keep a branch on which we merge editor's changes, which kind of
solves our race condition thing

Co-authored-by: cschen <cschen@codemp.dev>
2024-08-14 15:55:18 +02:00
3346f1c526
feat: Controller::send is now async
needed because we want this to be acked, no longer a "fire and forget"
action

Co-authored-by: cschen <cschen@codemp.dev>
2024-08-14 15:55:06 +02:00
cschen
ef9da1740a chore: explaining an extra thing 2024-08-14 13:34:01 +02:00
cschen
4d65b2db7d fix: error in the worker that merged more operations than needed. 2024-08-14 13:32:18 +02:00
bd6423856b
chore(java): try_recv async 2024-08-14 00:27:26 +02:00
a9d713fd75
feat: async try_recv, delta_request
Co-authored-by: alemi <me@alemi.dev>
2024-08-14 00:24:32 +02:00
ada6ed49c1
fix(java): async content(), moved select_buffer 2024-08-13 21:58:40 +02:00
ab9c6530cd
fix: better try_recv mutex logic for cursor ctrl 2024-08-13 18:05:46 +02:00
2a016a6619
fix: add .content() back
except now its async and can fail and basically requests the worker to
generate the content for us on demand

Co-authored-by: zaaarf <me@zaaarf.foo>
Co-authored-by: cschen <cschen@codemp.dev>
2024-08-13 18:03:20 +02:00
8874f31eeb
fix: add from error for oneshot channel
this is getting a bit overused...

Co-authored-by: zaaarf <me@zaaarf.foo>
Co-authored-by: cschen <cschen@codemp.dev>
2024-08-13 18:00:17 +02:00
cschen
9acb7b6007 wip: Some attempts at getting DT to work with buffer controller and buffer worker!
This attempt doesn't use a ref to the crdt! But uses an extra channel!
2024-08-13 00:36:09 +02:00
781a130c62
chore: moved tools into ext 2024-08-10 16:13:16 +02:00
9c6036da56
chore: export CodempEvent 2024-08-10 16:12:28 +02:00
6bf541028d
feat(java): replace all expect/unwrap with throwing JNIException 2024-08-10 02:45:20 +02:00
53503ae117
feat(java): glue for workspace events 2024-08-09 14:11:13 +02:00
cschen
264dd319d3 fix(python): fixed the type hints, adapted glue to latest workspace, uniformed names in the glue
chore: forgot a file
2024-08-09 09:14:35 +02:00
29ffba3309
chore: remove unused deps and imports 2024-08-09 00:49:31 +02:00
61be0009ba
fix: removed InternallyMutable::wait
its broken in weird ways, just dont use it that way
2024-08-09 00:40:46 +02:00
a8b4eab445
feat: api struct for event
Co-authored-by: zaaarf <me@zaaarf.foo>
2024-08-09 00:40:33 +02:00
07dd964466
fix: improved workspace events channel
Co-authored-by: zaaarf <me@zaaarf.foo>
2024-08-09 00:39:58 +02:00
cschen
ad881ab067 chore(python): remove old monolithic ffi 2024-08-09 00:01:56 +02:00
cschen
99cbebb4f8 fix(python): stragglers files 2024-08-09 00:00:21 +02:00
cschen
7e8a46f9b8 feat(python): new leaner glue, up to date 2024-08-08 23:58:45 +02:00
754b88fd73 feat: javascript glue
Co-authored-by: alemi.dev <me@alemi.dev>
2024-08-08 23:25:02 +02:00
f699d2e8fe
feat: jank workspace event poll/get 2024-08-08 22:01:08 +02:00
f2be80427a
chore: move stuff around
im not sure about getters on Services, nor names, but ehh
2024-08-08 21:58:20 +02:00
f6edc2cbb0
feat(lua): add runtime driver stop control 2024-08-08 21:56:36 +02:00
0ca5165b73
feat: improve InternallyMutable 2024-08-08 21:55:52 +02:00
f14a8c40a5
feat: add codemp user to api
super stub but whatev
2024-08-08 21:55:43 +02:00
0aa7690533
feat: lua leave, detach, delete 2024-08-08 04:42:11 +02:00
e736646b8c
feat: add close_client helper in lua 2024-08-08 04:14:24 +02:00
898ab22e22
feat: add fn to get all workspace names 2024-08-08 04:14:13 +02:00
793cebb787
feat: add static client store for lua
so we can access clients across lua threads
2024-08-08 04:02:56 +02:00
775cde1d7f
feat: CodempClient is also an inner Arc<> 2024-08-08 03:59:28 +02:00
e1ba683fd0
fix: updated lua ffi
now the client is given to lua
2024-08-08 02:48:31 +02:00
a9bab2bb03
feat: java glue leave_workspace, detach, new connect 2024-08-08 02:45:52 +02:00
893c3d31e0
feat: better auth: multiworkspace, proper flow
Co-authored-by: zaaarf <me@zaaarf.foo>
2024-08-08 02:30:34 +02:00
59d8a4640d
fix: proper lifetime for cursor, renamed methods
Co-authored-by: zaaarf <me@zaaarf.foo>
2024-08-08 02:29:45 +02:00
515cab331c
chore: cleanup, reorganizing java glue 2024-08-08 00:29:54 +02:00
487422eb99
feat: added detach buffer and leave workspace
Co-authored-by: zaaarf <me@zaaarf.foo>
2024-08-08 00:28:35 +02:00
6e9727128d
feat: controllers now implement stop
Co-authored-by: zaaarf <me@zaaarf.foo>
2024-08-08 00:28:15 +02:00
cd8f7cd5c5
feat: internally mutable
Co-authored-by: zaaarf <me@zaaarf.foo>
2024-08-08 00:27:24 +02:00
4de09cb164
chore: de-arced a bit
Co-authored-by: zaaarf <me@zaaarf.foo>
2024-08-08 00:25:22 +02:00
ffa8d8ea82 Updated Javascript Glue with Napi
Co-authored-by: alemi.dev <me@alemi.dev>
2024-08-07 23:06:33 +02:00
e4b6e82485
docs: fix pic 2024-08-07 17:34:46 +02:00
6212718e99
feat: recv, buffer_list, tweaks, gradle 2024-08-07 10:22:01 +02:00
84996489e1
feat: working glue
Co-authored-by: alemi <me@alemi.dev>
2024-08-07 02:43:25 +02:00
4bb35f1727
feat: buffer controller, cleanup 2024-08-07 01:44:27 +02:00
329287df53
feat: more work on java ffi glue
easy when you todo() the hard vec<string>
2024-08-07 01:34:13 +02:00
490670b8bc
feat: try_recv CursorController
Co-authored-by: alemi <me@alemi.dev>
2024-08-07 00:38:45 +02:00
7d90793467
feat: get_buffer, get_cursor, get_workspace_id 2024-08-07 00:00:24 +02:00
72e86a8079
fix: lua use try_init for logging 2024-08-06 23:56:28 +02:00
13f862a0e8
chore: some glue code for jni
made the simple ones :p
2024-08-06 23:55:57 +02:00
e2ae53b35f
feat: initial work on jni-rs java glue 2024-08-06 23:30:16 +02:00
cschen
df95b20728 Merge remote-tracking branch 'origin/glue' into glue 2024-08-06 23:28:39 +02:00
cschen
bdbd94879b feat: added maturin wheel building config as completely separate "project",
feat: added stubs for python glue, bundled in the wheel,
feat: the python glue now uses less stupid names.
2024-08-06 23:28:09 +02:00
2cc23f2ec2
feat: lua logger improvements
distinct fn for setup and get, setup is idempotent
2024-08-06 23:02:28 +02:00
cd9a2d6247
fix: lib name is codemp_lua, override addr via env
use CODEMP_SERVER_ADDRESS
2024-08-06 23:01:44 +02:00
05a4c88967
fix: controller with 1 generic 2024-08-06 23:00:45 +02:00
e85833a40f
chore: migrate errors to thiserror 2024-08-06 23:00:04 +02:00
95ece68ae6
fix: removed filler error 2024-08-06 00:16:52 +02:00
Camillo Schenone
f9784e961d feat: updated to new glue, magic.
fix: added sublime junk to gitignore
2024-08-05 22:44:46 +02:00
b75caaf959
fix: lua glue uses structs directly 2024-08-05 19:16:17 +02:00
39533ae086
feat: wrappers for Cursor and Op
so plugins dont need to interact directly with our underlying proto
struct, nor our underlying crdt ops. also for wrapping directly in glue
2024-08-05 19:15:30 +02:00
84c77eaca3
feat: inner Arc<T> on controllers
so we can wrap them directly in our glue
2024-08-05 19:14:35 +02:00
Camillo Schenone
25e56f9894 fix: python glue works (only tested on mac though) 2024-03-16 15:42:36 +01:00
Camillo Schenone
859baf6572 fix: whops forgot the actual python glue xD version bump 2024-03-16 15:38:09 +01:00
Camillo Schenone
13a4163d1e feat: added python glue, still needs some tweaking in the building of the dylib 2024-03-16 14:36:41 +01:00
f0003f04bd chore: leftover lua lib.rs 2024-03-10 13:13:11 +01:00
c748f49941 feat:added js glue 2024-03-10 12:42:56 +01:00
830ef1fa9b fix: made lua glue work
Co-authored-by: alemi <me@alemi.dev>
2024-03-10 02:18:54 +01:00
074c88feee feat: added lua ffi bindings
broken because no proper build target but whatev for now ig
2024-03-10 01:39:08 +01:00
73fc3005c4 chore: renamed glue module 2024-03-10 01:36:50 +01:00
23db5af4d2 feat: java glue (kind of) 2024-03-09 23:27:08 +01:00
6fe5372387 chore: removed dead code 2024-03-09 22:07:40 +01:00
a38c28f401 feat: moved out proto + feature flag cleanup
Co-authored-by: alemi <me@alemi.dev>
2024-03-09 19:59:36 +01:00
4694a01c9b fix: don't borrow self as mut to join workspace 2024-03-09 17:20:40 +01:00
9422f9a216 docs: updated docs 2024-02-09 01:16:16 +01:00
a622ac773c docs: updated main doc page examples 2024-02-09 01:04:24 +01:00
4fdd2a79c4 fix: api doesn't really require woot or similar 2024-02-09 01:04:10 +01:00
f706237828 chore: removed blocking_recv
just block_on(recv()) ...
2024-02-09 01:03:38 +01:00
e0d4360d09 feat: BufferNode also From<&str> 2024-02-09 00:59:04 +01:00
47127bbb41 chore: back from transport to proto 2024-02-09 00:39:07 +01:00
c9a36ea8ec fix: cleaned up code, fixed multi-op change issues 2024-02-09 00:35:08 +01:00
99a268185a fix: increase channels buffer size
maybe helps? idk probably not actually
2024-02-07 21:24:31 +01:00
ed1ce45e7f fix: send path received from server 2024-02-07 04:41:13 +01:00
d78362c745 feat: getter for workspace
name doesn't really make sense: it's user-defined because we connect to
workspace contained inside token but store such connection with user
given name
2024-02-07 03:47:37 +01:00
948a1b4de5 feat: workspace streaming attach and lists
to join a workspace, attach to it. to leave a workspace, close the
channel. on such channel you get workspace events (new buffers, user
leave, ...). must fetch current buffers and users upon join. if
workspace doesn't exist, server should create it on attach
also dashmap everywhere to get/put simple
2024-02-07 01:12:05 +01:00
f61836e4ca chore: we don't need user_id this deep actually
it's stored in our token anyway
2024-02-07 01:11:36 +01:00
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