Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
286e609
Port TM2 in
Raild3x Jun 3, 2026
f448a3f
Fixed most tests
Raild3x Jun 3, 2026
0a4b4b4
Switch to string requires
Raild3x Jun 3, 2026
45a3c46
Added array diff helper files
Raild3x Jun 3, 2026
b573f76
Fix strings for lune
Raild3x Jun 3, 2026
f778544
Merge branch 'main' into feat/TableManager2
Raild3x Jun 3, 2026
bdf78d4
Fix callback formats
Raild3x Jun 3, 2026
7704420
Add suspension functionality to ChangeDetector
Raild3x Jun 3, 2026
4144b13
Nested array handling and schema support
Raild3x Jun 4, 2026
eb70a30
More listener options
Raild3x Jun 4, 2026
c720d0d
userdata proxies and customizeable dispatch methods for listeners
Raild3x Jun 4, 2026
8269d5f
Update selene
Raild3x Jun 4, 2026
8787b67
Proxy userdata format
Raild3x Jun 4, 2026
04cdfee
Cleanup
Raild3x Jun 5, 2026
90ef236
More cleanup and optimizations
Raild3x Jun 5, 2026
018d9a4
Batch Keys Cleanup
Raild3x Jun 5, 2026
b2e7b4a
Merge branch 'main' into feat/TableManager2
Raild3x Jun 5, 2026
00440b9
Add duplicate reference support
Raild3x Jun 5, 2026
500f069
Internal Typing Support for TM
Raild3x Jun 5, 2026
2862211
Tweak readme and copilot instructions
Raild3x Jun 5, 2026
ae7fdd0
Update documentation and optimize repeated codeblocks
Raild3x Jun 5, 2026
843b791
Organized and expanded test cases
Raild3x Jun 5, 2026
b18a0a8
Change folder container name for TM tests
Raild3x Jun 5, 2026
850e1a8
Allow ReadMes in packages
Raild3x Jun 7, 2026
ea18564
Moonwave fixes
Raild3x Jun 8, 2026
3cf7708
Remove old tablemanager
Raild3x Jun 8, 2026
93dcbe5
Update SchemaNavigator.luau
Raild3x Jun 8, 2026
d47d2f0
Fix type errors
Raild3x Jun 8, 2026
818f1dd
More path tweaks
Raild3x Jun 9, 2026
869f58a
Fix array listener tests
Raild3x Jun 9, 2026
1be6040
Remove old _path field from Proxymanager
Raild3x Jun 9, 2026
62650c8
Bound ProxyManager more tightly to TableManager data
Raild3x Jun 9, 2026
61245e7
Cleanup ChangeDetector Docs
Raild3x Jun 9, 2026
9485389
Frozen Table Protection in ArrayBatchRecorder
Raild3x Jun 10, 2026
ae0df72
Cleanup Tablemanager util functions. Add Observe
Raild3x Jun 10, 2026
2a61643
Wildcard and new listeners
Raild3x Jun 10, 2026
e89b250
God help me (more signal bs)
Raild3x Jun 10, 2026
93314a2
Tweak copilot instructions
Raild3x Jun 11, 2026
fb668c5
Update tests
Raild3x Jun 11, 2026
2de3012
Potential fixes? (Double check this)
Raild3x Jun 11, 2026
d814629
Opus ate half my tokens
Raild3x Jun 11, 2026
50738c5
Fable Fixes
ProjectAuroraRBLX Jun 11, 2026
0fdd44a
Proxy-rewrite part1
Raild3x Jun 12, 2026
9005cb3
Proxy-rewrite pt2
Raild3x Jun 12, 2026
dac29c8
Proxy-rewrite pt3
Raild3x Jun 12, 2026
4727771
Proxy rewrite final
Raild3x Jun 12, 2026
ce9be46
Update copilot-instructions.md
Raild3x Jun 12, 2026
d27226f
Memory Leak Fixes
Raild3x Jun 12, 2026
0714192
Remove Dead Code
Raild3x Jun 13, 2026
ef199fc
Patch out ArrayBatchRecorder
Raild3x Jun 13, 2026
078e20f
TM LinkGroups
Raild3x Jun 15, 2026
c78fe2c
Linker
Raild3x Jun 15, 2026
6f735fa
TM:Extend
Raild3x Jun 15, 2026
8f13e13
Cleanup files
Raild3x Jun 15, 2026
4515a26
Type cleanup
Raild3x Jun 15, 2026
7273b51
Root retargeting and cleanup
Raild3x Jun 16, 2026
acc5acd
Perf Improvements
Raild3x Jun 16, 2026
6a309b2
no Wildcard fast path
Raild3x Jun 16, 2026
1517062
iteration speed improvements in changedetector
Raild3x Jun 16, 2026
24db1ef
Profiling
Raild3x Jun 16, 2026
e9cb45b
Ignore packages when testing
Raild3x Jun 17, 2026
b8da7b0
For and Map util methods
Raild3x Jun 17, 2026
106c784
Opaque Wrappers
Raild3x Jun 17, 2026
50115a9
Refactor to shadow tree phase 1
Raild3x Jun 18, 2026
60e31da
Shadow refactor pt 2
Raild3x Jun 18, 2026
b3c49a1
Convert requires to string style for lune support
Raild3x Jun 18, 2026
b139646
Forgot to add these to the shadow pt2
Raild3x Jun 18, 2026
98632a2
Some cleanup
Raild3x Jun 18, 2026
5de445a
Remove old Snapshotting behaviors
Raild3x Jun 19, 2026
c87570a
fix up firemode types
Raild3x Jun 19, 2026
725e313
Phase 1 Constant Shadow
Raild3x Jun 19, 2026
c774732
Rewrite of shadow dispatch. Again..
Raild3x Jun 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 18 additions & 13 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# ModulesOnRails Copilot Instructions

