- Adds
Knit.GetServices()function server-side - Adds
Knit.GetControllers()function client-side - Freezes
services/controllerstables so that they can be safely returned in the functions listed above. - Various code readability adjustments
- Update GitHub workflow dependencies
- Add documentation on intellisense
- Add support for UnreliableRemoteEvents (using
Knit.CreateUnreliableSignal()on server) - Update dependencies
- Fix incorrect RunService call
- Update dependencies
- Prevent KnitServer from destroying itself in edit mode
- Bugfix for main Knit init file
- Code styling
- Utilize newer Luau features
- Migrate to Aftman
- General repository cleanup
- Update dependencies
- Update dependencies for bundled version of Knit
- Update Comm dependency with new methods
- Update TableUtil (in bundled version) to use
table.cloneinternally where appropriate
- Update dependencies
- Use Promise v4
- Add memory categories per service and controller to help track memory usage
- Update dependencies
- Update Component dependency
- Update Input dependency
- Update Signal dependency
- Update Timer dependency
- Update Trove dependency
- Update dependencies to latest
- Update the Comm module to patch a middleware bug only affecting middleware that tries to change number of arguments (i.e. injecting custom arguments will now be fixed)
- Documentation improvements
- Add ability to set independent middleware per service, but on the server and the client
- Added tutorial video links
- Add short-circuit evaluation to
GetServiceandGetControllerfunctions for better performance when the service/controller exists - Change Comm module to use service name as namespace instead of nested
__comm__folder - Documentation improvements
- Breaking changes to middleware assignment (now within one
Middlewaretable instead of two for inbound/outbound)
- Add support for RemoteProperties via Comm library
- Add updated dependencies to the
wally_bundle.tomldependency list
- Added options to include middleware
- Removed
ServicesandControllersproperties to force use ofGetServiceandGetControllerfunctions - Add
KnitOptionsargument for KnitClient to toggle whether service methods simply yield or return promises (promises by default) - Various documentation improvements
- Migrated all core modules to Wally
- Revamped documentation
- Fix
TableUtil.Samplealgorithm to properly implement a partial Fisher-Yates shuffle - Fix
TableUtil.Reduceto handle theinitparameter properly - Update Janitor to v1.13.6
- Small documentation adjustments
- Fix issue with having multiple required components
- Adds
SampleandZipto TableUtil - Improvements to Timer module
- Fixes bug with Timer class
- Updates Janitor
- Removes unnecessary parentheses
- Adds some more Luau types
- New Signal implementation
- Remove Thread module in favor of new
task.spawnandtask.deferfunctions - Add Janitor / Remove Maid
- Add Timer module
- Added optional
RequiredComponentstable for components - Added
Observemethod for components - Fixed
AddedandRemovedevents not being cleaned up when component class destroyed - Fixed lifecycle RunService method bindings not being cleaned up properly for future reuse
- Added more documentation for components
- Upgraded CI/CD pipeline to use latest packages
- Hotfix for TableUtil
Sync,Assign,Extend, andShufflefunctions to do shallow copies instead of deep copies - Fix release GitHub action to properly use
"Knit"as the top-level directory name within the zipped file - Fix documentation to properly use user preference theme (light/dark)
[BR] = Breaking Change
- Project directory restructure
- Can now include Knit as a Git submodule and reference the default rojo project to sync in (see below)
- Added unit tests for Knit-specific utility modules
- Added simple integration tests
- TableUtil fixes, additions, and improvements:
- [BR] All functions (except
FastRemoveandFastRemoveFirstValue) no longer mutate table - Fix
Filterbug introduced in v0.0.15-alpha - Fix behavior of
Extendto extend arrays and not dictionaries (useAssignto extend a dictionary) - Add optional RNG override parameter for
Shuffle - Add
Flat,FlatMap,Keys,Find,Every, andSomefunctions - Add documentation page for TableUtil
- [BR] All functions (except
- Simplify
Knit.OnStart()internally to usePromise.FromEvent - Update Rojo version used by CI/CD pipeline
- Fix broken links in documentation pages
- Memory leak fixed with Streamable when instance was immediately available
Knit.GetService(serviceName)added to server-side Knit- Minor improvements to TableUtil
- Util documentation split across multiple pages
- Fix Signal leak when firing with no connections
- Change
._instanceto.Instancein Component - Components will use attributes to store unique ID instead of StringValue
- Add
Signal.Proxyconstructor to wrap built-in RBXScriptSignals - Add
Maid:GivePromisemethod - Allow dictionary tables in
StreamableUtil.Compoundobservers list
Note breaking changes from above:
- When upgrading, make sure to change
._instancefield accessors to.Instancefor components ServerIDStringValue for components has been switched to use attributes:instance:GetAttribute("ComponentServerId")
Component:WaitForhas been rewritten to utilize built-in promise features better, which also eliminated an existing event connection leak.StreamableandStreamableUtilmodules added to easily manage parts that may stream in & out during runtime when usingStreamingEnabled.- Documentation improvements.
- Added new 'Add' functions to automatically load all modules in a folder. This is useful for quickly loading a bunch of service or controller modules:
KnitServer.AddServices(folder: Instance)KnitServer.AddServicesDeep(folder: Instance)KnitClient.AddControllers(folder: Instance)KnitClient.AddControllersDeep(folder: Instance)
- Split up remotes to server/client versions:
RemoteEvent->RemoteSignalandClientRemoteSignalRemoteProperty->RemotePropertyandClientRemoteProperty
- Knit module isn't required to live in ReplicatedStorage now
- Added
EnumListclass which wrapsSymbols to create pseudo-enums - Added style guide in documentation
- Documentation fixes and additions
- Better table support for
RemotePropertyclass - Fixes and additions to
Optionclass - Optional behavior argument for
Thread.DelayRepeat- Note: If using var-args list for
DelayRepeat, this is a breaking change.DelayRepeat's third argument must be the behavior (Thread.DelayRepeatBehavior.DelayedorThread.DelayRepeatBehavior.Immediate).
- Note: If using var-args list for
- Added
Symbolclass
- Switch default branch from
mastertomain Component:WaitForfirst arg can now be a name or instanceInitfor individual components is called after a heartbeat, which helps allow components to get other components without race conditions whenComponent.Autois used.
- Fixed issue where remote objects were parented before services completed initialization. This created a possible race condition between services initializing and clients loading Knit.
- Added
Optionclass for creating optionals. - Added serialization/deserialization automatic flow for RemoteEvents and RemoteFunctions.
- Upgraded
Promiseto v3.0.1.
- Added a few tests (very few so far)
- Added PascalCase methods to Promise module
- Components will only trigger for instances that are descendants of Players or Workspace by default
- GitHub workflow to auto-publish the Knit module to Roblox.
- Add more functionality to Component module
- Added Component class, which allows developers to bind component classes to in-game instances using the CollectionService tags
- Renamed
EventtoSignal
- Ability to use tables within RemoteProperty object
- RemoteProperty now has
property:Replicate()method server-side that must be called when a table value is changed (see doc)
- Add more documentation
- Inject
Playerfield intoKnitClient
- Add
Knit.OnStart()to capture when Knit starts - Add RemoteEvent and RemoteProperty
- Add documentation
- Initial release