Giter VIP home page Giter VIP logo

applejuicecli's Introduction

[ Click to de-stress ]


WaviestBalloon
Self-taught full-stack programmer and sometimes graphic designer
People call me a lot of abbreviations like: Wav, Wavi, Waviest, Wavy, Wave, Wavey

Average dumb Arch user here
Currently learning Rust


Tech I use:

Software I use:


Check out my newest project: Roblox FLog Archive, a small service to archive plaintext FLogs in the Roblox Player binary. Currently working on: ApplejuiceCLI, a Roblox bootstrapper for Linux in CLI form.

applejuicecli's People

Contributors

danii avatar waviestballoon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

applejuicecli's Issues

Add a deployment deleter prompt to `--purge` command

As of now, the only thing the purge command can do is:

  1. --purge cache which deletes all downloaded deployment zips
  2. --purge installs which deletes and uninstalls (removes configuration files and desktop references) all installed deployments

There was a --purge install planned and it has been stubbed as [ x ] Not implemented yet! when ran but it has been stuck like this for far too long and a downside I have realised is that people may accidentally mix up install and installs.

After thinking about it for a while, I came up with a interactive solution which makes the CLI experience a lot more user-friendly, ApplejuiceCLI would first index all of the valid installations in ~/.local/share/applejuice/roblox/* and validating them with your configuration file (just in case there is a folder that hasn't been referenced in the config file, we don't want to make unwanted changes) afterwards, we pop up a menu like this:

Detected Player installations: 
    (1) [67eeb73fefa94b48] [299.7 MiB] [Thursday, 26 October 2023 11:05:28] [Custom FFlags]
    (2) [67eeb73fefa94b48] [299.7 MiB] [Thursday, 26 October 2023 11:05:28]

Detected Studio installations: 
    (1) [67eeb73fefa94b48] [299.7 MiB] [Thursday, 26 October 2023 11:05:28] [Custom FFlags]

Which binary type do you want to uninstall, Player or Studio? (p/s) ______
......
Enter the number of the deployment you wish to uninstall: ______

Sorted from latest date installed to oldest date installed, with information like version hash, install size, install date and if any special changes has been detected like custom FastFlags which the user might want to keep.

BloxstrapRPC Protocol adoption

I have been in cahoots with pizzaboxer and we both agreed that integrating the BloxstrapRPC protocol would be cool. :)
Unfortunately as of now, we have no way of getting the current log files for the running instance of Roblox as we haven't yet figured out the issue with Proton prefixes and library issues.

my truck has snow on it

2024-02-09_20-28
i live in arizona i dont know how to deal with this please help

also framerate and performance very najs, gooj dob

Studio: Proton 8.0 has the same issues as Experimental

As mentioned in #1 - Proton Experimental is currently broken due to changes done by Valve. However, changing to Proton 8.0 replicates the same issue.

On launching to an Experience, Studio instant crashes with BadWindow (invalid Window parameter). I have tried Proton Hotfix alongside Proton EAC Runtime, both replicate this issue as well.

I have also tried launching Studio from terminal, web and from the app menu itself - all provide the same issue.

Ran on Arch Linux x86_64.

Config:

{
  "global": {
    "cli": {},
    "config_version": "0",
    "misc": {
      "overrides": {
        "CHANNEL_DEPLOYMENT_CDN": null,
        "LATEST_VERSION_PLAYER_CHANNEL": null,
        "LATEST_VERSION_STUDIO_CHANNEL": null,
        "LIVE_DEPLOYMENT_CDN": null
      },
      "purge_cached_deployment_after_install": false
    },
    "ui": {}
  },
  "proton_installations": {
    "Proton - Experimental": "/home/robyndawn/.steam/steam/steamapps/common/Proton - Experimental",
    "Proton 8.0": "/home/robyndawn/.steam/steam/steamapps/common/Proton 8.0"
  },
  "roblox_installations": {
    "Player": {
      "channel": "LIVE",
      "configuration": {
        "enable_rpc": true,
        "parameters": "%command%",
        "preferred_compat": "proton"
      },
      "install_path": "/home/robyndawn/.local/share/applejuice/roblox/LIVE/Player/version-17f2f3d7fcfc48f5",
      "preferred_proton": "/home/robyndawn/.steam/steam/steamapps/common/Proton - Experimental",
      "version_hash": "version-17f2f3d7fcfc48f5"
    },
    "Studio": {
      "channel": "LIVE",
      "configuration": {
        "enable_rpc": true,
        "parameters": "%command%",
        "preferred_compat": "proton"
      },
      "install_path": "/home/robyndawn/.local/share/applejuice/roblox/LIVE/Studio/version-4db4dbde9ef74270",
      "preferred_proton": "/home/robyndawn/.steam/steam/steamapps/common/Proton 8.0",
      "version_hash": "version-4db4dbde9ef74270"
    }
  }
}

file not found error, stack overflow or seg fault after a few seconds

Issue

No matter how I try to launch Roblox player or studio with Applejuice a stack overflow or seg fault is triggered.

To reproduce

Try and launch something with Applejuice.

Terminal output

The top 3 lines are spammed to the point I can't see anything else. I tried piping it to a file to get a full log but it never would.

[ ! ] Assuming a asset was missing; falling back to no icon...
[ ! ] Failed to create notification, raw: ''
Error: No such file or directory (os error 2)
[ ! ] Assuming a asset was missing; falling back to no icon...
[ ! ] Failed to create notification, raw: ''
Error: No such file or directory (os error 2)
[ ! ] Assuming a asset was missing; falling back to no icon...
[ ! ] Failed to create notification, raw: ''
Error: No such file or directory (os error 2)
[ ! ] Assuming a asset was missing; falling back to no icon...
[ ! ] Failed to create notification, raw: ''
Error: No such file or directory (os error 2)
[ ! ] Assuming a asset was missing; falling back to no icon...
[ ! ] Failed to create notification, raw: ''
Error: No such file or directory (os error 2)
[ ! ] Assuming a asset was missing; falling back to no icon...
[ ! ] Failed to create notification, raw: ''
Error: No such file or directory (os error 2)
[ ! ] Assuming a asset was missing; falling back to no icon...

thread 'main' has overflowed its stack
fatal runtime error: stack overflow
Aborted (core dumped)

Other details

I use POP!_OS. I know it has a curse that makes software not work but I'm hoping that's not the case here.

Launching Roblox through Steam works perfectly fine.

Handle panic if serde cannot parse JSON/request failure on channel override

Replication: applejuicecli --install player asdf

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error("missing field `clientVersionUpload`", line: 1, column: 125)', src/utils/installation.rs:147:68
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Noticed this after Roblox started locking and restricting deployment channels

Detect Wine error messages

Applejuice will not display the stderr of Wine's output, for example, if there is already a Wineserver running which conflicts with the Wineserver that is trying to be launched then Applejuice will say Studio closed with Exit code: 1:
image

This will be in the rewrite #20

Rewriting Applejuice

The current code base is a mix and mash of some horrible inconsistent code, this was my first proper Rust project that I smashed my head in without knowing much about Rust myself

Even after some code clean-up commits, it's still a horrible mess to work with and I'm getting tired of maintaining it by myself

Task list in no particular order

  • Minimal output mode via environment variable (For interface wrapping)
  • Bootstrapping, installing etc
  • Rewrite SteamOS fixes/QoL functions
  • Move JSON configuration style to a TOML configuration style
  • Allow user to control WINEUSER environment variable, change default to current account name instead of steamuser
  • Rewrite internal.rs (previously setup.rs) for internal functions and Wine server management
  • Better Proton auto-detection (Including searching directories where Flatpak would install Steam)
  • Better argument parsing (Allow for -- and -)
  • TOML configuration reading
  • Rewrite Rich Presence for Discord and BloxstrapRPC
  • Solve/Implement #26
  • Solve/Implement #24
  • Solve/Implement #23
  • Solve/Implement #27
  • Solve/Implement #12 (Related to RPC)
See more rant

The mess got even worse after I decided to strip away from the idea of having multiple installations of Roblox because at the time I had the idea of switching in between deployment channels, for example, if a deployment contained a fix that wasn't present on the LIVE channel, you could just swap over to it and return back to LIVE later and you can have different FastFlag configurations etc

This is horrible; I modified Applejuice for it to not work with multiple installations after the closure of other deployment channels which caused modules to become a jumbled mess of commented out code blocks and unused variables

My plan is to make it much more manageable in the future, this will allow me to implement the features I really want, for example: The actual UI (which I intend to use Qt)

It will take a long time to carry out and I'm unsure if I will have enough time to complete it but it is worth a try as Applejuice is now in a much better stable state, I can work on the rewrite while having piece of mind that no major bugs are present in the main branch

READ ME: Roblox-related issues

Important

Discovered a issue or workaround that isn't listed here?
Submit a Issue with the Roblox-related issue/bug label for issues and/or Fix/Workaround label for workaround and fixes relating to that issue!

The following list outlines issues I have been notified of or have encountered during testing:

Player

Recommendations

Use Proton or Wine both are fine, you might get better performance benefits with Proton though

Known issues

  • Full-screen via F11 will not return the window top bar after pressing F11 again
    ๐Ÿ”ง Fix: Toggle the "Fullscreen" option in the ESC menu instead of pressing the keybind, this will fix the missing top bar
    If you use KDE Plasma (or other that supports this feature), right click on Roblox in your taskbar and resize the window, this will force Roblox to show it's top bar again
    If that doesn't work, set fullscreen option in the ESC menu then restart Player
  • No WebView2
    โŒ Fix: No fix is known currently
  • Cannot login, blank white prompt during 2FA or verification
    ๐Ÿ”ง Fix: Launch and play from the website or use the "Log in With Another Device" option instead and enter the given code into https://www.roblox.com/crossdevicelogin/ConfirmCode
    This issue ties in with no WebView2 in which the prompt relies on
  • I'm getting a message box with: "An error was encountered during authentication. Please try again."
    ๐Ÿ”ง Fix: This is most likely because you are on a carrier-grade NAT/mobile tethering, this also occurs on Windows, if you cannot use a different network, launch Roblox normally in the app mode (Not launching via the website)
  • Launching Player while in Studio causes my mouse to not lock correctly
    โŒ Fix: No fix is known currently - Launch Roblox first in App mode to play and then launch Studio

Studio

Recommendations

Use Proton if possible as it fixes the majority of issues, use Wine if you want stability at the expense of performance and major QoL issues (Random mouse accelerations when moving in viewport, moving BaseParts causing FPS drops, etc)

Warning

Proton Experimental now causes instant crashing for Studio due to recent changes, use Proton 8.0 instead
Install Proton 8.0 and edit your preferred_proton for Studio in ~/.local/share/applejuice/config.json

Important

Studio seems to experience more graphical issues and instability issues on Intel GPUs, it may require more tweaking in order to prevent crashes or to improve stability

Known issues

  • I'm getting a message box with: "No WebView installed, bah bah, Launch failed"
    ๐Ÿ”ง Fix: This issue ties in with no WebView2, you will have to authenticate via browser instead or if that does not work, play a game on Roblox, exit then relaunch Studio
    The authentication data is shared with Studio which will automatically log you in with this method
  • Studio crashes when trying to load a published game/TeamCreate enabled game (Output references BadWindow error)
    ๐Ÿ”ง Fix: A workaround has been found, go to https://create.roblox.com/, find the experience you want to edit and open Studio that way:
    image
    You should be able to load into Team Create sessions this way without crashing.
  • Studio instantly crashes when trying to launch (Output references BadWindow error)
    ๐Ÿ”ง Fix: New changes to Proton Experimental causes instantaneous crashing for Studio, fallback to Proton 8.0 and modify the preferred_proton value for Studio in your ~/.local/share/applejuice/config.json file
  • Colour picker button disappears in code editor when inside of a Color3 function bracket
    ๐Ÿ”ง Fix: This is a intermittent issue that rarely happens, restarting Studio should fix the issue

Feel free to make me aware of any issues you have encountered by creating a new Issue.

Multithreading decompression of downloaded zips

So far, the expanding part of the installation process is rather speedy but isn't speedy enough!
We can implement multi-threading and spread decompression workload between processor cores, which could significantly speed up the zip expansion section.

Unfortunately, this feature wouldn't really benefit hard drives, only solid state drives will benefit.

Implement `generate_help` in all args modules

Recently in a commit (9daaac4) I have added a new function in argparse.rs called generate_help which gives a helpful, clean output of accepted parameters:
image

Current goals are to document all commands and maybe expand the ACCEPTED_PARAMS array to include examples per parameter.

Packaging

It would be nice to have packages built for most major Linux distributions, like Arch, Debian and RedHat.

snoop log file to check when & what game was joined & reset RPC when you leave a game

maybe show what game you're playing on RPC & add a button to join the game or something using this part of the log file?

[FLog::Output] ! Joining game '0dbcde1a-76c3-4be7-9b62-a99a56d8ec1a' place 8571687919 at 10.208.8.140

oh, and leaving a game i believe is signified by [FLog::SingleSurfaceApp] leaveUGCGameInternal so you could probably use that to reset RPC

sorry i have no experience with roblox logs Mahiro Oyama going 'hehe'

Detect if installation cannot continue due to low disk space

During installation, Applejuice crashes when it is unable to write to disk.

Error:

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 28, kind: StorageFull, message: "No space left on device" }', src/utils/installation.rs:237:44
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

In the rewrite #20, I will fix this.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.