Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Merged by Bors] - Basic adaptive batching for parallel query iteration #4777

Closed
wants to merge 61 commits into from

Commits on May 9, 2022

  1. Configuration menu
    Copy the full SHA
    65bd41f View commit details
    Browse the repository at this point in the history
  2. Fix benchmarks

    james7132 committed May 9, 2022
    Configuration menu
    Copy the full SHA
    b110039 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    cf10758 View commit details
    Browse the repository at this point in the history
  4. Remove the clone

    james7132 committed May 9, 2022
    Configuration menu
    Copy the full SHA
    076db46 View commit details
    Browse the repository at this point in the history
  5. Update docs

    james7132 committed May 9, 2022
    Configuration menu
    Copy the full SHA
    12eefa1 View commit details
    Browse the repository at this point in the history

Commits on May 14, 2022

  1. Configuration menu
    Copy the full SHA
    3c76af9 View commit details
    Browse the repository at this point in the history

Commits on May 16, 2022

  1. Update docs.

    Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
    james7132 and alice-i-cecile authored May 16, 2022
    Configuration menu
    Copy the full SHA
    332e851 View commit details
    Browse the repository at this point in the history
  2. Update docs.

    Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
    james7132 and alice-i-cecile authored May 16, 2022
    Configuration menu
    Copy the full SHA
    186fd50 View commit details
    Browse the repository at this point in the history
  3. Update docs.

    Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
    james7132 and alice-i-cecile authored May 16, 2022
    Configuration menu
    Copy the full SHA
    88044d1 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    704cf61 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    cedd756 View commit details
    Browse the repository at this point in the history

Commits on May 17, 2022

  1. Basic adaptive batching

    james7132 committed May 17, 2022
    Configuration menu
    Copy the full SHA
    1f94913 View commit details
    Browse the repository at this point in the history
  2. Fix CI

    james7132 committed May 17, 2022
    Configuration menu
    Copy the full SHA
    5b3a730 View commit details
    Browse the repository at this point in the history
  3. Add par_iter impls

    james7132 committed May 17, 2022
    Configuration menu
    Copy the full SHA
    8b365f4 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    21d95cb View commit details
    Browse the repository at this point in the history
  5. Fix CI

    james7132 committed May 17, 2022
    Configuration menu
    Copy the full SHA
    92af1f4 View commit details
    Browse the repository at this point in the history

Commits on May 21, 2022

  1. Configuration menu
    Copy the full SHA
    2309ab7 View commit details
    Browse the repository at this point in the history

Commits on May 30, 2022

  1. Configuration menu
    Copy the full SHA
    f788a7a View commit details
    Browse the repository at this point in the history
  2. Formatting

    james7132 committed May 30, 2022
    Configuration menu
    Copy the full SHA
    6fd0cf1 View commit details
    Browse the repository at this point in the history

Commits on Jun 15, 2022

  1. Configuration menu
    Copy the full SHA
    10904c1 View commit details
    Browse the repository at this point in the history

Commits on Jun 16, 2022

  1. Configuration menu
    Copy the full SHA
    ac4c524 View commit details
    Browse the repository at this point in the history

Commits on Jun 20, 2022

  1. Update example comments

    Co-authored-by: Mike <mike.hsu@gmail.com>
    james7132 and hymm authored Jun 20, 2022
    Configuration menu
    Copy the full SHA
    0b8c1eb View commit details
    Browse the repository at this point in the history

