* Core: limit depth of received JSON to 16
This applies to both MultiServer and CommonClient.
This means DataStorage default is limited to 14 levels,
DataStorage op arg is limited to 13 levels.
* Core: fix JSON depth limit check for escape codes
* Core: cythonize JSON depth limit check
* MultiServer: add NoText tag and handling
* MultiServer: deprecate and warn for uncompressed connections
* MultiServer: fix missing space in no compression warning
* Vi don't forget about itemlinks challenge difficulty impossible
* People other than Vi also don't forget about ItemLinks challenge difficulty impossible
* Introduce 'Hint Priority' concept
* fix error when sorting hints while not connected
* fix 'found' -> 'status' kivy stuff
* remove extraneous warning
this warning fired if you clicked to select or toggle priority of any hint, as you weren't clicking on the header...
* skip scanning individual header widgets when not clicking on the header
* update hints on disconnection
* minor cleanup
* minor fixes/cleanup
* fix: hints not updating properly for receiving player
* update re: review
* 'type() is' -> 'isinstance()'
* cleanup, re: Jouramie's review
* Change 'priority' to 'status', add 'Unspecified' and 'Avoid' statuses, update colors
* cleanup
* move dicts out of functions
* fix: new hints being returned when hint already exists
* fix: show `Found` properly when hinting already-found hints
* import `Hint` and `HintStatus` directly from `NetUtils`
* Default any hinted `Trap` item to be classified as `Avoid` by default
* add some sanity checks
* re: Vi's feedback
* move dict out of function
* Update kvui.py
* remove unneeded dismiss message
* allow lclick to drop hint status dropdown
* underline hint statuses to indicate clickability
* only underline clickable statuses
* Update kvui.py
* Update kvui.py
---------
Co-authored-by: Silvris <[email protected]>
Co-authored-by: NewSoupVi <[email protected]>
* Docs: `NetworkItem.player`
In many contexts, it's difficult to tell whether this is the sending player or the receiving player.
* correct player info
* Update NetUtils.py
Co-authored-by: Aaron Wagener <[email protected]>
---------
Co-authored-by: Aaron Wagener <[email protected]>
* client: Added command history access with up/down and command echo in common client
* client: Changed command echo colour to orange
* client: removed star import from typing
* client: updated code style to match style guideline
* client: adjusted ordering of calling parent constructor in command prompt input constructor
* client: Fixed issues identified by beauxq in PR; fixed some typing issues
* client: PR comments; replaced command history list with deque
* Core: lazy-load worlds in unpickler
this should hopefully fix customserver's memory consumption
* WebHost: move imports around to save memory in MP
* MultiServer: prefer loading _speedups without pyximport
This saves ~15MB per MP and speeds up module import if it was built in-place.
* Tests: fix tests for changed WebHost imports
* CustomServer: run GC after setup
* CustomServer: cleanup exception handling
* MultiServer: fix wrong missing for empty state w/o speedups
* Tests: fix some tests not being run
* Tests: add test for set intersection with LocationStore
* Server: allow games with no locations again
* Server: validate locations in pure python implementation
and rework tests
* Server: fix tests for py<3.11
* MultiServer: speed up location commands
Adds optimized pure python wrapper around locations dict
Adds optimized cython implementation of the wrapper, saving cpu time and 80% memory use
* Speedups: auto-build on import and build during setup
* Speedups: add requirements
* CI: don't break with build_ext
* Speedups: use C++ compiler for pyximport
* Speedups: cleanup and more validation
* Speedups: add tests for LocationStore
* Setup: delete temp in-place build modules
* Speedups: more tests and safer indices
The change has no security implications, but ensures that entries[IndexEntry.start] is always valid.
* Speedups: add cython3 compatibility
* Speedups: remove unused import
* Speedups: reformat
* Speedup: fix empty set in test
* Speedups: use regular dict in Locations.get_for_player
* CI: run unittests with beta cython
now with 2x nicer names
* some typing and docs in various parts of the interface
* fix whitespace in docstring
Co-authored-by: black-sliver <[email protected]>
* suggested changes from discussion
* remove redundant import
* adjust type for json messages
* for options module detection:
module.lower().endswith("options")
Co-authored-by: black-sliver <[email protected]>
* Clients: now featuring tooltips and some general cleanup
* Clients: fade in tooltip over 0.25 seconds
* Clients: reset slot and team when disconnecting
* Clients: allow joining multiworld via link (TextClient only for now)