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