## Goal
This repository contains multiple Roblox Wally modules. Favor consistency inside the package you are editing over consistency with the rest of the repository.
This repository contains multiple Roblox Wally modules. Favor consistency inside the package you are editing over consistency with the rest of the repository. We use Luau, not Lua.

## Priority Order
1. Follow the local style of the current package first.
Expand All @@ -21,30 +21,30 @@ If a package is pure Luau and has multiple modules, do not use `init.luau` as th

Publishing will generate an `init.luau` re-export automatically. Non-pure-Luau packages may use `init.luau` directly.

## Setup For Development
Use `npm run setup <package-name>` when deeper local package context is needed. This installs dependencies and arranges them similarly to live usage, improving autocomplete, linting, and diagnostics in VS Code.

## Luau Style Rules
- Use PascalCase for class names, table fields, and method names.
- Use camelCase for variable names.
- Use SCREAMING_SNAKE_CASE for constants.
- Prefix private fields and methods with `_`.
- Prefix private fields and methods of class objects with `_`.
- Add explicit types for non-inferred parameters and function signatures.
- For Luau classes, define both a public type and an internal type.
- Internal type should extend public type with private fields and methods.
- Declare class methods with dot syntax and explicit `self: InternalType`.
- Call those methods with colon syntax.
- Keep existing comments and debug logic unless removal is explicitly requested or the content is now outdated.
- Methods/functions that yield or could potentially yield should be either suffixed with `Async` or return as a Promise to prevent unexpected behavior.
- Avoid magic numbers. That is, numbers with no obvious underlying meaning. You can attribute meaning to a number by assigning it to a variable or constant with a descriptive name, or by writing a comment explaining what the number's purpose is.
- Packages should always have relative paths for their requires. Never require another module with an absolute path.
- Avoid magic numbers. That is, numbers or valueswith no obvious underlying meaning. You can attribute meaning to a number by assigning it to a variable or constant with a descriptive name, or by writing a comment explaining what the number's purpose is.
- Packages should always have relative paths for their requires. Never require another module with an absolute path. Prefer string requires.
- Avoid forward declaration whenever possible.

## Documentation Style
- Public single-line docs: `---`
- Public multi-line docs: `--[=[]=]`
- Private single-line comments: `--`
- Private multi-line comments: `--[[]]`

Documentation is in moonwave format.

## Constant Policy
Use `const` whenever a variable binding is never reassigned.

Expand All @@ -53,7 +53,7 @@ Important notes:
- Base-scope constants should use SCREAMING_SNAKE_CASE unless they are mutable-content tables.
- If a variable is declared and immediately assigned later, treat it as non-const for policy purposes.
- Exceptions to the constant naming policy may be made when justified by readability, practicality, or consistency with existing code. Ex: Roblox services and required modules should be consts at the base scope, but they should be PascalCase even though they are never reassigned.
- local functions should almost always be const.
- Functions should almost always be const. `const function` is preferred over `local function` for functions that are never reassigned. This is because it makes it clear that the function is not intended to be reassigned, and it can help prevent accidental reassignment.

Declaration matrix:

Expand All @@ -70,11 +70,13 @@ Declaration matrix:
| any | Inner | Assigned programmatically | local with camelCase |

