Skip to content

Commit 1b1615f

Browse files
committed
2026-01-19T0416Z
1 parent 3a4323a commit 1b1615f

File tree

18 files changed

+146
-128
lines changed

18 files changed

+146
-128
lines changed

Examples

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -612,7 +612,7 @@ When the file at `rbxl_uri` is modified, RCC is restarted such that RFD always r
612612

613613
The following are valid version strings.
614614

615-
| `"v348"` | `"v463"` |
615+
| `"v347"` | `"v463"` |
616616
| --------- | --------- |
617617
| `"2018M"` | `"2021E"` |
618618
| `"2018"` | `"2021"` |

Source/assets/serialisers/rbxl/image_content.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33

44
def pad_enums(enums: list[int], uri_list: list[bytes]) -> list[bytes]:
5-
return uri_list+[b'']*max(0, len(enums)-len(uri_list))
5+
blank_count = max(0, len(enums)-len(uri_list))
6+
return uri_list + [b''] * blank_count
67
# TODO: test which way actually works.
78
# placeholder = b''
89
# return [

Source/config_type/types/wrappers.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,15 @@ def __new__(cls, val: str) -> Self:
104104

105105

106106
class counter:
107+
'''
108+
We begin counting at 2 to avoid any potential bugs with beginning at iden no. 1.
109+
'''
110+
107111
def __init__(self) -> None:
108112
super().__init__()
109-
self.count = 0
113+
self.count = 2
110114

111115
def __call__(self, *a) -> int:
116+
result = self.count
112117
self.count += 1
113-
return self.count
118+
return result

Source/launcher/subparsers/args_aux/clear_cache.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def _(
2020
sub_parser: argparse.ArgumentParser,
2121
) -> None:
2222
sub_parser.add_argument(
23-
'--clear_cache',
23+
'--clear_temp_cache',
2424
action='store_true',
2525
help=r'Deletes cached content specific to the host you are connecting to. Searches in the %%LocalAppData%%\Temp\Roblox\http directory.',
2626
)
@@ -33,7 +33,7 @@ def _(
3333
args_list: list[logic.base_entry],
3434
) -> list[logic.base_entry]:
3535

36-
if not args_ns.clear_cache:
36+
if not args_ns.clear_temp_cache:
3737
return []
3838

