Zlatin Balevsky
f20b23434f
one more
2020-09-18 16:13:23 +01:00
Zlatin Balevsky
8d523a6265
update to api
2020-09-18 15:56:39 +01:00
Zlatin Balevsky
38b9ab5200
gui browse/feed/chat actions from upload table
2020-09-18 15:42:35 +01:00
Zlatin Balevsky
f6fdf9e33f
parse browse/feed/chat headers on the uploader side
2020-09-18 14:59:58 +01:00
Zlatin Balevsky
b729a89672
Advertise browse/feed/chat abilities in download headers
2020-09-18 14:50:49 +01:00
Zlatin Balevsky
e531093b28
do not try to connect to hopeless hosts
2020-09-17 19:58:36 +01:00
Zlatin Balevsky
b18772465c
limit the number of hosts read from each pong
2020-09-17 16:19:48 +01:00
Zlatin Balevsky
20aac03789
send an uuid with pings and echo it in pongs
2020-09-17 16:11:32 +01:00
Zlatin Balevsky
4cdb383b9f
fix minutes-to-milliseconds conversion of feed update interval in desktop gui. Make default feed update interval one hour
2020-09-16 14:37:08 +01:00
Zlatin Balevsky
9c6f6bf266
Make number of connections for ultrapeer a property
2020-09-16 12:30:41 +01:00
Zlatin Balevsky
31e0962b73
fix test target by excluding testng dependency
2020-09-14 14:38:12 +01:00
Zlatin Balevsky
253603cac7
add a log statement for infohash parsing
2020-09-12 14:37:54 +01:00
Zlatin Balevsky
fec042ec36
check if watched directories disappeared while MW was down
2020-09-04 14:44:04 +01:00
Zlatin Balevsky
af218a369c
migrate to groovy 3.0.4
2020-06-01 13:40:28 +01:00
Zlatin Balevsky
f0aaa83b7f
clean up most of noise on console when running without a log file
2020-06-01 13:14:33 +01:00
Zlatin Balevsky
c25546e1e1
Release 0.7.1
2020-05-29 12:06:53 +01:00
Zlatin Balevsky
eb242b0889
reduce default speed smoothing interval
2020-05-29 11:14:56 +01:00
Zlatin Balevsky
bf28278f72
Release 0.7.0
2020-05-26 19:03:05 +01:00
Zlatin Balevsky
6462675091
enable dual keys
2020-05-26 19:01:31 +01:00
Zlatin Balevsky
2fbab55f68
remove references to tunnelName variable
2020-05-25 19:44:50 +01:00
Zlatin Balevsky
ec41985d31
Release 0.6.15
2020-05-17 22:36:08 +01:00
zzz
61340f346a
Signature must be constructed with the sigtype of the signing key
2020-05-10 06:26:35 -04:00
Zlatin Balevsky
992daa1e45
size limit on nicknames
2020-05-10 09:51:56 +01:00
Zlatin Balevsky
3b825263a7
Make the random port selection range match that of the I2P router
2020-05-08 17:37:06 +01:00
Zlatin Balevsky
e1bf6c0821
prevent invalid characters in searchers of persisted files from breaking the loading process. Related to GitHub issue #45
2020-05-08 17:33:57 +01:00
Zlatin Balevsky
a6eca11479
Release 0.6.14
2020-05-07 13:39:17 +01:00
Zlatin Balevsky
3116e20c7c
Fix i2np port change on every restart, github issue #45
2020-05-07 03:12:09 +01:00
Zlatin Balevsky
d18cdb15cd
disallow certain characters in nicknames
2020-05-06 11:39:08 +01:00
Zlatin Balevsky
564db3473c
publish core to local maven repo
2020-05-05 16:01:23 +01:00
Zlatin Balevsky
6d6063829a
convert the core project into a library
2020-05-05 15:39:54 +01:00
Zlatin Balevsky
8b99f83db8
Release 0.6.13
2020-05-04 14:18:08 +01:00
Zlatin Balevsky
33b159477a
get test targets to pass, ignoring some tests which are not relevant anymore
2020-05-04 13:08:18 +01:00
zzz
bf06c3b15f
Add top-level groovy and java compile options to build.gradle
...
Add compilerArgs to gradle.properties
Fix compile warnings in DataUtil
2020-05-02 10:53:00 -04:00
Zlatin Balevsky
356d7fe2ff
always include the uuid in the tracker response
2020-04-29 11:23:42 +01:00
Zlatin Balevsky
7860aa2b1c
prevent replay attacks by attaching an uuid to the crawler pings and pongs
2020-04-28 19:46:13 +01:00
Zlatin Balevsky
301c2ec0e2
make I2PSession visible
2020-04-28 19:29:09 +01:00
Zlatin Balevsky
c306864781
add type to the tracker pong and echo the infohash that was queried
2020-04-28 19:18:37 +01:00
Zlatin Balevsky
5fc0283da7
revert change to constructor
2020-04-26 19:30:26 +01:00
Zlatin Balevsky
1d22abfa88
add ability to change the tunnel name
2020-04-14 13:17:47 +01:00
Zlatin Balevsky
9f7aaec991
include local persona in tracker response
2020-04-12 06:57:39 +01:00
Zlatin Balevsky
1c214ad68a
server side of file tracking
2020-04-12 05:56:06 +01:00
Zlatin Balevsky
3436af75bf
remove redundant header parsing code
2020-04-10 08:04:00 +01:00
Zlatin Balevsky
9b6a2fd952
write to memmapped file in 8kb increments
2020-04-08 13:25:08 +01:00
Zlatin Balevsky
85ad3109f9
get rid of sNL and darktrion hostcaches, add echelon's
2020-04-02 12:29:44 +01:00
Zlatin Balevsky
9837e1e3d7
emit an event on every dir sync so that UI can update timestamps
2020-03-28 02:47:29 +00:00
Zlatin Balevsky
2c52486476
fix manual syncing
2020-03-27 15:47:58 +00:00
Zlatin Balevsky
9f1f718870
show the dirs in a table, no actions yet
2020-03-27 12:54:01 +00:00
Zlatin Balevsky
2fd0a3833f
wip on web ui for advanced sharing
2020-03-27 11:10:25 +00:00
Zlatin Balevsky
e2a0a37abf
ui force sync event
2020-03-26 15:40:53 +00:00
Zlatin Balevsky
a4bee73b8a
process changes in configuration
2020-03-26 15:19:09 +00:00
Zlatin Balevsky
056e5800c2
implement directory polling
2020-03-26 14:55:44 +00:00
Zlatin Balevsky
6e0d51c221
first load all watched directories, only then register and scan the auto-watched
2020-03-26 13:10:56 +00:00
Zlatin Balevsky
496e2e7f91
scan autoWatched directories on startup
2020-03-26 12:53:54 +00:00
Zlatin Balevsky
a560b14d91
hook up directory manager with share & unshare events
2020-03-26 12:24:07 +00:00
Zlatin Balevsky
dfc62b943f
wip on persisting and loading of watched directory metadata, emit the event to register on autowatch service
2020-03-26 06:21:41 +00:00
Zlatin Balevsky
244ce43794
persistence of WatchedDirectory object
2020-03-26 05:31:39 +00:00
Zlatin Balevsky
11e320ef53
wip on directory watching
2020-03-26 04:09:18 +00:00
Zlatin Balevsky
23b6995bf2
start work on advanced watched directories
2020-03-25 22:39:03 +00:00
Zlatin Balevsky
e216678d9a
Release 0.6.12
2020-03-25 08:41:42 +00:00
Zlatin Balevsky
bd9315954a
add a positive tree so that deleting of shared directories can be detected
2020-03-25 08:09:45 +00:00
Zlatin Balevsky
83bdf76c08
cache the file/dir status when creating a tree node so that traversal can work if the file is deleted
2020-03-25 08:08:55 +00:00
Zlatin Balevsky
54f4874ad6
count the times a file has been hit due to feed update
2020-03-22 10:46:53 +00:00
Zlatin Balevsky
9a74cc5026
downloaders table
2020-03-22 02:51:26 +00:00
Zlatin Balevsky
e542a50260
status page with some MW internals
2020-03-19 18:12:52 +00:00
Zlatin Balevsky
509b5c3b99
avoid more conversions to BigDecimal
2020-03-17 16:43:31 +00:00
Zlatin Balevsky
fbb710cfc8
avoid more conversions to BigDecimal
2020-03-17 16:39:41 +00:00
Zlatin Balevsky
7285c12b97
clear cached cardinality on cancelling
2020-03-16 23:18:07 +00:00
Zlatin Balevsky
aac259c0fe
cache the cardinality to speed up UI sorting
2020-03-16 22:45:16 +00:00
Zlatin Balevsky
e3f58f8f5a
catch general exceptions because otherwise they get lost in the executor thread
2020-03-15 01:21:20 +00:00
Zlatin Balevsky
fca8870283
fix default feed update interval
2020-03-13 07:32:08 +00:00
Zlatin Balevsky
369779ab6a
swallow an exception that happens in plugin mostly
2020-03-13 02:42:46 +00:00
Zlatin Balevsky
54abf82a91
wip on server side of feeds for plugin
2020-03-12 22:28:11 +00:00
Zlatin Balevsky
14546737fd
release 0.6.11
2020-03-10 22:31:33 +00:00
Zlatin Balevsky
f202fa34f3
auto-publish shared files functionality
2020-03-10 19:12:49 +00:00
Zlatin Balevsky
2bb07ff7b5
do not trim feed items if setting is negative
2020-03-10 17:53:17 +00:00
Zlatin Balevsky
fc393619d8
options for feeds
2020-03-10 17:47:08 +00:00
Zlatin Balevsky
a272a45928
persist the right number of feed items
2020-03-10 16:41:31 +00:00
Zlatin Balevsky
c3d0dce281
store last update attempt and do not retry active feeds
2020-03-10 16:05:32 +00:00
Zlatin Balevsky
8f710e68c2
download feed item action
2020-03-10 15:06:42 +00:00
Zlatin Balevsky
15430d6c03
manual update and unsubscribe actions
2020-03-10 13:51:07 +00:00
Zlatin Balevsky
166b71f128
fix NPE when logging is enabled
2020-03-10 13:47:31 +00:00
Zlatin Balevsky
d724986ec6
proper method name
2020-03-10 13:34:33 +00:00
Zlatin Balevsky
198c5b5538
fix json parsing
2020-03-10 13:06:47 +00:00
Zlatin Balevsky
bb7385688c
it always points to the innermost closure
2020-03-10 12:55:09 +00:00
Zlatin Balevsky
e70bec3a51
hook up feed subscription
2020-03-10 12:44:25 +00:00
Zlatin Balevsky
ed04c40420
return an empty set if no items are found
2020-03-10 12:43:49 +00:00
Zlatin Balevsky
fd75d8229b
fix feed checkbox for local results
2020-03-10 12:15:52 +00:00
Zlatin Balevsky
a07f01b641
utility method to check if an infohash is shared
2020-03-10 11:50:09 +00:00
Zlatin Balevsky
fcb5c573f9
wip on feeds table
2020-03-10 10:39:18 +00:00
Zlatin Balevsky
e2a9db8056
add an IDLE status to feeds for display purposes
2020-03-10 07:32:45 +00:00
Zlatin Balevsky
f2bf921d4c
parse feed flag in results
2020-03-10 06:06:57 +00:00
Zlatin Balevsky
aa0fcfb7de
fix capitalization in event name
2020-03-10 05:50:54 +00:00
Zlatin Balevsky
17cd60afe3
deleting of feeds
2020-03-10 00:58:43 +00:00
Zlatin Balevsky
c10c1118e8
feed client
2020-03-09 19:28:42 +00:00
Zlatin Balevsky
28425e93dc
persist only as many items as configured to keep
2020-03-09 18:53:43 +00:00
Zlatin Balevsky
032338bb48
Persist feed metadata and items on successful fetch. Register feed manager for various events
2020-03-09 18:31:10 +00:00
Zlatin Balevsky
12e56b1c9a
events associated with updating a feed
2020-03-09 17:37:17 +00:00
Zlatin Balevsky
57c75978b6
wip on feed manager deserialization
2020-03-08 20:19:37 +00:00
Zlatin Balevsky
bfe198e1a6
represenation of a feed
2020-03-08 19:38:48 +00:00
Zlatin Balevsky
8e274f940e
Feed item representation and serialization
2020-03-08 19:30:04 +00:00
Zlatin Balevsky
9f3942c1c7
settings to disable or not advertise file feed
2020-03-08 17:15:00 +00:00
Zlatin Balevsky
d60d57ee43
wip on server side feed handling
2020-03-08 17:04:11 +00:00
Zlatin Balevsky
8e3a433afb
persist shared file on publish/unpublish
2020-03-08 16:06:28 +00:00
Zlatin Balevsky
49cf56fabb
UI Publish & Unpublish events
2020-03-08 16:01:50 +00:00
Zlatin Balevsky
2b6565d107
unpublish method
2020-03-08 16:01:23 +00:00
Zlatin Balevsky
366a2ef841
published flag and timestamp in shared files
2020-03-08 15:46:36 +00:00
Zlatin Balevsky
c7d1f0c23c
Connect to i2p router after creating the Core object, should help with plugin init issues #39
2020-02-23 18:29:09 +00:00
Zlatin Balevsky
853b9f67fc
Release 0.6.10
2020-02-23 15:42:03 +00:00
Zlatin Balevsky
a505a2449a
persist SharedFile on change of comments #35
2020-02-18 02:14:32 +00:00
Zlatin Balevsky
c11d81c6c3
Release 0.6.9
2020-02-16 16:33:33 +00:00
Zlatin Balevsky
bdad8d9309
make extended signatures mandatory
2020-02-14 15:34:21 +00:00
Zlatin Balevsky
16ed5dd346
chase down some usages of deprecated getInfoHash method #35
2020-02-14 01:32:38 +00:00
Zlatin Balevsky
7b55fc9ed8
working uploads #35
2020-02-14 01:15:10 +00:00
Zlatin Balevsky
d5c8050572
wip on separate hashlist storage #35
2020-02-14 00:37:07 +00:00
LoveIsGrief
a891c83518
Only persist downloaded files if sharing thereof is enabled
...
Otherwise we might inadvertently share downloads
2020-01-25 15:25:48 +01:00
LoveIsGrief
aa56cc23c0
Cache base 64 path hash
...
Can't do it in constructor without an ugly try/catch
therefore this is done on demand
2020-01-25 15:20:38 +01:00
LoveIsGrief
a2b37ef567
Persist downloaded files
2020-01-25 15:06:12 +01:00
LoveIsGrief
4bc04ae631
Revert "Reduce log levels in Connection"
...
This reverts commit dcd233b7
2020-01-25 15:01:21 +01:00
LoveIsGrief
56da9a16b0
Set FileLoadedEvent::source in the subclass
...
Setting it in the super class means we don't set the right value for every case
2020-01-25 15:00:48 +01:00
LoveIsGrief
2935ee1a1d
Remove unnecessary executor
...
It was doing nothing but starting and stopping
2020-01-25 14:49:59 +01:00
LoveIsGrief
855183397b
Remove TODO
...
There's already an issue open https://github.com/zlatinb/muwire/issues/35
2020-01-22 21:35:54 +01:00
LoveIsGrief
e27704c1af
Make sure migration from PersisterService works
...
this.getClass() and this.class kept resolving to Class.
Using a string is much simpler
mkdirs() is also necessary because the directory structure doesn't exist
when persistFile is called the first time
2020-01-22 20:59:05 +01:00
LoveIsGrief
5c18b4a141
Add more logs PersisterFolderService
2020-01-22 15:12:22 +01:00
LoveIsGrief
dcd233b7ad
Reduce log levels in Connection
...
Too verbose
2020-01-22 15:12:01 +01:00
LoveIsGrief
7cee8a28ba
FileLoadedEvent should include class when coming from old persister
...
Otherwise the new PersisterFolderService won't migrate
2020-01-22 15:07:00 +01:00
LoveIsGrief
7446fc949a
Remove UIPersistFilesEvent
...
Hashing is done per file now and those are triggered by individual events
2020-01-22 13:00:55 +01:00
LoveIsGrief
598ab90f63
Clear up the event path when starting up the old and new persisters
...
The new persister won't load anything until the old one has finished
2020-01-22 12:36:34 +01:00
LoveIsGrief
043028c296
Introduce PersisterFolderService to replace PersisterService
...
An attempt at automatically migrate from PersisterService was made, but the events aren't triggered in the right order.
We need to make sure that we don't trigger the "AllFilesLoadedEvent" before the migration is done
2020-01-21 23:34:33 +01:00
LoveIsGrief
9d4b365e63
Log the time it take to persist files and hashes
2020-01-19 21:43:03 +01:00
LoveIsGrief
03e20e21aa
Remove unnecessary quotes from properties files
...
There doesn't seem to be a special treatment of them
in properties files
#32 - Docker image
2020-01-14 18:42:51 +01:00
LoveIsGrief
8a08955675
Remove quotes from i2cp.tcp.port setting
...
For some reason it really doesn't like that and
subsequently can't connect to the host
#32 - Docker image
2020-01-14 17:52:52 +01:00
LoveIsGrief
65e073b1b9
Use defaults for the i2p.properties
...
This will help writing custom properties
as not everthing will have to be specified in them
#32 - Docker image
2020-01-14 12:29:05 +01:00
Zlatin Balevsky
8f9b1e5a8b
supress exceptions if client is stopped
2019-12-24 17:05:36 +00:00
Zlatin Balevsky
e6d59a2438
stop host persister on shutdown
2019-12-24 05:53:02 +00:00
Zlatin Balevsky
ba5425c958
extra check for stopped cache client
2019-12-21 15:56:09 +00:00
Zlatin Balevsky
9df1d043e4
do not initialize the update client if running as a plugin
2019-12-19 18:35:44 +00:00
Zlatin Balevsky
6ea1a15641
do not initialize the update client if running as a plugin
2019-12-19 18:30:07 +00:00
Zlatin Balevsky
e21d482393
Release 0.6.8
2019-12-19 06:04:18 +00:00
Zlatin Balevsky
b08333c5ea
download details view
2019-12-15 11:34:04 +00:00
Zlatin Balevsky
fce879be5d
hook up configuration page, under construction
2019-12-14 19:02:15 +00:00
Zlatin Balevsky
c169a7613f
wip on importing certificates
2019-12-10 14:59:30 +00:00
Zlatin Balevsky
813e211200
send certified status to the UI
2019-12-09 17:22:30 +00:00
Zlatin Balevsky
1adb130fba
ability to certify directories
2019-12-09 17:04:11 +00:00
Zlatin Balevsky
42c48a8e37
certificate backend
2019-12-09 14:26:39 +00:00
Zlatin Balevsky
662b065116
wip on trust subscriptions
2019-12-09 07:37:04 +00:00
Zlatin Balevsky
086e27876d
shut down more services explicitly
2019-12-09 05:38:41 +00:00
Zlatin Balevsky
5c6917a7e6
wip on trust views
2019-12-08 14:57:21 +00:00
Zlatin Balevsky
844bd8fd6e
comments in shared files are encoded
2019-12-08 00:26:17 +00:00
Zlatin Balevsky
7d9ebb5b0b
server side of browse host
2019-12-07 23:35:16 +00:00
Zlatin Balevsky
13af6cce22
stray println
2019-12-07 20:37:24 +00:00
Zlatin Balevsky
5c17536683
unsharing of directories
2019-12-07 12:14:49 +00:00
Zlatin Balevsky
a6e0834722
add a single-level list traversal of the tree
2019-12-06 12:47:08 +00:00
Zlatin Balevsky
9b2669a8b8
update to new api
2019-12-06 10:51:35 +00:00
Zlatin Balevsky
a0f70f7677
add traversal of the file tree
2019-12-06 10:51:07 +00:00
Zlatin Balevsky
23b2c912e2
genericize file tree
2019-12-06 10:08:27 +00:00
Zlatin Balevsky
ecfd4180c0
update test
2019-12-06 10:07:32 +00:00
Zlatin Balevsky
95dd5c4a7c
downloads display, starting and stopping
2019-11-30 23:34:59 +00:00
Zlatin Balevsky
2b8bd8144f
basic display of how many senders and results have arrived
2019-11-30 19:09:55 +00:00
Zlatin Balevsky
ff0a4661fd
offload start to a thread, display wait page while the tunnel is opening
2019-11-30 14:56:04 +00:00
Zlatin Balevsky
9151df6816
kill i2p session on shutdown
2019-11-30 14:27:40 +00:00
Zlatin Balevsky
61baa53076
_logManager cannot be set on RouterContexts (i.e. when running as plugin)
2019-11-30 13:26:20 +00:00
Zlatin Balevsky
562d9a0f4a
move i2p core dependency one level down, exclude core dependencies from plugin
2019-11-30 03:44:57 +00:00
Zlatin Balevsky
cf396b739e
ability to chat from browse window
2019-11-29 03:41:59 +00:00
Zlatin Balevsky
4c038ad932
set the geoip.dir property to load geoip
2019-11-27 16:00:56 +00:00
Zlatin Balevsky
8fedc0c605
Release 0.6.7
2019-11-26 09:55:10 +00:00
Zlatin Balevsky
f4cd1c30cd
Do not remove connection on distrust so that disconnect can be processed correctly
2019-11-26 05:00:55 +00:00
Zlatin Balevsky
e760e9f600
add option to select chat server welcome message
2019-11-19 09:02:42 +00:00
Zlatin Balevsky
9373d58b53
limit the time a header read can take
2019-11-18 09:00:11 +00:00
Zlatin Balevsky
cb9a1cfff6
remove stray import
2019-11-17 15:05:29 +00:00
Zlatin Balevsky
0c40c8f269
Release 0.6.6
2019-11-16 17:12:21 +00:00
Zlatin Balevsky
5dff319746
prevent starting chat server more than once. Implement chat console in the cli
2019-11-16 16:40:07 +00:00
Zlatin Balevsky
286a0a8678
redo locking around chat client state
2019-11-16 14:41:47 +00:00
Zlatin Balevsky
17eff7d77f
toString
2019-11-16 00:25:50 +00:00
Zlatin Balevsky
2e22369ce0
set flag before submitting to threadpool
2019-11-15 23:12:17 +00:00
Zlatin Balevsky
15c59b440f
flush outputstream on chat connect failures or rejections
2019-11-15 21:52:35 +00:00
Zlatin Balevsky
fec81808e5
Release 0.6.5
2019-11-14 05:15:26 +00:00
Zlatin Balevsky
114bc06dbb
If the user explicitly shares a file, remove it form the negative tree. #26
2019-11-13 22:00:10 +00:00
Zlatin Balevsky
5fa2f2753c
Release 0.6.4
2019-11-13 20:06:53 +00:00
Zlatin Balevsky
f7f4513109
better help and welcome message
2019-11-13 17:50:50 +00:00
Zlatin Balevsky
a0ab07a7c0
show browse status for local results correctly
2019-11-13 11:58:55 +00:00
Zlatin Balevsky
f875c379ce
Release 0.6.3
2019-11-12 17:22:38 +00:00
Zlatin Balevsky
c6e98db9d4
initialize result sender properly
2019-11-12 15:50:58 +00:00
Zlatin Balevsky
35a26e2a47
advertise chat ability in search results
2019-11-12 15:47:38 +00:00
Zlatin Balevsky
beef4af329
ui for chat options
2019-11-12 15:31:20 +00:00
Zlatin Balevsky
289b958784
disconnect functionality
2019-11-12 14:19:57 +00:00
Zlatin Balevsky
3d36351a6b
fetch the list of current room members when joining
2019-11-12 10:55:21 +00:00
Zlatin Balevsky
d57d2ccb71
print help message on joining
2019-11-12 04:18:35 +00:00
Zlatin Balevsky
6bc61c920d
start outgoing connection
2019-11-12 00:11:26 +00:00
Zlatin Balevsky
18d19ca75e
wip on joining and leaving rooms
2019-11-11 23:32:23 +00:00
Zlatin Balevsky
29e499fe9d
hook up core and backend
2019-11-11 22:42:55 +00:00
Zlatin Balevsky
3db167bade
send periodic pings
2019-11-11 17:54:33 +00:00
Zlatin Balevsky
bfe0ab7867
wip on hooking UI with core
2019-11-11 17:48:42 +00:00
Zlatin Balevsky
0632336cd1
add ability to start and stop chat server from UI
2019-11-11 15:16:23 +00:00
Zlatin Balevsky
aa221cd6dc
server-side handling of disconnects and trust events
2019-11-11 14:54:10 +00:00
Zlatin Balevsky
29b5c55328
client-side disconnect handling
2019-11-11 13:31:00 +00:00
Zlatin Balevsky
5e7f3587df
shutdown chat components
2019-11-11 13:26:25 +00:00
Zlatin Balevsky
8afd387ca6
hook up chat components with core
2019-11-11 13:21:16 +00:00
Zlatin Balevsky
5d16963d1c
process join/leave/say server-side
2019-11-11 12:19:32 +00:00
Zlatin Balevsky
6080c8b308
chat client and server
2019-11-11 10:43:52 +00:00
Zlatin Balevsky
a549ad3d8d
wip on chat
2019-11-11 04:36:43 +00:00