#development
1 messages · Page 175 of 1
np
ik everyone hates on it
don’t start with swift for tweaks
genuinely
swift is fine if you already know how tweaks work
don’t transition to it either
It’s good for apps, if you make apps as well then I’d go with swift
but the abstraction levels when working on a tweak in swift are too high
i did, worked out pretty great for me
Abstraction?
you’ll have things working and won’t know why they’re working
???
this tweak i’m making is gonna be kinda dumb but i’ll probably make something decent in the future
i’ll argue that logos is also a big abstraction we need to go back to the MsHookMessageEx 
That’s fine
@queen ruin pinnacle is not buggy wdym
You’ll get where you want eventually
Jk jk
ok no
mooner smells so
I do get some bugs tho
see nightwind agrees with me
I do NOT
Go back to assembly
i told you guys logos is bad smh if even nightwind agrees then i must have a point
waiting for my tweak to segfault
if i do end up using objc i'll prob go logos-less for the lsp lol
or bootloop me
Logos is nice tho, there’s gotta be a way around the lsp right?
i write my tweaks in vi guys
im not far off i write in neovim
.. you are quite far off
neovim with plugins can do pretty much everything vscode can
I had some swift experience and also am a heavy swift playgrounds for ipad user, which is why I went with swift. If these things were not the case I would have gone with objc 💯
Oh also making apps with swift is fun
it can do more than vscode
true lol
i'm similar, i have experience with languages similar to swift which is why i used it
no
vi is different it’s literally just a plain text editor
i also hate objc syntax
It’s nice to have lol, but I spent the latter half of Mooner working without lsp and it honestly wasn’t horrible
so is neovim config less
vi doesn’t even come with syntax highlighting for any language
i don’t remember if neovim does too actually
think vi the same as editing a code file in notepad compared to neovim being on the same level as vscode
you can set the syntax of specific files to a different language
autocmd BufRead,BufNewFile *.swift set syntax=<whatever>
you may not have the swift syntax but you can look for another language with similar syntax
for example elle fits really well with rust syntax
oh lol that works too
i'm not proud of it
thats my proper nvim config tho
which uses treesitter
💪 Swift swift swift
looks very clean
its very easy
soon
You're not, really? Should I expose you further? 
i haven’t been using neovim for my development recently
whats left to expose 
because im still faster at editing in vscode as of now
ohh wait a minute, no
you're using vim motions tho right