Commits on Jun 22, 2022

  1. Add documentation comments to bevy_window (bevyengine#4333)

    # Objective
    - Add documentation comments and `#![warn(missing_docs)]` to `bevy_window`.
    - Part of bevyengine#3492
    arnavc52 authored and james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    3674f10 View commit details
    Browse the repository at this point in the history
  2. bevy_render: Fix KTX2 UASTC format mapping (bevyengine#4569)

    # Objective
    
    - KTX2 UASTC format mapping was incorrect. For some reason I had written it to map to a set of data formats based on the count of KTX2 sample information blocks, but the mapping should be done based on the channel type in the sample information.
    - This is a valid change pulled out from bevyengine#4514 as the attempt to fix the array textures there was incorrect
    
    ## Solution
    
    - Fix the KTX2 UASTC `DataFormat` enum to contain the correct formats based on the channel types in section 3.10.2 of https://github.khronos.org/KTX-Specification/ (search for "Basis Universal UASTC Format")
    - Correctly map from the sample information channel type to `DataFormat`
    - Correctly configure transcoding and the resulting texture format based on the `DataFormat`
    
    ---
    
    ## Changelog
    
    - Fixed: KTX2 UASTC format handling
    superdump authored and james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    08bf88b View commit details
    Browse the repository at this point in the history
  3. update hashbrown to 0.12 (bevyengine#5035)

    # Objective
    
    - Update hashbrown to 0.12
    
    ## Solution
    
    - Replace bevyengine#4004
    - As the 0.12 is already in Bevy dependency tree, it shouldn't be an issue to update
    - The exception for the 0.11 should be removed once zakarumych/gpu-descriptor#21 is merged and released
    - Also removed a few exceptions that weren't needed anymore
    mockersf authored and james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    3674e19 View commit details
    Browse the repository at this point in the history
  4. WGSL: use correct syntax for matrix access (bevyengine#5039)

    # Objective
    
    - `.x` is not the correct syntax to access a column in a matrix in WGSL: https://www.w3.org/TR/WGSL/#matrix-access-expr
    - naga accepts it and translates it correctly, but it's not valid when shaders are kept as is and used directly in WGSL
    
    ## Solution
    
    - Use the correct syntax
    mockersf authored and james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    619bdb9 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    65a6c9a View commit details
    Browse the repository at this point in the history
  6. enable optional dependencies to stay optional (bevyengine#5023)

    # Objective
    
    - Optional dependencies were enabled by some features as a side effect. for example, enabling the `webgl` feature enables the `bevy_pbr` optional dependency
    
    ## Solution
    
    - Use the syntax introduced in rust 1.60 to specify weak dependency features: https://blog.rust-lang.org/2022/04/07/Rust-1.60.0.html#new-syntax-for-cargo-features
    
    > Weak dependency features tackle the second issue where the `"optional-dependency/feature-name"` syntax would always enable `optional-dependency`. However, often you want to enable the feature on the optional dependency only if some other feature has enabled the optional dependency. Starting in 1.60, you can add a ? as in `"package-name?/feature-name"` which will only enable the given feature if something else has enabled the optional dependency.
    mockersf authored and james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    8959c2d View commit details
    Browse the repository at this point in the history
  7. gltf: do not import IoTaskPool in wasm (bevyengine#5038)

    # Objective
    
    - Remove a warning when building for wasm
    
    ## Solution
    
    - Do not import the dependency when building for wasm
    mockersf authored and james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    9a8e5fd View commit details
    Browse the repository at this point in the history
  8. Physical viewport calculation fix (bevyengine#5055)

    # Objective
    
    - Fixes early return when viewport is not set. This now matches the description of the function.
    
    ## Solution
    
    - Remove errant try `?`.
    aevyrie authored and james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    03ffbe8 View commit details
    Browse the repository at this point in the history
  9. Cleanups in diagnostics (bevyengine#3871)

    - changed `EntityCountDiagnosticsPlugin` to not use an exclusive system to get its entity count
    - removed mention of `WgpuResourceDiagnosticsPlugin` in example `log_diagnostics` as it doesn't exist anymore
    - added ability to enable, disable ~~or toggle~~ a diagnostic (fix bevyengine#3767)
    - made diagnostic values lazy, so they are only computed if the diagnostic is enabled
    - do not log an average for diagnostics with only one value
    - removed `sum` function from diagnostic as it isn't really useful
    - ~~do not keep an average of the FPS diagnostic. it is already an average on the last 20 frames, so the average FPS was an average of the last 20 frames over the last 20 frames~~
    - do not compute the FPS value as an average over the last 20 frames but give the actual "instant FPS"
    - updated log format to use variable capture
    - added some doc
    - the frame counter diagnostic value can be reseted to 0
    mockersf authored and james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    b89d878 View commit details
    Browse the repository at this point in the history
  10. bevy_reflect: put serialize into external ReflectSerialize type (

    …bevyengine#4782)
    
    builds on top of bevyengine#4780 
    
    # Objective
    
    `Reflect` and `Serialize` are currently very tied together because `Reflect` has a `fn serialize(&self) -> Option<Serializable<'_>>` method. Because of that, we can either implement `Reflect` for types like `Option<T>` with `T: Serialize` and have `fn serialize` be implemented, or without the bound but having `fn serialize` return `None`.
    
    By separating `ReflectSerialize` into a separate type (like how it already is for `ReflectDeserialize`, `ReflectDefault`), we could separately `.register::<Option<T>>()` and `.register_data::<Option<T>, ReflectSerialize>()` only if the type `T: Serialize`.
    
    This PR does not change the registration but allows it to be changed in a future PR.
    
    ## Solution
    
    - add the type
    ```rust
    struct ReflectSerialize { .. }
    impl<T: Reflect + Serialize> FromType<T> for ReflectSerialize { .. }
    ```
    
    - remove `#[reflect(Serialize)]` special casing. 
    
    - when serializing reflect value types, look for `ReflectSerialize` in the `TypeRegistry` instead of calling `value.serialize()`
    jakobhellermann authored and james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    d3b997b View commit details
    Browse the repository at this point in the history
  11. Add benchmarks for schedule dependency resolution (bevyengine#4961)

    # Objective
    
    - Add benchmarks to test the performance of `Schedule`'s system dependency resolution.
    
    ## Solution
    
    - Do a series of benchmarks while increasing the number of systems in the schedule to see how the run-time scales.
    - Split the benchmarks into a group with no dependencies, and a group with many dependencies.
    JoJoJet authored and james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    c5df0d6 View commit details
    Browse the repository at this point in the history
  12. change panicking test to not run on global task pool (bevyengine#4998)

    # Objective
    
    - Fixes bevyengine#4996 
    
    ## Solution
    
    - Panicking on the global task pool is probably bad. This changes the panicking test to use a single threaded stage to run the test instead.
    - I checked the other #[should_panic]
    - I also added explicit ordering between the transform propagate system and the parent update system. The ambiguous ordering didn't seem to be causing problems, but the tests are probably more correct this way. The plugins that add these systems have an explicit ordering. I can remove this if necessary.
    
    ## Note
    
    I don't have a 100% mental model of why panicking is causing intermittent failures. It probably has to do with a task for one of the other tests landing on the panicking thread when it actually panics. Why this causes a problem I'm not sure, but this PR seems to fix things.
    
    ## Open questions
    
    - there are some other #[should_panic] tests that run on the task pool in stage.rs. I don't think we restart panicked threads, so this might be killing most of the threads on the pool. But since they're not causing test failures, we should probably decide what to do about that separately. The solution in this PR won't work since those tests are explicitly testing parallelism.
    hymm authored and james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    d5a5993 View commit details
    Browse the repository at this point in the history
  13. Add a release_all function to Input. (bevyengine#5011)

    Adds a `release_all` function to `Input` that releases all of the currently pressed inputs and marks them as just released.
    Hoidigan authored and james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    606635f View commit details
    Browse the repository at this point in the history
  14. Update clap to 3.2 in tools using value_parser (bevyengine#5031)

    **Why?**
    The `value_parser` `clap` attribute was added in
    [version 3.2.0][0]. With the current version of `3.1.12` users can get
    errors like:
    
    ```
    error: unexpected attribute: value_parser
      --> tools/spancmp/src/main.rs:18:25
       |
    18 |     #[clap(short, long, value_parser, default_value_t = 0.0)]
       |                         ^^^^^^^^^^^^
    ```
    
    See bevyengine#4944 (comment) for more details.
    
    [0]: https://github.com/clap-rs/clap/blob/master/CHANGELOG.md#320---2022-06-13
    mlodato517 authored and james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    5f6a290 View commit details
    Browse the repository at this point in the history
  15. Fix redundant "have" in CONTRIBUTING (bevyengine#5036)

    **This Commit**
    
    1. Makes it so the sentence doesn't read "are contributors who have Have
       actively ..."
    2. Makes it so all three bullet points end in punctuation
    
    **Notes**
    Could also remove the leading "Have" from all bullet points and leave it
    on the previous sentence. That's the least redundant but I guess this is
    more flexible if we want to add a sentence that doesn't start with
    "Have" later.
    mlodato517 authored and james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    ce10028 View commit details
    Browse the repository at this point in the history
  16. Add Input::reset_all (bevyengine#5015)

    Adds a `reset_all` method to reset `pressed`, `just_pressed`, and `just_released` on the `Input`.
    
    Fixes bevyengine#3383
    Hoidigan authored and james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    ec9a481 View commit details
    Browse the repository at this point in the history
  17. Fix Nix section of linux_dependencies.md (bevyengine#5050)

    
    # Objective
    
    `nix-shell` reported: ```error: 'x11' has been renamed to/replaced by 'xlibsWrapper'```.
    
    ## Solution
    
    Replacing `x11` with `xlibsWrapper` in the Nix section of linux_dependencies.md fixes the problem on my system, and bevy projects build fine.
    fluunke authored and james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    d74a318 View commit details
    Browse the repository at this point in the history
  18. Fixed bevy_ui touch input (bevyengine#4099)

    # Objective
    
    `bevy_ui` doesn't support correctly touch inputs because of two problems in the focus system:
    - It attempts to retrieve touch input with a specific `0` id
    - It doesn't retrieve touch positions and bases its focus solely on mouse position, absent from mobile devices
    
    ## Solution
    
    I added a few methods to the `Touches` resource, allowing to check if **any** touch input was pressed, released or cancelled and to retrieve the *position* of the first pressed touch input and adapted the focus system.
    
    I added a test button to the *iOS* example and it works correclty on emulator. I did not test on a real touch device as:
    - Android is not working (bevyengine#3249)
    - I don't have an iOS device
    ManevilleF authored and james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    2381ba2 View commit details
    Browse the repository at this point in the history
  19. Improve entity and component API docs (bevyengine#4767)

    # Objective
    
    The descriptions included in the API docs of `entity` module, `Entity` struct, and `Component` trait have some issues:
    1. the concept of entity is not clearly defined,
    2. descriptions are a little bit out of place,
    3. in a case the description leak too many details about the implementation,
    4. some descriptions are not exhaustive,
    5. there are not enough examples,
    6. the content can be formatted in a much better way.
    
    ## Solution
    
    1. ~~Stress the fact that entity is an abstract and elementary concept. Abstract because the concept of entity is not hardcoded into the library but emerges from the interaction of `Entity` with every other part of `bevy_ecs`, like components and world methods. Elementary because it is a fundamental concept that cannot be defined with other terms (like point in euclidean geometry, or time in classical physics).~~ We decided to omit the definition of entity in the API docs ([see why]). It is only described in its relationship with components.
    2. Information has been moved to relevant places and links are used instead in the other places.
    3. Implementation details about `Entity` have been reduced.
    4. Descriptions have been made more exhaustive by stating how to obtain and use items. Entity operations are enriched with `World` methods.
    5. Examples have been added or enriched.
    6. Sections have been added to organize content. Entity operations are now laid out in a table.
    
    ### Todo list
    
    - [x] Break lines at sentence-level.
    
    ## For reviewers
    
    - ~~I added a TODO over `Component` docs, make sure to check it out and discuss it if necessary.~~ ([Resolved])
    - You can easily check the rendered documentation by doing `cargo doc -p bevy_ecs --no-deps --open`.
    
    [see why]: bevyengine#4767 (comment)
    [Resolved]: bevyengine#4767 (comment)
    Nilirad authored and james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    d025d03 View commit details
    Browse the repository at this point in the history
  20. Change check_visibility to use thread-local queues instead of a chann…

    …el (bevyengine#4663)
    
    Further speed up visibility checking by removing the main sources of contention for the system.
    
     - ~~Make `ComputedVisibility` a resource wrapping a `FixedBitset`.~~
     - ~~Remove `ComputedVisibility` as a component.~~
    
    ~~This adds a one-bit overhead to every entity in the app world. For a game with 100,000 entities, this is 12.5KB of memory. This is still small enough to fit entirely in most L1 caches. Also removes the need for a per-Entity change detection tick. This reduces the memory footprint of ComputedVisibility 72x.~~
    
    ~~The decreased memory usage and less fragmented memory locality should provide significant performance benefits.~~
    
    ~~Clearing visible entities should be significantly faster than before:~~
    
     - ~~Setting one `u32` to 0 clears 32 entities per cycle.~~
     - ~~No archetype fragmentation to contend with.~~
     - ~~Change detection is applied to the resource, so there is no per-Entity update tick requirement.~~
    
    ~~The side benefit of this design is that it removes one more "computed component" from userspace.  Though accessing the values within it are now less ergonomic.~~
    
    This PR changes `crossbeam_channel` in `check_visibility` to use a `Local<ThreadLocal<Cell<Vec<Entity>>>` to mark down visible entities instead.
    
    Co-Authored-By: TheRawMeatball <therawmeatball@gmail.com>
    Co-Authored-By: Aevyrie <aevyrie@gmail.com>
    3 people committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    4132b60 View commit details
    Browse the repository at this point in the history
  21. Mark mutable APIs under ECS storage as pub(crate) (bevyengine#5065)

    # Objective
    Closes bevyengine#1557. Partially addresses bevyengine#3362.
    
    Cleanup the public facing API for storage types. Most of these APIs are difficult to use safely when directly interfacing with these types, and is also currently impossible to interact with in normal ECS use as there is no `World::storages_mut`. The majority of these types should be easy enough to read, and perhaps mutate the contents, but never structurally altered without the same checks in the rest of bevy_ecs code. This both cleans up the public facing types and helps use unused code detection to remove a few of the APIs we're not using internally. 
    
    ## Solution
    
     - Mark all APIs that take `&mut T` under `bevy_ecs::storage` as `pub(crate)` or `pub(super)`
     - Cleanup after it all.
    
    Entire type visibility changes:
    
     - `BlobVec` is `pub(super)`, only storage code should be directly interacting with it.
     - `SparseArray` is now `pub(crate)` for the entire type. It's an implementation detail for `Table` and `(Component)SparseSet`.
     - `TableMoveResult` is now `pub(crate)
    
    ---
    
    ## Changelog
    TODO
    
    ## Migration Guide
    Dear God, I hope not.
    james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    34ae6ba View commit details
    Browse the repository at this point in the history
  22. Callable PBR functions (bevyengine#4939)

    # Objective
    
    - Builds on top of bevyengine#4938 
    - Make clustered-forward PBR lighting/shadows functionality callable
    - See bevyengine#3969 for details
    
    ## Solution
    
    - Add `PbrInput` struct type containing a `StandardMaterial`, occlusion, world_position, world_normal, and frag_coord
    - Split functionality to calculate the unit view vector, and normal-mapped normal into `bevy_pbr::pbr_functions`
    - Split high-level shading flow into `pbr(in: PbrInput, N: vec3<f32>, V: vec3<f32>, is_orthographic: bool)` function in `bevy_pbr::pbr_functions`
    - Rework `pbr.wgsl` fragment stage entry point to make use of the new functions
    - This has been benchmarked on an M1 Max using `many_cubes -- sphere`. `main` had a median frame time of 15.88ms, this PR 15.99ms, which is a 0.69% frame time increase, which is within noise in my opinion.
    
    ---
    
    ## Changelog
    
    - Added: PBR shading code is now callable. Import `bevy_pbr::pbr_functions` and its dependencies, create a `PbrInput`, calculate the unit view and normal-mapped normal vectors and whether the projection is orthographic, and call `pbr()`!
    superdump authored and james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    1eaee67 View commit details
    Browse the repository at this point in the history
  23. depend on dioxus(and bevy)-maintained fork of stretch (taffy) (bevyen…

    …gine#4716)
    
    # Objective
    
    DioxusLabs and Bevy have taken over maintaining what was our abandoned ui layout dependency [stretch](https://github.com/vislyhq/stretch). Dioxus' fork has had a lot of work done on it by @alice-i-cecile, @Weibye , @jkelleyrtp, @mockersf, @HackerFoo, @TimJentzsch and a dozen other contributors and now is in much better shape than stretch was. The updated crate is called taffy and is available on github [here](https://github.com/DioxusLabs/taffy) ([taffy](https://crates.io/crates/taffy) on crates.io). The goal of this PR is to replace stretch v0.3.2 with taffy v0.1.0.
    
    ## Solution
    
    I changed the bevy_ui Cargo.toml to depend on taffy instead of stretch and fixed all the errors rustc complained about.
    
    ---
    
    ## Changelog
    
    Changed bevy_ui layout dependency from stretch to taffy (the maintained fork of stretch).
    
    fixes bevyengine#677
    
    ## Migration Guide
    
    The public api of taffy is different from that of stretch so please advise me on what to do here @alice-i-cecile.
    colepoirier authored and james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    f3eef7f View commit details
    Browse the repository at this point in the history
  24. Configuration menu
    Copy the full SHA
    4ab1465 View commit details
    Browse the repository at this point in the history
  25. Configuration menu
    Copy the full SHA
    7bd1617 View commit details
    Browse the repository at this point in the history
  26. More complete docs

    james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    8bc37a0 View commit details
    Browse the repository at this point in the history
  27. Configuration menu
    Copy the full SHA
    bc2c649 View commit details
    Browse the repository at this point in the history
  28. More CI fixes

    james7132 committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    b57d547 View commit details
    Browse the repository at this point in the history

Commits on Nov 14, 2022

  1. Configuration menu
    Copy the full SHA
    5556377 View commit details
    Browse the repository at this point in the history
  2. Fix CI

    james7132 committed Nov 14, 2022
    Configuration menu
    Copy the full SHA
    a82ff07 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    fd8fefa View commit details
    Browse the repository at this point in the history

Commits on Dec 29, 2022

  1. Configuration menu
    Copy the full SHA
    a751055 View commit details
    Browse the repository at this point in the history
  2. Fix CI

    james7132 committed Dec 29, 2022
    Configuration menu
    Copy the full SHA
    9111a00 View commit details
    Browse the repository at this point in the history

Commits on Jan 6, 2023

  1. Configuration menu
    Copy the full SHA
    266bfce View commit details
    Browse the repository at this point in the history
  2. Fix build

    james7132 committed Jan 6, 2023
    Configuration menu
    Copy the full SHA
    2cfcb16 View commit details
    Browse the repository at this point in the history

Commits on Jan 18, 2023

  1. Configuration menu
    Copy the full SHA
    73e5dfc View commit details
    Browse the repository at this point in the history
  2. Formatting

    james7132 committed Jan 18, 2023
    Configuration menu
    Copy the full SHA
    acf2f5b View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    015e201 View commit details
    Browse the repository at this point in the history

Commits on Jan 20, 2023

  1. Configuration menu
    Copy the full SHA
    c6363ea View commit details
    Browse the repository at this point in the history