## Testing Rules
- Use tiniest for tests. Analyze the examples under `/test/tiniest` for reference.
- TestEZ is deprecated in this codebase. NEVER use TestEZ or its syntax. They do not exist.
- `tiniest` is the testing framework we use for running tests. If needed, analyze the examples under `/test/tiniest` for reference.
- Utilize `tiniest`'s `describe`, `test`, `expect`, and `context` functions for structuring tests and assertions. Context is useful for debugging test cases by providing custom additional info. Attach context to failing tests to surface that info in the test output.
- Create tests in `.spec.luau` files.
- For pure Luau packages, run tests through `tests.luau` in VS Code.
- Do not attempt to run tests through command line or anything else yourself unless you are explicitly instructed to.
- For pure Luau packages, you can run tests through `tests.luau` in VS Code.
- For non-pure-Luau packages, rely on developer-run manual testing and provided output.
- TestEZ is deprecated in this codebase. NEVER use TestEZ or its syntax. They do not exist.

## Debugging Rules
- Never assume root cause without validating with test output.
Expand All @@ -83,5 +85,8 @@ Declaration matrix:
- Prefer extra context over minimal logs so follow-up decisions can be made from one run.

## Planning
- While planning, you must should come up with a flowchart to explain the current way things work and a separate flowchart to explain the new proposal. If a plan includes multiple separate changes, you need multiple separate before and after flowcharts.
- You must always include a list of to-dos in the final plan and they should be broken into discrete tasks that an agent can be tasked with.
- Plans should be broken up into phases that can be executed independently without breaking a system. Each phase should have a clear goal and a defined-ordered set of tasks.
- Phases should note touched files and the expected impact on those files. This helps with code review and ensures that changes are intentional and well-understood.

## Reference Links
- If creating a type function, view the following: https://luau.org/types-library/
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@

*.rbxl
*.rbxl.lock
*.pyc

src/baseobject/*
!src/baseobject/baseobject
Expand All @@ -23,4 +24,5 @@ last_tested_package.txt

!**/wally.toml
!**/default.project.json
!**/README.md
node_modules
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
See .github/copilot-instructions.md for a guide on this repository.
83 changes: 0 additions & 83 deletions default.project.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,6 @@
"emitLegacyScripts": false,
"tree": {
"$className": "DataModel",

"Workspace": {
"$className": "Workspace",
"BasePlate":{
"$className": "Part",
"$properties": {
"Size": [1024, 4, 1024],
"Position": [0, -2, 0],
"Color": {
"Color3uint8": [91, 91, 91]
},
"Anchored": true,
"Locked": true,
"TopSurface": "Smooth"
},

"GridTexture": {
"$className": "Texture",
"$properties": {
"Texture": "rbxassetid://6372755229",
"StudsPerTileU": 8,
"StudsPerTileV": 8,
"Color3": [0, 0, 0],
"Transparency": 0.8,
"Face": "Top"
}
}
}
},

"ReplicatedStorage": {
"$className": "ReplicatedStorage",
Expand All @@ -43,60 +14,6 @@
}
},

"Lighting": {
"$className": "Lighting",
"$properties": {
"Ambient": {
"Color3uint8": [70, 70, 70]
},
"OutdoorAmbient": {
"Color3uint8": [70, 70, 70]
},
"GlobalShadows": true,
"Brightness": 3,
"ShadowSoftness": 0.2,
"EnvironmentSpecularScale": 1,
"EnvironmentDiffuseScale": 1,
"GeographicLatitude": 0,
"ClockTime": 14.5,
"Technology": "Future"
},

"Sky": {
"$className": "Sky",
"$properties": {
"MoonTextureId": "rbxassetid://6444320592",
"SkyboxBk": "rbxassetid://6444884337",
"SkyboxDn": "rbxassetid://6444884785",
"SkyboxFt": "rbxassetid://6444884337",
"SkyboxLf": "rbxassetid://6444884337",
"SkyboxRt": "rbxassetid://6444884337",
"SkyboxUp": "rbxassetid://6412503613",
"CelestialBodiesShown": false,
"StarCount": 3000,
"MoonAngularSize": 11,
"SunAngularSize": 11,
"SunTextureId": "rbxassetid://6196665106"
}
},

"Atmopshere": {
"$className": "Atmosphere",
"$properties": {
"Density": 0.3,
"Offset": 0.25,
"Color": {
"Color3uint8": [199, 199, 199]
},
"Decay": {
"Color3uint8": [106, 112, 125]
},
"Glare": 0,
"Haze": 0
}
}
},

"HttpService": {
"$className": "HttpService",
"$properties": {
Expand Down
172 changes: 0 additions & 172 deletions lib/tablemanager/src/TableState.luau

This file was deleted.

Loading
Loading