lmfao ban rust
no lol for a while i’ve been using regular cmd + arrow keys and regular keyboard + mouse editing behavior
gottem
naturally i’ve become very fast at editing like this
ew
use motions
objc police is harassing me
swift lives matter
we got a swift sympathizer here
AIM pro users
indeed
i will learn but im already learning rust + compiler backends + C ffi + ast parsing
i do NOT need to learn another thing at the same time
motions are easy to learn, if you just go cold turkey and do it you'll get it in under a week
yeah and i do know the shortcuts already
im just faster at editing in vscode normally for now
i knew the shortcuts and vim motions at the same time during my transition and i was faster with vim motions even tho i only knew the basic ones
@queen ruin you use neovim right?
no but I want to
do it then
it’s the difference between having to think what keys to press meanwhile editing the old way is second nature to me and i can pretty much do it in my sleep
can i get lsp to work
yes
neovim is much more lightweight that vscode yes
today's helpful tidbit: %log; exists, use it
no
usually i could run up to 12 vscode windows (aka different repos/projects because i don’t like workspaces) until it started being really really really slow
(there’s no reason not to, I just like hating)
with nvim i can get like 20 at once and it’s still super fast because it’s technically a TUI
not technically it is
can i put multiple hooks at the beginning of my code to hook multiple elements
with all the features some people might not consider it that
wdym
i mean its in the terminal not a gui window
so
%hook Thing1
%end
%hook Thing2
%end
…
unless you're using neovide (a gui wrapper) its a tui
i guess so
no i use iterm2 because i wanted to add ctrl+c to close the output tab and ctrl+s to save
in retrospect i have never used ctrl+s a single time
i always :w
why does your terminal emulator matter for that?
as longs as it passes ctrl + smth to the shell it should work
and ctrl c already closes the output for me
because with the nvim mapping themselves i just could not remap cmd + whatever to do some action so i used the Meta key + whatever instead and made custom iterm2 hot keys to send vim commands
hiii rosieee
oh i also added cmd+/ for comments because that’s muscle memory too
weird i can use them from inside nvim
typically things like that are under <leader> but whatever you prefer
might be a mac thing? idk
yeah
@reef trail @placid kraken this was not done on purpose at all, purely coincidental, but my logo is literally just the Neovim and VS Code logos combined
lol
lmao
@reef trail put behave mswin in your config and try to use your shortcuts https://cdn.discordapp.com/emojis/1019692218564489349.png?size=48&quality=lossless&name=trolley&quality=lossless
it allows shift for visual mode and stuff it’s so weird
wdym shift for visual mode?
also adds ctrl+c to copy instead of y
oh thats weird af
you can use shift+arrow keys to visual select
ew
could i do
%hook thing1
%hook thing2
rest of code here
to hook 2 things and use them to hook to the same code if you know what i mean
afaik, no
Made this in Roblox Studio
https://xyproblem.info/, what are thing1 and thing2
!t roblox
Hey @light quiver, have a look at this!
This Discord server is for iOS jailbreaking, not Roblox. Please keep your discussions on-topic, thank you!
shit
2 different ui elements that i want to link to a piece of code
what area does this even fall in if it's macOS UI IN roblox
@placid kraken https://www.youtube.com/watch?v=xkDWrP5WKhk wow this reminds me of calculus
aaaaa
im sorry for not uploading for a while
this edit took forever lol
still an xy question, what classes
void doStuffHook(NSString* xyz) {
// do stuff here
}
%hook abc
- (void)doStuff1:(NSString*)xyz {
doStuffHook(xyz);
}
%end
%hook def
- (void)doStuff2:(NSString*)xyz {
doStuffHook(xyz);
}
%end```
and yes this is what i'd suggest
assuming that you need to hook both. if you need to hook one or the other, it gets easier
i want to make 2 hooks do the same thing
then use this
like how you typed dostuff1 and dostuff2 could i make those both the same thing?
he means he wants to hook the same methods in 2 different hooks
yes
your only solution really is just copy paste
yes
alr kinda what dhinak’s code looks like
indeed
thanks guys
should i not be testing a tweak on my own phone?
idk what would brick it
should be safe as long as you're not messing with system files
alr
nothing, worst thing that could happen is it'll send you to safe mode
worst case is you restart and rejailbreak without tweak injection
well
pretty much, you can fuck up preboot and /var tho
bricking through software has always been basically impossible on iOS
dfu is available no matter what
and recovery mode is on a separate partition
SSV bug 🙁
eh
?
nvm i’m dumb
<?objc
for some reason objc was at the beginning of my code and idk why
i don’t think that does anything so i’m removing it
import Swift


we need a trollstore emoji because I keep writing "trollstore" instead of "trollface" accidentally, @torn oriole
please
I would be grateful
🧌
in control should i make architecture iphoneos-arm64 for rootless?
also how do i make tweak rootful and rootless when people wanna download it
for now i want it to be rootless but in the future i wanna know how to make it both
Did you copy it from anywhere 



anyone know answers for these?
should be simple
theos will handle that for you. leave control file as is (iphoneos-arm) and define THEOS_PACKAGE_SCHEME=rootless in your Makefile
analogue to this: if you don’t want to build for rootless just leave it out
NO NOT IN THE MAKEFILE GOD NO
why not lol
Put it in RC file
Seeing open source tweaks with that in the makefile are annoying
lol i mean for development only
We were talking about this in the theos discord server earlier today lol
Yeah but still
if he tests on rootless then it’s fine
It's easier to just set it once
In the RC
Then even if he makes more tweaks, he won't have to add it to each makefile
where is the rc file?
put it in the make command*
Uhhhh I forgot where it is on rootless
time for me to put it in the makefile!
Yeah that's what I do sometimes but it's easier to just type "make do"
Honestly for now you can
But I think the RC file should be in /var/jb/usr ?
Or something like that
i haven’t touched the Makefile yet at all, should i just put it at the bottom?
It's gonna be the zsh RC file on dopamine
I don't know if order matters, but I'd put it just below the top group with the target and stuff
should i change INSTALL_TARGET_PROCESSES = SpringBoard
Are you injecting into springboard?
the tweak is for discord so no?
what about TARGET := iphone:clang:latest:7.0
do i change that?
also how do i know what to put for Depends: mobilesubstrate (>= 0.9.5000) in control
does that already let it work on all ios?
Yeah, I'd change it the 7.0 to 13.0 or 14.0 or whatever so you can use newer features, it's basically the sdk you're compiling with
Think of it kind of as a minimum iOS version it'll run on
Keep that the same
alr ima compile now and test
if you have a repo making guide that would be helpful rn
cause ik you have to pr canister but idk how to do it and with what files and how to make my own website
@queen ruin what command do i do to compile
Why would you need to PR canister?
That’s only if you want things like GIR to know about your repo
i do
i want to know how to do all of that, start the repo, make the website, make gir know
i’m not sure how to do any yet sooo
Tbh I’d focus on just making the tweak first
do u know the answer to this icraze?
Are you following a tutorial?
do i have to cd first?
. = current directory
so the tweak directory?
yeah...
there’s nothing new except .theos
show the output of ls in your tweak directory
did it not build? idk what i’m doing wrong
of what?
what is ls?
ohhhh ok
Imagine cy[redacted] was on canister 💀💀
There should be a new folder called "packages" and it should be in there
how did you know this without ls
should i try building again?
what are you using to build
and send the full output
that is
hardly .theos isnt there
that’s what ls gave me
nvm ls removes hidden by default
what ab this
i’m using it to build
i think hes asking what command
make package
not the terminal emulator lol
in your tweaks directory?
yes
and it gave no errors
it has errors
....
😭
maybe cause it’s built for ios 7
what are you on about
1 sec
if it failed to build, then it wont have a build output
it was try to build for ios 7 but it couldn’t cause i’m using newer stuff
ik ios 7 and up but it has to be 14 and up
??
meow
woof
no
here’s an error
show your code
uh ok
my guess is you need to import foundation
but without seeing your code idk if thats the case
wdym
like how you sent ls
like this?
yes
```
why are they not on apple keyboard
hold down the apostrophe key and go to the very last key on the left
where test is there is id’s
you need to import foundation
at the top of the code
yes
what do i put?
#import <Foundation/Foundation.h>
typed on mobile
so that exactly?
yeah it should be
i mean you can if you want
i would keep it tho
incase theres smth you want to change in the future
uhh well i did
i’ll just send it again after i improve it a bit more
if i need to fix something
ohhh lol
btw the reason you had to import Foundation is because NSString is from there
so without importing it the compiler has no idea what NSString is
oh ok thanks
least insane implementation
fn input(String message) {
Long stdin = fdopen(0, "r");
buf[64];
puts(message);
fgets(buf, 64, stdin);
Long len = strlen(buf);
Long index = len - 1;
Long newline = buf + index;
$storeb 0, %newline_15$;
ret buf;
}
pub fn main() {
String res = input("Input pls?\n");
printf!("Did you say %s? That's so true bestie!!", res);
}
my favourite c code, $storeb 0, %newline_15$;
i thought this was a functional language
@reef trail this part of my code is supposed to change a ui image and it’s not and i’m not sure why, i got the right ui thing with FLEXing objc %hook DCDFastImageView -(void)setURLString:(NSString *)urlString { if ([urlString containsString:@"userid"]) { // test %orig(@"https://cdn.discordapp.com/emojis/emojiid.webp"); } else %orig; } %end
is your refridgerator running
print("ballsack")
wait u gave me an amazing idea, thank you
it is now
i added syntax for store instructions
fn input(String message) {
Long stdin = fdopen(0, "r");
buf[64];
puts(message);
fgets(buf, 64, stdin);
Long len = strlen(buf);
Long index = len - 1;
Long newline = buf + index;
store Byte 0 -> newline;
ret buf;
}
that looks weird
this looks suspiciously procedural to me
@radiant idol Hey i think jade is causing this safemode
what does that mean
try disabling 16Player and ArtFull
I think its got something to do with the hide media option when media isn't playing
Uh what
lmfaooooo
i seear it only happens when i open the cc
average french tweak
well considering newline is a pointer, using field access syntax wont make sense semantically
@slim bramble skill issue
@slim bramble this isn't even the beta build you sent me
?
Its the latest on chariz
you caused a crash!
When i open the cc with jade installed i get safemoded
i had akara before and it was fine
Alt let’s end this quickly @radiant idol
What do you hook in the latest jade ver
That you didn’t before
I didnt change any music hooks
nightwind isn't french
rootfs is french
conclusion: nightwind dev tweak is not causing this crash
Ky
jade is not loaded in that crash log?
?
uh wdym
i got jade installed and im using it
Sure but it’s because/related to jade
rootfs are you tesla man
No
nvm
Luckily
yea i realised lol
Sending this to tesla man
Ok
Get OSAnalytics from https://poomsmart.github.io/repo/
You have sent a link to a repo, you can use the buttons below to open it directly in your preferred package manager.
and try and reproduce the crashlog
Okay
Wtf is OSAnalytics
makes crashlogs a bit more useful
I’m probably going to just lldb
ok 👍
@warped sparrow how to reproduce the bug
Install jade play music and open the cc
now what?
did you get it to crash
Yeah
fuck up losers
Do you want the new crashlog from krashkop or the iOS crashlof thing
Oki
least cursed syntax
fn input(String message) {
Long stdin = fdopen(0, "r");
buf[128];
printf(message);
fgets(buf, 128, stdin);
Long len = strlen(buf);
Long index = len - 1;
Long newline = buf + index;
store Byte 0 -> newline;
ret buf;
}
pub fn main() {
String res = input("Input > ");
printf!("\nDid you say %s? That's so true bestie!!\n", res);
}
``` @slender glade do you like this C code
Hell No .
oof looks like OSAnalytics didnt work
rip
ok well lets wait and see if bibi figures out anything
pls 😭 the IL looks even worse
function l $input(l %message_1) {
@start
%tmp_4 =l call $fdopen(w 0, l $input_3)
%stdin_2 =l copy %tmp_4
%buf_6 =l copy $buf_5
%tmp_7 =w call $printf(l %message_1)
%tmp_8 =w call $fgets(l %buf_6, w 64, l %stdin_2)
%tmp_10 =l call $strlen(l %buf_6)
%len_9 =l copy %tmp_10
%tmp_12 =l copy %len_9
%tmp_13 =l copy 1
%tmp_14 =l sub %tmp_12, %tmp_13
%index_11 =l copy %tmp_14
%tmp_16 =l copy %buf_6
%tmp_17 =l copy %index_11
%tmp_18 =l add %tmp_16, %tmp_17
%newline_15 =l copy %tmp_18
storeb 0, %newline_15
%r_v18_19 =l copy %buf_6
ret %r_v18_19
}
export function w $main() {
@start
%tmp_22 =l call $input(l $main_21)
%res_20 =l copy %tmp_22
%tmp_24 =w call $printf(l $main_23, ..., l %res_20)
ret
}
data $input_3 = { b "r", b 0 }
data $buf_5 = { b 64 }
data $main_21 = { b "Input > ", b 0 }
data $main_23 = { b "\nDid you say %s? That's so true bestie!!\n", b 0 }
Burn It In Hell .
okie
Won’t be available before tmr for that
Could ask Tesla
I told him how to debug
👍
it’s this for discord
this is the element i’m trying to replace with that emoji url
replacing that image with that emoji instead
consider doing this with an enmity plugin instead of trying to do it native side
if that’s the ntwerk code, it only works on the pfp in chat
you’d need a different hook for the pfp there
ik i’m modifying it
i changed the hook
to that pfp hook
but i think it’s not working because of something with the void code
there’s no errors just it’s not doing it
i’m gonna go insane if i can’t figure this out @placid kraken
idk why you would torture yourself trying to do it via a tweak
if you do it via a plugin you can just patch the profile action sheet, use findInReactTree to get the pfp Image component, and then change its source prop to your custom url
could you help me do it this way?
i showed you the element
it shouldn’t be much harder
the element is useless lol everything has different names on the JS side
the other part of my code works thought for changing a different pfp
const { ActionSheet } = findByProps('ActionSheet', { all: true }).find(x => !x.hasOwnProperty('useToken'))
const Patcher = create("pfp-emoji");
Patcher.after(ActionSheet, 'render', (_, args, res) => {
...
})
the art of discord mobile client modding is completely different to a tweak
isn’t that for a plug-in?
yeah
😭
look at the source code for existing plugins for more info
could you please just glance at that element and try to help me figure out which void is for the pfp url
pretty please with a cherry on top
@placid kraken pleaseeeeee
it’s fine if you don’t want to but this is the last thing i need
i.. dont know? you can probably view the DCDFastImageView in flex and find wherever the source is stored
i love swiftui
hmm ok so if i wrote this correctly
store Byte 0 -> newline;
``` should be the same as
```c
*newline = 0
``` in c, assuming newline is a pointer, which is required in both cases
i just wrote new code and there was no errors but discord didn’t start so idk
i’m just gonna post 1.0 and fix the bugs a different time
so how do i make my own website and repo and pull request canister after that?
@reef trail how did u do it?
@reef trail's timezone is Europe/London 🇬🇧
It is currently 12:30 AM BST
Pleas don’t just rehost my stuff, delete it first
how do i get that on canister
Idk
other guy earlier said pull request
you have to do a pr on canister apparently
Ima be honest the C line is much easier to understand here
Normal
Just look at the previous repo adding commits for a template on how to do it
@shrewd smelt you seemed like you knew how to do the website stuff
i can’t figure out how to do a .dev website
you gotta register a domain first 
oh
that’s for cloudflare?
yah
should i connect to git?
like how did this guy do it like this @shrewd smelt
yeah put your repo on github so it automatically updates
the home page?
steal the index.html from someone else's repo 
don’t worry i have something that will make you happy soon
@shrewd smelt what do i do here
nothing leave it blank
@grand tide why not just use a GH repo
idk
@shrewd smelt i’m lost
i’m using the template you sent and i have the repo hooked up to cloudflare
it just leads to the sileo website though
what do i put for my website in index?
the one from cloudflare?
@shrewd smelt
also how do i deploy the cloudflare one again
nothing
thats ur homepage
put links to sileo or whatever
just push to the gh repo
i want link to the repo in sileo
<a href="cydia://url/https://cydia.saurik.com/api/share#?source=https://repo.icrazeios.com/">Add to Cydia</a>
<a href="zbra://sources/add/https://repo.icrazeios.com/">Add to Zebra</a>
<a href="sileo://source/https://repo.icrazeios.com/">Add to Sileo</a>
totally not stolen from someone

what do i put for the repo url?
terminal
i’m on mobile
probably works idr
but how?
newterm
it doesn’t work cause i don’t have the source downloaded
how can i run it in github?
without a pc
what jb are you on
dopamine
install apt-utils in sileo i think
it’s missing files
what files
#use a GH repo
the site is already up the issue is actually generating the repo
remove the part of the script that signs the repo
u need the update.sh file thing
did you delete the pool folder
DUDE WHY
OMG
FIRST OF ALL WHY DOES LONG START WITH A CAPITAL L
SSECOND OF ALL buf[128]; ?? IS THIS EQUIV TO A VOID * ARRAY OR WHAT BECAUSE WHERE IS THE TYPE SPECIFICATION??
store Byte 0 -> newline;?!
bruv what the fuck
I Can't Wait Until One Of Your Guys Projects Reaches The Level Of PyIMG4 💕
PyIMG5
.td
Liberty by Steve Vai has 125.5 bpm, is in key E and lasts 2:03
all types are capitalized, it’s easier for the lexer
temporary syntax, currently it just stores bytes
will change this when i stack allocate everything meaning you can hold a pointer to something
wrong link
lemme find it
found it
No it just means that there is an exception we cannot handle
you know what @slender glade what about pointer <- Byte 0 instead of store Byte 0 -> pointer
the <- to ensure you’re storing at that pointer not redeclaring the variable (with =)
dereferencing doesnt exist yet otherwise i would just do that
@slender glade better?
fn input(String message) {
Long stdin = fdopen(0, "r");
Char buf[1024];
printf(message);
fgets(buf, 1024, stdin);
Long len = strlen(buf);
Long index = len - 1;
Long newline = buf + index;
newline <- Byte 0;
ret buf;
}
pub fn main() {
String res = input("Input > ");
printf!("Did you say %s? That's so true bestie!!\n", res);
}
lmao horror
data $buf_5 = { h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0, h 0 }
(i made buffers actually work now)
before it made a single byte technically
if you did buf[255] it did { b 255 }
a single byte with a value of 255
oh i can actually initialise with z
thats better
ok yeah cool
chars are 1 byte
soooo i can do this
Char buf[1024];
and it compiles to
data $buf_5 = { z 1024 }
if i do rs Double buf[1024]; it compiles to ```rs
data $buf_5 = { z 8192 }
because doubles are 8 bytes
if you dont specify a type it assumes Byte
which is.. 1 byte
this is interesting
AstNode::BufferStatement { name, r#type, size } => {
self.tmp_counter += 1;
let buf_name = format!(
"{}_{}",
name.clone(),
self.tmp_counter
);
let buf_size = match size {
ValueKind::Number(val) => val,
other => panic!("Invalid size type {:?}", other)
};
let buf_ty = Self::get_type(r#type).unwrap_or(Type::Byte);
self.data_sections.push(Data::new(
Linkage::private(),
buf_name.clone(),
None,
vec![(Type::Field, DataItem::Const((buf_size as u64 * buf_ty.size()).try_into().unwrap()))],
));
let ty = Type::Long;
let temp = self.new_var(&ty, name.clone().as_str(), false).unwrap();
func.borrow_mut().assign_instruction(temp, ty, Instruction::Copy(Value::Global(buf_name)));
None
}
ty is defined as Long because pointers are always Longs
and you only get a pointer to the data when storing it as a data section
the z type allocates that many bytes all 0 intialized
in this case the buffer is an array of whatever type you choose to intialize with
so the initial buf_size * the size of each kind of thing youre allocating
and you can actually get a specific index and assign something else to it
Ah great GitHub is still broken on mobile and has been for weeks
why so much (3) clone
better!
wdym
oh
buf_name is cloned because it is moved into the data when adding to data sections, the Data struct now owns the value
name doesnt need to be cloned so i removed those ones i guess
what does that have to do with jade

jade isn't even in that log
it's 16player+artfull in the backtrace too
LMAO
imagine it was real
wait
i mean what do you expect from people writing a js compiler
NO WAY LMAOO
@lime pivot did you see this https://vxtwitter.com/batmanaod/status/1782940181428900195?s=46
The best part of this is that combining these three languages into one logo makes exactly the right set of language fans mad, which is made even better because it was retweeted by the editor of the C standard
【QRT of さわらつき (@sawaratsuki1004):】
'C C# C++ https://t.co/AgTs7m6gWO'
💖 1.01K 🔁 99
Is it really there
I'm on mobile so I can't tell
hah that's awesome
I love it
Hello guys, anyone know how to run terminal commands from within a tweak? (Specifically dpkg-deb —build)
Yeah but im using orion -> comet so a subproject, and for some reason it isnt detecting my obj c code
i mean that’s unrelated you should be able to use NSTask from swift
Ima try
If i put it in tweak.m it will prolly never work bc theos subprojects and in springloadprefs.m it also doesnt do anythin (theos just throws an error cannot find executeCommand in scope
I was joking
Yes, yes i did 😂
#import <Foundation/Foundation.h>
NSString *executeCommand(NSString *command) {
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/bin/sh"];
[task setArguments:@[@"-c", command]];
NSPipe *pipe = [NSPipe pipe;
[task setStandardOutput:pipe];
[task launch];
[task waitUntilExit];
NSFileHandle *file = [pipe fileHandleForReading];
NSData *data = [file readDataToEndOfFile];
NSString *output = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
return output;
}
people actually use nstask 
Thanks for the code, but i cant execute it, im using comet and i need to run it from there (so a theos subproject), and comet isnt detecting any objc code, i have tried putting it in the main tweak.m, the one in the subproject and messing with the makefiles
noob
Ok then what do you use?
code just doesn't go missing
its either compiled or its not
if its not you did the makefile wrong
Checked the makefile a zilion times, its in order
ARCHS = arm64 arm64e
TARGET := iphone:clang:latest:15.0
THEOS_PACKAGE_SCHEME = rootless
include $(THEOS)/makefiles/common.mk
BUNDLE_NAME = SpringloadPrefs
SpringloadPrefs_FRAMEWORKS = SwiftUI
SpringloadPrefs_FILES = $(shell find Sources/SpringloadPrefs -name '.swift') $(shell find Sources/SpringloadPrefsC -name '.m' -o -name '.c' -o -name '.mm' -o -name '.cpp') $(shell find /Users/dusti/Projects/springload/springloadprefs/Sources/SpringloadPrefsC -name '.m' -o -name '.c' -o -name '.mm' -o -name '*.cpp')
SpringloadPrefs_SWIFTFLAGS = -ISources/SpringloadPrefsC/include
SpringloadPrefs_INSTALL_PATH = /Library/PreferenceBundles
SpringloadPrefs_CFLAGS = -fobjc-arc -ISources/SpringloadPrefsC/include
include $(THEOS_MAKE_PATH)/bundle.mk
Should be atleas
This is the one in the subproject though
I recommend printing SpringloadPrefs_FILES
Ah it was bc the header file wasnt doing stuff, its now calling the code but its erroring
a header should not be executing code
No but it should be making them interfaces
Like this: #import <Foundation/Foundation.h>
@interface object : NSObject
- (NSString *)executeCommand:(NSString *)command;
@end
mhm
My cool objc code: #import <Foundation/Foundation.h>
NSString *executeCommand(NSString *command) {
FILE *pipe = popen([command UTF8String], "r");
if (!pipe) {
return nil; // Error occurred
}
char buffer[128];
NSMutableString *output = [NSMutableString string];
while (fgets(buffer, 128, pipe) != NULL) {
[output appendString:[NSString stringWithUTF8String:buffer]];
}
pclose(pipe);
return output;
}
This was the one that didnt spit out a million errors
wrap code in `
BACKTICKS!!!!!
Sorry i always forget
add objc after the first 3 and it adds syntax highlighting
Anyway theos brings me this error ```theos stuffs ld: Undefined symbols:
OBJC_CLASS$_MyObjectiveCWrapper, referenced from:
in WalLib.swift.b9c73fa1.o
Ikn but i dont know them for theos and header things
Maybe just zsh or sum
I tried using your code but that all just resulted in errors: ```zsh
Sources/SpringloadPrefsC/SpringloadPrefs.m:5:5: error: use of undeclared identifier 'NSTask'
NSTask *task = [[NSTask alloc] init];
^
Sources/SpringloadPrefsC/SpringloadPrefs.m:5:13: error: use of undeclared identifier 'task'
NSTask *task = [[NSTask alloc] init];
^
Sources/SpringloadPrefsC/SpringloadPrefs.m:5:22: error: use of undeclared identifier 'NSTask'
NSTask *task = [[NSTask alloc] init];
^
Sources/SpringloadPrefsC/SpringloadPrefs.m:6:6: error: use of undeclared identifier 'task'
[task setLaunchPath:@"/bin/sh"];
^
Sources/SpringloadPrefsC/SpringloadPrefs.m:7:6: error: use of undeclared identifier 'task'
[task setArguments:@[@"-c", command]];
^
Sources/SpringloadPrefsC/SpringloadPrefs.m:9:32: error: expected ']'
NSPipe *pipe = [NSPipe pipe;
^
Sources/SpringloadPrefsC/SpringloadPrefs.m:10:6: error: use of undeclared identifier 'task'
[task setStandardOutput:pipe];
^
Sources/SpringloadPrefsC/SpringloadPrefs.m:12:6: error: use of undeclared identifier 'task'
[task launch];
^
Sources/SpringloadPrefsC/SpringloadPrefs.m:13:6: error: use of undeclared identifier 'task'
[task waitUntilExit];
^
9 errors generated.```
oh no i was like just rewriting your code from the screenshot into plaintext
lmfao
i can tell lmao
this minimap is the worst ive seen in a while omg
i need to put this code into different files it hurts me physically
futurerestore.cpp
l
horror
@visual meadow sshrd script tries to pwn however it just hangs on 78.4%, then the pwning process seems to restart, hangs on 4.3%, then does this:
rayyankhnz@Rayyans-MBP SSHRD_Script % ./sshrd.sh boot
[*] Getting device info and pwning... this may take a second
[==================================================] 100.0%
[=== ] 4.3%[*] Device should now show text on screen
rayyankhnz@Rayyans-MBP SSHRD_Script % ./sshrd.sh boot```
the parser for a statement is also 600 lines im gonna have to split a part of the parser into even smaller parts
and then the minimap is the compiler
Bro casually recoding the entirety of ios
they're writing their own programming language in rust i believe
at least c has sanity
who knew writing a C style language in rust would be so hard
c is based
Can only imagine the pain of building an entire compiler…
the rust learning curve is years ahead of any sane language
languages like c you can 100% relatively quickly
but rust will be years upon years to even get to 70%
hi icraze
i only came here to ping nathan bcs gaster was hanging
i'm out of here afterwards
make a better ramdisk while you are at it
I’m a recent victim of nathan sshrd ☹️

not really
i mean im sure theres more optimized ways to do what im doing
I've had my own implimentation since 2019 before everyone even talked about it

but rust is an outlier in terms of languages
its not pain rather complications
its very very fun and i love doing it
but its also very complicated at the same time
yeah because it’s 20x worse
nothing else
no its because its the one language i can run the code and know it wont segfault or crash if it compiles without errors
rare icraze W
fclose ur shit
segfaults are what makes C based
you have to manage your memory yourself instead of it doing it for you
which is very based
im aware lmao
of course before it gets posted
i also loves how it leaks memory all over the place
i love how if you try to pass a number to %s it segfaults and you get no reason for it you have to just look at the dump or whatever
allows for 0 day haxx
I don't care about memleak if my shit panics anyway
segfault inshallah
which is why you handle panics
or don’t
the only way itll panic is if you dont handle a value wrapper correctly
libraries shouldnt panic on their own but should return an Option or Result type
which is what most crates do
if you handle malloc errors you’re either writing something low level, enterprise, or just a fucking nerd

or you just like writing correct c
jazakallah
just a fucking nerd
jazakallah
jizakallah
you spelt it wrong
how the fuck do you handle a kernel panic
you don’t
No I didn’t
garf hitting that shit
oh you meant that panic
alhamdulilah
Typescript 
i thought you meant like a panic!() in rust lmao
just don’t give your application com.Apple.panic.allow
this is a krw tool 
easy
typescript will die if you try to access a field on null without being in a try catch
fclose is done
@primal perch
go outside
in any case icraze should go outside
its an ✨ opinion ✨
Sure but if your code is actually typed, it shouldn't ever do this. Also rust definitely has runtime errors
no
something we should all have and something some of us dont share
it’s bad because I don’t like it

don’t even get me started on typescript Wilson
willy 
icraze loves that willy
Yeah typescript is pretty bad, but it doesn't segfaukt
both are true in theory
typescript is like a false sense of security without zod, you can give some variable a shape, but without asserting that every property inside the object exists and is the type you say it is, then you are risking accessing a property on a value that is instead null or undefined
and i know rust has runtime errors, for example if you try to borrow mutably from a RefCell in the same scope it compiles fine but throws a runtime error, i just meant its far less likely for the code to break if it compiles correctly
Are you hooking the same method twice
@primal perch
Zefram kext
fr
what device
A69
i changed the method but forgot to remove the old one just figured it out as you said it lol


guys i’ve figured it out
icraze doesn’t just hate swift
he hates anything he can’t use himself
I’ve used both rust and swift
Also pretty much every language is a pain to interpret arbitrary data and make sure it's correct
I've used a little go it's been fun
just because youre bad at something doesnt mean it sucks
Ok icraze
a lot of people say rust sucks because the learning curve is so steep
My vacuum sucks
BUY ICRAZE BY NEXUS
the syntax isnt my favourite but i love the primitives and paradigms it introduces
i think differently compared to any other language
Tbh the garbage collector is a pretty neat concept, but I like don't ever have a situation where a garbage collector is too much additional resources for what I'm doing
ESPECIALLY when you introduce an async runtime like tokio
javascript promises suck
like a lot
the apis are horrible and i cant stress that enough
javascript promises compared to tokio futures in rust is a different world
Sure but js is a language designed to render front ends, it doesn't really need much for handing async work
generally, backends
yep it is, then nodejs became a thing and all hell broke loose
None of my backends ever do that much work.
CRCN
i mean yeah but youre not having backends that serve loads and loads of people daily
chargeback rune chargeback nexus
look at some go to rust success stories for backends youll know what i mean
im telling aaron
Yeah and I was arguing about my use case for rust
i’m gonna go insane, i’m trying to make 1 hook do 2 of the same type of thing
rust typically isnt necessary for small services
i hate that people are trying to make rust into a web language though
like rust code that compiles into wasm or whatever
how do i use a hook to do 2 the same type of things with different ids twice
WASM seems like a neat idea but it honestly sounds more useful outside the browser
What do you even mean by this?
when you forget a semicolon in C
oh i’m dumbbbb nvm
bad at explaining things but fixed it
please
i gotta think for a sec before typing here lmao
Writing a parser is easy just parse the code
not when its 600 lines long and doesnt even parse if statements or loops
oh and that 600 lines is for STATEMENTS ONLY
theres more for parsing function declarations, constants, module imports, etc etc etc
ughh
what compiler is this lol
dont need these shitty ass rules if you just write python
pov inconsistent use of tabs and spaces in indentation
just means you're stupid
literally
dos2unix 
like what r u doing to mix up tabs and spaces, writing the code on paper and using OCR?
Modifying someone else's code
🔥
More often I have issues with the indenting messing up though
i need libcompression source code fr
ask apple
I Don't Necessarily Believe They Would Give It To Me .
gonna just send this here so i dont forget
parse
if (value) {
...
} else {
...
}
into a jnz value, @ift_{tmp_counter}, @iff_{tmp_counter}
then create a new label @ift_{tmp_counter} and put all the code in the true branch, making sure to include a jmp @ret_{tmp_counter} at the end
then create a new label @iff_{tmp_counter} and do the same
then create a new label @ret_{tmp_counter} and put the rest of the code in the function function inside this
just a random question because i was confused
what does MSHake do? I cant seem to find any documentation on what it does
and the only examples of its usage are years old
it's a milkshake
oh
what flavor
red-line MT-90 GL4 Gear Oil
oh
tr
sure is strange tho that there's like, 0 docs on this
I see
typical saurik code
MSHookMake
interesting
i’m assuming that’s what it stands for
could be
@grave sparrow new tweak in your favor is out
remember how icrazeware changed you pfp well mixbomware is better and it doesn’t
[[ntwerk+]]
ntwerk+
that repo
what 💀
my versions better btw, it changes icraze’s and dleovl’s
there both different though
i can add on
but a a ron might get angry
i could try making it a gif
true
did u try mine yet?
i need some reviews
ntwerk+
why does no one want my tweak
it’s a new innovation
@grand tide what it do?
it’s a funny discord tweak
get it and look at icraze and dleovl
ill check it out
LOL
this shit funny
Rated 5 stars
One of my favs
epic
It needs to be integrated into sileo natively or something
Ill keep your repo forever and ever
yippee
does it have a logo for u?
cause on sileo it doesn’t for me
and i can’t fix it and idk why
I get so many requests to my repo and I'm not actually sure how many are legit users