3939
base_args = [

Source/routines/_logic.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ class bin_entry(popen_entry, loggable_entry):
176176
'''
177177

178178
auto_download: bool = False
179-
clear_cache: bool = False
179+
clear_temp_cache: bool = False
180180
web_host: str = 'localhost'
181181
web_port: int
182182

@@ -266,7 +266,7 @@ def make_aux_directories(self):
266266
for p in paths:
267267
os.makedirs(p, exist_ok=True)
268268

269-
def update_fflags(self) -> None:
269+
def update_fvars(self) -> None:
270270
'''
271271
Updates the FFlags in the game configuration.
272272
'''
@@ -294,11 +294,11 @@ def bootstrap(self) -> None:
294294
bin_type=self.BIN_SUBTYPE,
295295
log_filter=self.logger,
296296
)
297-
if self.clear_cache:
297+
if self.clear_temp_cache:
298298
clear_cache.process(self.web_host)
299299
self.save_app_settings()
300300
self.make_aux_directories()
301-
self.update_fflags()
301+
self.update_fvars()
302302

303303

304304
@dataclasses.dataclass(kw_only=True, unsafe_hash=True)

Source/routines/rcc/__init__.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,11 @@ def save_starter_scripts(self) -> None:
110110
startup_script = startup_scripts.get_script(self.game_config)
111111
f.write(startup_script)
112112

113-
def update_fflags(self) -> None:
113+
@override
114+
def update_fvars(self) -> None:
114115
'''
115-
Updates the FFlags in the game configuration based on the Rōblox version.
116-
Individual FFlags, rather than the entire file, override the ones that already exist.
116+
Updates FFlags, FInts, et c. in the game configuration based on the Rōblox version.
117+
Individual fast variables, stored in variable `new_flags`, are what get overwritten to the flile.
117118
'''
118119
# TODO: move FFlag loading to an API endpoint.
119120
version = self.retr_version()
@@ -122,7 +123,7 @@ def update_fflags(self) -> None:
122123
}
123124

124125
match version:
125-
case util.versions.rōblox.v348:
126+
case util.versions.rōblox.v347:
126127
path = self.get_versioned_path(
127128
'ClientSettings',
128129
'RCCService.json',
@@ -214,7 +215,7 @@ def gen_cmd_args(self) -> tuple[str, ...]:
214215
suffix_args.append('-verbose')
215216

216217
match self.retr_version():
217-
case util.versions.rōblox.v348:
218+
case util.versions.rōblox.v347:
218219
return (
219220
f'-PlaceId:{self.place_iden}',
220221
'-LocalTest', self.get_versioned_path(

Source/storage/funds.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def first_time_setup(self) -> None:
1919
{self.field.FUNDS.value} INTEGER NOT NULL,
2020
PRIMARY KEY(
2121
{self.field.USER_ID_NUM.value}
22-
) ON CONFLICT IGNORE
22+
) ON CONFLICT REPLACE
2323
);
2424
""",
2525
)

Source/storage/persistence.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,48 +30,53 @@ class field(enum.Enum):
3030
TARGET = '"target"'
3131
KEY = '"key"'
3232
VALUE = '"value"'
33+
TYPE = '"type"'
3334

3435
@override
3536
def first_time_setup(self) -> None:
3637
query = f"""
3738
CREATE TABLE IF NOT EXISTS "{self.TABLE_NAME}" (
3839
{self.field.SCOPE.value} TEXT NOT NULL,
40+
{self.field.TYPE.value} TEXT NOT NULL,
3941
{self.field.TARGET.value} TEXT NOT NULL,
4042
{self.field.KEY.value} TEXT NOT NULL,
4143
{self.field.VALUE.value} TEXT,
4244
PRIMARY KEY(
4345
{self.field.SCOPE.value},
4446
{self.field.TARGET.value},
47+
{self.field.TYPE.value},
4548
{self.field.KEY.value}
4649
) ON CONFLICT REPLACE
4750
);
4851
"""
4952
self.sqlite.execute(query)
5053

51-
def set(self, scope: str, target: str, key: str, value) -> None:
54+
def set(self, scope: str, target: str, key: str, value, typ: str) -> None:
5255
value_str = json.dumps(value)
5356
query = f"""
5457
INSERT INTO {self.TABLE_NAME}
5558
(
5659
{self.field.SCOPE.value},
5760
{self.field.TARGET.value},
5861
{self.field.KEY.value},
62+
{self.field.TYPE.value},
5963
{self.field.VALUE.value}
6064
)
61-
VALUES (?, ?, ?, ?)
65+
VALUES (?, ?, ?, ?, ?)
6266
"""
63-
self.sqlite.execute(query, (scope, target, key, value_str))
67+
self.sqlite.execute(query, (scope, target, key, typ, value_str))
6468

65-
def get(self, scope: str, target: str, key: str):
69+
def get(self, scope: str, target: str, key: str, typ: str):
6670
result: list[tuple[Any]] | None = self.sqlite.execute_and_fetch(
6771
query=f"""
6872
SELECT {self.field.VALUE.value}
6973
FROM {self.TABLE_NAME}
7074
WHERE {self.field.SCOPE.value} = ?
7175
AND {self.field.TARGET.value} = ?
76+
AND {self.field.TYPE.value} = ?
7277
AND {self.field.KEY.value} = ?
7378
""",
74-
values=(scope, target, key),
79+
values=(scope, target, typ, key),
7580
)
7681
json_str = self.unwrap_result(result, only_first_field=True)
7782
if json_str is not None:
@@ -113,6 +118,7 @@ def query_sorted_data(
113118
FROM {self.TABLE_NAME}
114119
WHERE {self.field.SCOPE.value} = ?
115120
AND {self.field.KEY.value} = ?
121+
AND {self.field.TYPE.value} = "sorted"
116122
AND JSON_VALID({self.field.VALUE.value})
117123
AND {int_casted_skeleton} IS NOT NULL
118124
{value_bound_suffix}

0 commit comments

Comments
 (0)