Skip to content

Releases: LittleBigRefresh/Refresh

v2.0.0-rc5

25 Aug 03:58
v2.0.0-rc5
b2e9691
Compare
Choose a tag to compare
v2.0.0-rc5 Pre-release
Pre-release

This is a release candidate. A full changelog will be produced for the full release.

Commits

  • 102521f: Fix email becoming unverified upon any user update (jvyden)
  • 6b813c0: Bump room expiration timeout up to 2 minutes (jvyden)
  • bab4a15: Add game version tracking in level data (jvyden)
  • f840720: Allow email verification codes to expire (jvyden)
  • af1539c: Fix expirations not actually working smh (jvyden)
  • 0581025: Fix incorrect server digest (jvyden)
  • 4ea8dbe: Implement filtering levels by version (jvyden)
  • b2e9691: Fix debug code compiling in release (jvyden)

v2.0.0-rc4

23 Aug 01:23
v2.0.0-rc4
0145d92
Compare
Choose a tag to compare
v2.0.0-rc4 Pre-release
Pre-release

This is a release candidate. A full changelog will be produced for the full release.

Commits

  • c305f3c: Explicit flag for use of Discord assets (jvyden)
  • 0145d92: Add request statistics tracking functionality (jvyden)

v2.0.0-rc3

22 Aug 00:33
v2.0.0-rc3
99d02d6
Compare
Choose a tag to compare
v2.0.0-rc3 Pre-release
Pre-release

This is a release candidate. A full changelog will be produced for the full release.

Commits

  • 0d619d1: Make room timeout 1 minute (jvyden)
  • 15ae273: Fix CurrentlyPlayingCategory missing metadata (jvyden)
  • 54c63d5: Allow specifying Grafana dashboard in integration config (jvyden)
  • b086f9e: Add IntegrationConfig to unit test server (jvyden)
  • cfcd697: Add support for refresh tokens (jvyden)
  • aae21ee: Bump Microsoft.NET.Test.Sdk from 17.7.0 to 17.7.1 (dependabot[bot]) #95
  • 9222af5: Bump Realm from 11.3.0 to 11.4.0 (dependabot[bot]) #96
  • 5be9ada: Bump Microsoft.CodeAnalysis.CSharp from 4.6.0 to 4.7.0 (dependabot[bot]) #97
  • 6c64a7e: Bump Realm from 11.3.0 to 11.4.0 (#96) (Jayden) #96
  • e72437b: Bump Microsoft.NET.Test.Sdk from 17.7.0 to 17.7.1 (#95) (Jayden) #95
  • 23b1747: Bump Microsoft.CodeAnalysis.CSharp from 4.6.0 to 4.7.0 (#97) (Jayden) #97
  • d5f611e: Bump Bunkum to v3.3.14 (jvyden)
  • f071fb9: Apply custom rate limits to authentication-related endpoints (jvyden)
  • 5fa89d0: Cleanup usages (jvyden)
  • d5b0094: Support account deletion (jvyden)
  • 99d02d6: Revert package updates (jvyden)

v2.0.0-rc2

14 Aug 02:25
v2.0.0-rc2
5627b79
Compare
Choose a tag to compare
v2.0.0-rc2 Pre-release
Pre-release

This is a release candidate. A full changelog will be produced for the full release.

Commits

  • d1c2504: Custom RPC configuration data for APIv3 (jvyden)
  • 451ac8b: Fix mismatched casing for room players (jvyden)
  • 4b1a434: Add game and platform to rooms (jvyden)
  • 1bdcb67: how about you actually commit the changes i made (jvyden)
  • db4e577: Ability to create users from command line (jvyden)
  • dcd0e13: Change ApplicationId type to string in RichPresenceConfiguration (jvyden)
  • 37ffb19: Add functionality to remove expired game rooms (jvyden)
  • 0a4e5e7: Add docker support (#92) (Josh) #92
  • 2bfe59d: Allow tracking player counts for levels (jvyden)
  • 80d674e: Fix minimal levels missing certain props e.g. team pick status (jvyden)
  • 0058c73: Add busiest/currentlyPlaying category (jvyden)
  • 7bf385d: Add endpoint to reset users' passwords (jvyden)
  • 5d199ab: Allow authenticated users to reset own password (jvyden)
  • 50eeb3a: Ability to retrieve version from assembly (jvyden)
  • f7b4b7b: Include git tag version in published builds (jvyden)
  • 9e47e6b: Fix version variable breaking for branch pushes (jvyden)
  • 0f3cdd4: ok yaml (jvyden)
  • 8529119: shit (jvyden)
  • 441ba83: Specify commit hash when downloading release artifact (jvyden)
  • 5627b79: Revert "Specify commit hash when downloading release artifact" (jvyden)

v2.0.0-rc1

12 Aug 02:15
v2.0.0-rc1
e3b7d82
Compare
Choose a tag to compare
v2.0.0-rc1 Pre-release
Pre-release

This is a release candidate. A full changelog will be produced for the full release.

Commits

  • 52be898: Increase default level limit from 20 to 100 (jvyden)
  • 5f116bf: Implement better hot reload (jvyden)
  • 27bf75f: Default set of network settings (jvyden)
  • 371059f: Track yays/boos (jvyden)
  • 3b47e64: This source generator needs to be rewritten (jvyden)
  • 303000d: Implemented Custom Rewards and fixed a bug where you couldn't remove levels. (turecross321) #65
  • 19433ad: Don't worry about it (turecross321) #65
  • 0a35613: Implement Minimum and Maximum Player Amounts (turecross321) #65
  • 1aeb873: Implement Same Screen Game (turecross321) #65
  • 1dde45d: Implement v3 API response + name changes (turecross321) #65
  • 021fcb6: Modify comment to reflect changed variable name (turecross321) #65
  • bea4e74: Fix hot reload changes causing unit tests to fail (jvyden)
  • d2f4a9c: Merge branch 'main' into main (Jayden) #65
  • dbed802: Update data model conversion to use common interface (jvyden) #65
  • cf13b14: Implement Missing Level Properties (#65) (Ture) #65
  • a2ffa00: Merge branch 'main' into ratings (jvyden)
  • 45a64d3: Merge remote-tracking branch 'origin/main' (turecross321) #69
  • 6f7c084: Implement Clearing Queue (turecross321) #69
  • f4e8fcf: I FORGOT THIS EXISTED (turecross321) #69
  • 54bef41: Implement Clearing Queue (#69) (Jayden) #69
  • b3eab11: Move GameUser and GameLevel LBP parts into dedicated classes (jvyden)
  • d7d4afd: Completely remove ApiV2 (jvyden)
  • 4fd462d: Hotfix activity stream not working due to new data type (jvyden)
  • 23893c5: Use invariant number format when parsing photo bounds (jvyden)
  • fbca2f2: Allow filling in user data when making GameLevelResponse object (jvyden)
  • 6a30905: Add yay/boo counts to API response (jvyden)
  • e3195a4: Merge branch 'ratings' (jvyden)
  • b22a51d: Add APIv2 removal notice (jvyden)
  • c476e05: Implement Removing Photos (turecross321) #71
  • 0c5f258: Implement Deleting Photos via API (turecross321) #71
  • 900db83: Add heart count to API level response (jvyden)
  • 5b57343: Add 'Most Loved' level category (jvyden)
  • d40b88e: Add Liked Levels category (jvyden)
  • 717fe2c: Add level category for unique plays (jvyden)
  • 588ba6f: Address Requested Changes (turecross321) #71
  • d90c879: Implement Deleting Photos (#71) (Jayden) #71
  • d152eda: Update Bunkum to 3.3.12 (jvyden)
  • 442c41a: Update to NPTicket 3.0.0 (jvyden)
  • f5bab07: Merge branch 'more-categories' (jvyden)
  • b8b14f1: Re-implement statistics endpoint (jvyden)
  • 79e4f1d: Fix level publishing (jvyden)
  • 41677fa: Revert "Update to NPTicket 3.0.0" (jvyden)
  • be28669: Update Realm to 11.3.0 (jvyden)
  • 001d916: Update NPTicket to 3.1.0 (jvyden)
  • 0823c4f: Bump AttribDoc from 1.0.1 to 1.1.0 (dependabot[bot]) #75
  • e883aac: Bump AttribDoc from 1.0.1 to 1.1.0 (#75) (Jayden) #75
  • 03fa6c4: Add basic support for ticket verification (jvyden)
  • 0bbf1ba: IP verification (jvyden)
  • 9d65fd8: Allow updating IP authentication in profile settings (jvyden)
  • 481d6ea: Make denying actually deny (jvyden)
  • 82700d2: Add registration endpoint (jvyden)
  • 68fc824: Add instance metadata endpoint (jvyden)
  • 66ddb20: Mark ApiRegisterRequest as non-nullable (jvyden)
  • 93fa272: Fix register endpoint requiring authentication (jvyden)
  • dcd279a: Add support for Server Announcements (jvyden)
  • dc0e375: Implement setting role on a user, return extra information in users/me endpoint (jvyden)
  • 0ba570f: Allow endpoints to define a minimum role (jvyden)
  • 8a5ffee: Ability to manage server announcements from API (jvyden)
  • 1b7ed77: Return own user class when updating profile (jvyden)
  • fd165b7: Don't consider role if authentication isn't required on an endpoint (jvyden)
  • 16af6d0: Grant restricted users ability to view most authenticated things on the API (jvyden)
  • a91894e: Revoke all tokens if banning user (jvyden)
  • aa113c2: Return total photos in statistics endpoint (jvyden)
  • 1f3e574: Reduce amount of used services/middlewares in tests (jvyden)
  • 7fd25c6: Add tests for creating/updating levels (jvyden)
  • d8b3d85: Use interface for time inside database context (jvyden)
  • efba730: Use mock time in tests (jvyden)
  • ebbb092: Test token expiry (jvyden)
  • 0dafabf: Improve auth/scoring/level tests, add tests for user retrieval (jvyden)
  • 5d609c9: Add tests for ApiV2Middleware and CrossOriginMiddleware (jvyden)
  • ae9c1b9: Remove NotFoundLogMiddleware (jvyden)
  • 75f24f0: Add tests for catching invalid photo bounds format (jvyden)
  • 79410e5: Unit tests for comment publishing (jvyden)
  • c52c86b: Add tests for DigestMiddleware (jvyden)
  • 6f5c895: Add tests for LegacyAdapterMiddleware (jvyden)
  • 635eb93: Organize test classes (jvyden)
  • 1668588: Add support for "workers" (jvyden)
  • 16406a9: Add ban expiry system (jvyden)
  • be33e38: Extend ban expiry system to restrictions (jvyden)
  • d24391d: Refactor punishment methods and add punishment tests (jvyden)
  • fa3f7c4: Add API endpoints for banning/restricting/pardoning users (jvyden)
  • db1ad0b: Fix name being the same as uuid in admin endpoints (jvyden)
  • c7502d0: Make restrict endpoint actually restrict users (jvyden)
  • 817b910: Bump Microsoft.NET.Test.Sdk from 17.6.3 to 17.7.0 (dependabot[bot]) #89
  • 654c4ed: Implement retrieval of extended user information for administrators (jvyden)
  • 786c1af: Bump Microsoft.NET.Test.Sdk from 17.6.3 to 17.7.0 (#89) (Jayden) #89
  • 9fe2076: Implement maintenance mode for server (jvyden)
  • d329cc4: Fix unit test failures resulting from null config (jvyden)
  • 8203871: Refactor Legacy API to use IDataConvertableFrom system, add missing properties (jvyden)
  • 8b58361: Fix required IP auth even if ticket was verified (jvyden)
  • 3aca746: Implement LastLogin to fix PLRPC (jvyden)
  • 60dca6a: Implement team picks (jvyden)
  • 6218211: Add category for team picked levels (jvyden)
  • 437cbc9: Add option to require users to activate accounts by logging in via game (jvyden)
  • 0a96dcf: Prevent account stealing by adding toggle for each platform (jvyden)
  • ad80ced: Add total team pick count to planetStats (jvyden)
  • 14f5b6a: Add NPEA00324 to LBP2 title ids, improve logging (jvyden)
  • 20990c6: Use new syntax for warning blocks in readme (Jayden)
  • 745714f: Refresh the README.md (Jayden)
  • b29c4c3: REFESH (Jayden)
  • a954096: Bump max request count to 400 (jvyden)
  • c880b1a: Implement Discord RPC negotiation API (jvyden)
  • 05ec284: Add functional SMTP Service with configuration (jvyden)
  • 908d0dd: Use email in-place of username for logging in/resetting password (jvyden)
  • e856f4e: Return email verification status in extended game user (jvyden)
  • bc92ad4: Logic for sending email code (jvyden)
  • b7e6352: Link to verification page in email (jvyden)
  • 1ae244a: Endpoints for verifying/resending email (jvyden)
  • c5f8569: Allow changing email address on account (jvyden)
  • beeb15e: Rename "AssetConfiguration" to "Assets" to comply with spec (jvyden)
  • 047de84: Properly return actual assets (jvyden)
  • cb64a0f: Fix release script not including tags with dashes (jvyden)
  • ae8fa03: Unfuck broken regex (Jayden)
  • e3b7d82: Allow all tags to be released (jvyden)

v1.6.0

12 Jul 00:58
v1.6.0
c7dac96
Compare
Choose a tag to compare

Hello everyone! Today, we're releasing v1.6.0. v1.6.0 comes with a couple notable changes, mostly to the API and the website.

Website gains new functionality!

To start off, we've added some new features to the website. You'll notice the design has shifted a little bit, and things are a lot more dynamic as they load in:

2023-07-11.20-47-21.mp4.processed.mp4

We've implemented some loading indicators here and there, and started leveraging infinite scrolling for things like our levels, photos, and activity pages. Yep, that's right, we've introduced Recent Activity in this update. We've been tracking data for Recent Activity ever since v1.3.0, but we haven't made use of this data in any official projects yet. It's looking pretty sick in my opinion.

Preview of Recent Activity on a level

Redesigned navbar and categories

Additionally, we've implemented the groundwork for editing a profile. There's not much you can do with this yet (only being able to change your description) but in the future, you'll be able to change things like your password and avatar and such.

New profile settings page

Redesigned Notifications Page

Better CLI support

We switched to CommandLineParser for CLI interactions, meaning you'll have a better experience when interacting with Refresh through the CLI. Not much can be done at the moment, but we're sure it'll be a useful tool in the future:

$ ./Refresh.GameServer --help
Starting Refresh with NuGet Bunkum
Refresh.GameServer 1.0.0
Copyright (C) 2023 Refresh.GameServer

  -i, --import_assets    Re-import all assets from the datastore into the database. This is a destructive action, only use when upgrading to <=v1.5.0

  -I, --import_images    Convert all images in the database to .PNGs. Otherwise, images will be converted as they are used

  -d, --generate_docs    Generate API V3 Documentation

  -f, --force            Force all operations to happen, skipping user consent

  --help                 Display this help screen.

  --version              Display version information.

API v3

We've implemented a new version of the API, giving it a complete overhaul. The new API changes some routes for consistency with others, and removes PascalCase in favor of camelCase. Under the hood, we've added new types that map from our database types (the ones being sent with API v2) to have a consistent model to serialize with. This makes the back-end of things more flexible for us, and for you.

Additionally, everything gets wrapped in a new response like so:

/api/v3/users/name/jvyden420

{
  "success": true,
  "data": {
    "userId": "6457396956740973018b53e1",
    "username": "jvyden420",
    "iconHash": "170d64acc43dc6e195cbdf396fd27ca56bb2f69d",
    "description": "",
    "location": {
      "x": 17955,
      "y": 20863
    },
    "joinDate": "1970-01-01T00:00:00+00:00"
  }
}

We think this is a lot better, as the API can now return errors when something goes wrong:

/api/v3/users/name/nobody

{
  "success": false,
  "error": {
    "name": "ApiNotFoundError",
    "message": "The requested resource was not found",
    "statusCode": 404
  }
}

It can also be used to get extra context about lists (yes, we finally refactored this system!):

/api/v3/levels/newest?count=1

{
  "listInfo": {
    "nextPageIndex": 2,
    "totalItems": 20
  },
  "success": true,
  "data": [
    {
      "levelId": 20,
      "publisher": {
        "userId": "6457396956740973018b53e1",
        "username": "jvyden420",
        "iconHash": "170d64acc43dc6e195cbdf396fd27ca56bb2f69d",
        "description": "",
        "location": {
          "x": 17955,
          "y": 20863
        },
        "joinDate": "1970-01-01T00:00:00+00:00"
      },
      "title": "krank",
      "iconHash": "g10682",
      "description": "",
      "location": {
        "x": 19162,
        "y": 41328
      },
      "publishDate": "2023-06-11T02:35:43.486+00:00",
      "updateDate": "2023-06-11T02:35:43.486+00:00"
    }
  ]
}

This is all documented through the website (via the /api/v3/documentation endpoint), and you can access it via http://localhost:4200/documentation assuming you're running a copy of Refresh and refresh-web.

Preview of documentation page

Information about types isn't quite ready yet, but we expect to implement this eventually.

Warning
Naturally, this all means that APIv2 is deprecated. We expect to remove it entirely in v1.7.0, so be sure to migrate your applications (if any).

Conclusion

This ended up being a fairly small update functionality-wise for the server, but it's still a pretty important update regardless. Enjoy the new bits and bobs!

Commits

  • c58f555: Migrate CLI invocations to CommandLineParser (jvyden)
  • a1b018f: Fix XMLDoc syntax in source generator and enable doc file generation (jvyden)
  • c861a62: Update refresh-web artifact (jvyden)
  • 497949c: Rename current API implementation to ApiV2 (jvyden)
  • 5ec38f7: API V3 proof of concept (jvyden)
  • 85cef54: Document user API endpoints and improve error handling (jvyden)
  • 2d2cf05: Cache ApiNotFoundError (jvyden)
  • 1c9fc15: Parameter-based documentation? (jvyden)
  • 0724158: Documentation generation (jvyden)
  • 937c347: Add parameter type and required authentication (jvyden)
  • 122f523: Add API documentation to release artifacts (jvyden)
  • e82f9c3: Add paging to API and improve documentation support (jvyden)
  • 8c2b6bc: Implement DatabaseList for consistent paging and item counting (jvyden)
  • b724634: Adjust list info logic (jvyden)
  • dd0fcca: Remove unused constructor in DatabaseList (jvyden)
  • 381e0fd: Implement totals for GetRandomLevels (jvyden)
  • 577661e: Remove trailing periods from DocSummary and HelpText strings (jvyden)
  • 61a9524: Port photos API to v3 (jvyden)
  • 257816f: Cleanup docs (jvyden)
  • 79f08b2: Bump Bunkum from 3.3.10 to 3.3.11 (#62) (dependabot[bot]) #62
  • a6d63f8: Bump Microsoft.NET.Test.Sdk from 17.6.2 to 17.6.3 (#61) (dependabot[bot]) #61
  • 3a0aa1d: Merge branch 'main' into api-v3 (jvyden)
  • 9c9fa58: Port ResourceApiEndpoints to ApiV3 (jvyden)
  • 82e44be: Add proper conversion methods for V3 API data types (jvyden)
  • b9b266d: Document resources API (jvyden)
  • 1be0fb8: Port NotificationApiEndpoints to ApiV3, add request method to docs (jvyden)
  • 53318fd: Add missing DocSummary to router parameters in API methods (jvyden)
  • 0bb8c1d: Port MatchingApiEndpoints to ApiV3 (jvyden)
  • 9d32ccb: Make all base endpoints plural, port LeaderboardApiEndpoints to ApiV3 (jvyden)
  • 2d4e1f5: Fix missing implementation of ApiGameScoreResponse.FromOldList (jvyden)
  • 5ca6e05: Perform some organization, move authentication system to ApiV3 (jvyden)
  • 87f668a: Remove all authenticated endpoints from ApiV2 (jvyden)
  • a34ac53: Hastily port ActivityApiEndpoints to ApiV3 (jvyden)
  • eb7cba2: Point unit tests to new endpoints (jvyden)
  • ac6f643: Sort documentation entries by route name (jvyden)
  • f76d946: Rename some API endpoints for clarity (jvyden)
  • b8a5ed5: Switch to AttribDoc for documentation generation (jvyden)
  • 6433251: Update DocumentationService to use ApiRouteResponse (jvyden)
  • 51d7c0d: Restore API route sorting by route name (jvyden)
  • e716180: Change password reset and logout HTTP methods to PUT (jvyden)
  • 71b8620: Enforce camelcasing on authentication-related API requests (jvyden)
  • 3f64875: Refactor UpdateUserData method and add new API endpoint for updating user (jvyden)
  • cf93229: Remove colors from notifications (jvyden)
  • a80d1af: Add preview level feature to API level category response (jvyden)
  • 9a85369: Fix hearted/queued categories not using new DatabaseList (jvyden)
  • ad30104: Refactor ApiV3 recent activity to use proper responses (jvyden)
  • b205b2c: Add ApiV3 endpoint for retrieving a level's activity by ID (jvyden)
  • bc83d08: Change PhotosInLevelById route to subset of level (jvyden)
  • a857ef4: shit (jvyden)
  • 6056e43: Update ApiEventResponse and support pagination for activity fetch (jvyden)
  • 8616fe3: Order events by descending timestamp (jvyden)
  • 1f72261: Add missing UserId to ApiV3 event response (jvyden)
  • f822e18: Bump Realm from 11.1.2 to 11.2.0 (#63) (dependabot[bot]) #63
  • d1ebcbd: Bump JetBrains.Annotations from 2022.3.1 to 2023.2.0 (#64) (dependabot[bot]) #64
  • decf8f6: Fix JoinDate being missing from GameUser ApiV3 response (jvyden)
  • 8c9e082: Wait, it's supposed to be milliseconds (jvyden)
  • c7dac96: Add scores to ActivityPage response (jvyden)

v1.5.1

27 Jun 22:19
v1.5.1
48143a1
Compare
Choose a tag to compare

This is a technical release intended to disable the "pre-release" marker on Refresh. Should make it easier for people to download.

Warning: This does not mean that Refresh is secure, moreso that it is stable.
Authentication has not been properly implemented as of this release. It will come in a future release.

Commits

  • 0720e99: Update Bunkum to 3.3.10 (jvyden)
  • fecec07: Explicitly stop server after disposal of TestContext (jvyden)
  • 5dcc255: Bump Realm from 11.0.0 to 11.1.0 (#57) (dependabot[bot]) #57
  • dac915c: Bump Realm from 11.1.0 to 11.1.2 (#60) (dependabot[bot]) #60
  • 2714dfc: Force only 1 task to be used in tests (jvyden)
  • bb2c383: Don't mark new releases as prerelease (jvyden)
  • 48143a1: Merge remote-tracking branch 'upstream/main' (jvyden)

v1.5.0

15 Jun 02:26
v1.5.0
10d4752
Compare
Choose a tag to compare
v1.5.0 Pre-release
Pre-release

Hello, everyone! v1.5.0 marks the biggest release thus far (and also the 10th release!). This version makes a lot of changes under the hood, but also brings in some pretty substantial new features.

IMPORTANT: Manual Update Action Recommended for Server Owners

Note This isn't strictly necessary, but is a good idea to run regardless.

When updating to v1.5.0, you will have to run Refresh.GameServer (the main server executable) with --import_assets. This is due to new changes to handling game assets. This is a one-time operation, and should only take a few seconds.

This will cause Refresh to read all assets, their types, and import them into the database for API access.

Warning Do not run this command multiple times, as this will cause existing metadata to be deleted.
Refresh from this point forward will track the original author of uploaded assets. This will be useful in the future for moderation.
Running this operation after running it once will make it harder to track down users who have uploaded malicious assets.

We also wrote a guide on setting up a production server. It's for Bunkum, our custom server software, but it applies to Refresh aswell. https://littlebigrefresh.github.io/Docs/setup-bunkum-server

New goodies

To start, we implemented dive-in and room tracking. This is all accessible through the API, meaning you can find a user by their room, track what level they're playing, etc. etc. This works even for players that aren't on the instance, assuming they are a part of a player's lobby.

We've also implemented some score types for score submission - meaning players are now able to properly submit scores for two-player mode, three-player mode, and four-player mode instead of just one-player mode. Why wasn't this part of the original implementation? I'm not quite sure, to be honest.

Lastly, the last major thing in-game we've added is photo uploading support. You can now upload photos, the server will record the photo and its tagged user data, and you can view them on the website and in-game. Once again, tagged users who don't exist on the Refresh instance you're playing will still show up, so there's no data lost when you upload a photo to Refresh.

We've also implemented support for notifications, meaning that you'll be able to hear about new things happening on the server that you'd normally never know about - like when someone you've hearted hearts you back, or when a level fails to upload. You can view them on the website, but they also show on the game's announcement screen on startup.

Naturally, all of these new features are available on the website and the API, so have fun!

I love my website

The website has been entirely re-designed, going from a really ugly blue color to a nice Refresh-themed purple. I spent a few days working around in Figma, and I think what came out looks fantastic.

image

image

image

Lighthouse API Support

We implemented a subset of Project Lighthouse's API (v1). This has been tested with LighthouseRichPresence and PLRPC, LBP Union's applications for bridging Discord to LBP custom servers. Essentially what this means is when running these applications, they'll try to talk to Refresh as if it were a Project Lighthouse instance, and Refresh will try to respond as if it were.

There are caveats of course, Lighthouse and Refresh being based on different architectures. There may be potential for conflict on user ids, as they are based on timestamps. Refresh's API (v2) will not be affected by this. Additionally, the portion of the API implemented is only a subset. Some applications may not work straight away, and may require some patches to Refresh in order to get them working. The two main ones are already fairly well supported, so it shouldn't be too big of a deal. Let us know if you have any issues, though!

Here's a screenshot of PLRPC running on a Refresh instance:

image

A peek under the hood

We did some work to implement some proper unit testing across Bunkum and Refresh. These have been a great help, I even found a bug or two while working on it.

image

We also implemented AutoDiscover API v2, letting Refresher (our patching software) know that we're using a custom digest key. Speaking of which, Refresher recently gained the ability to patch RPCS3 titles in just a few clicks. It's pretty sweet. Here's a video by @turecross321 showcasing patching Sound Shapes to his server built on Bunkum:

2023-06-08_16-55-33.mp4.processed.mp4

We wrote a guide on patching RPCS3 titles, which you can find here: https://littlebigrefresh.github.io/Docs/patching/rpcs3

Finally, the last major thing is the ability to convert .TEX to .PNG. It should be pretty efficient (I was able to convert a couple thousand assets in a few seconds with 12 threads) but your mileage may vary, depending on total memory and core count. I tried to cut down on the amount of allocated memory, but due to the nature of the operation it's not possible to remove all allocations. This shouldn't be a problem if you run a small instance with a few dozen levels.

Commits

  • b00a0da: Stub legacy API endpoints (jvyden)
  • 6a54557: Allow Autodiscover to work with the website changes (jvyden)
  • feaac93: Pod (jvyden)
  • c5460a4: Parse match into valid JSON (jvyden)
  • 20e62da: Cleanup (jvyden)
  • 0c6c930: Implement match methods (jvyden)
  • fe44dc7: Bump Bunkum to 3.0.5 (jvyden)
  • 9b04d0e: Adjust max ratelimit request amount to 200 (jvyden)
  • d898ad0: Merge branch 'main' into matching (jvyden)
  • 736aa0e: Add testing framework (jvyden)
  • 0b43813: Update Bunkum to 3.0.5 (jvyden)
  • e5262b5: Rework server initialization code for easier testing (jvyden)
  • 83414fe: Update Bunkum to 3.0.6 (jvyden)
  • 6146840: Update Bunkum to 3.1.0 (jvyden)
  • 750837f: Full test framework (jvyden)
  • 611ee70: Put "inmemory" database files into temporary directory (jvyden)
  • 6403ca0: CI Debug: Only use in-memory if we are not in CI (jvyden)
  • 6cef0bf: CI Debug: Use GameDatabaseProvider for test (jvyden)
  • af64e13: Revert CI debug steps (jvyden)
  • b730312: Random number for inmemory tests (jvyden)
  • e361dd4: Set random database ID only once (jvyden)
  • 2a9331b: Update Realm to 11.0.0 (jvyden)
  • 14f10a6: ill cry if this works (jvyden)
  • e5d0865: Try getting token back from database context, use LBP2 on PS3 when generating game tokens (jvyden)
  • cda2ad3: end my suffering (jvyden)
  • 3d4da03: Revert "end my suffering" (jvyden)
  • 41b77ff: Update Bunkum.RealmDatabase to 3.1.1 (jvyden)
  • 84fa241: API authentication test (jvyden)
  • d44fb23: Add score submission & result tests (jvyden)
  • 9cedea7: Update Bunkum.RealmDatabase to 3.1.2 (jvyden)
  • a57162b: More segmenting tests (jvyden)
  • 6a5e636: Merge branch 'main' into matching (jvyden)
  • 23acb18: Deserialize match object, pass in service and logger to match method (jvyden)
  • ff1307d: API, track and store rooms (jvyden)
  • b16f39e: Handle Slot and Slots (jvyden)
  • 4d31745: Handle host's "mood" (jvyden)
  • ed25758: Switch to using Realm's source generators (#43) (Jayden) #43
  • 453dd4e: Merge branch 'main' into matching (jvyden)
  • 283e74a: Move body deserialization to endpoint (jvyden)
  • bb3f558: Refactor GameServerTest (jvyden)
  • 70202ae: Basic matching logic (jvyden)
  • 98dc94c: Serialize a proper response to dive-in (jvyden)
  • eb35632: Add LBP2 US digital to title id list (jvyden)
  • a5d8c7b: Update Bunkum to 3.1.3 (jvyden)
  • c36eb16: Make PresenceEndpoints use values from MatchService (jvyden)
  • edb794e: Allow any user to be stored in rooms (jvyden)
  • 3cbd730: Implement storage and retrieval of friends list (jvyden)
  • e2a60b4: Update Bunkum to 3.1.3 (jvyden)
  • 1c42ef0: Fix NAT type parsing (jvyden)
  • a94a5c8: Fix unit test compile errors (jvyden)
  • 3523d79: Remove dependency on database for getting rooms (jvyden)
  • 3345458: Implement UpdatePlayersInRoom (jvyden)
  • b567dd6: Remove the strangest unused import I've ever seen (jvyden)
  • a206ad7: Support score submission by type (jvyden)
  • c99329b: Merge branch 'main' into legacy-api (jvyden)
  • 727f634: Use match service for legacy room endpoint (jvyden)
  • c027c58: Support retrieval of levels through legacy api (jvyden)
  • 9e05a68: Warmup the database on startup (jvyden)
  • dc1987d: Autodiscover API v2 (jvyden)
  • c55ff21: Fix trailing slash in URL (jvyden)
  • 9cbae06: Don't send HostId in JSON (jvyden)
  • 5f66679: API endpoints for room by user uuid, room uuid, and all rooms (jvyden)
  • 16d0077: Remove resources from GameLevel (jvyden)
  • 27235c0: Statically import HttpStatusCode (jvyden)
  • e5080b7: Cleanup usages (jvyden)
  • 53c82a7: Add endpoint for tracking server statistics (jvyden)
  • a53b496: Show current ingame players count (jvyden)
  • c7220a8: Bump NotEnoughLogs from 1.0.3 to 1.0.5 (#47) (dependabot[bot]) #47
  • 119a17b: Bump Bunkum from 3.1.3 to 3.1.4 (#46) (dependabot[bot]) #46
  • 0407c77: Fix internal server error when retrieving unimplemented slot category (jvyden)
  • 0dcd283: Close the security vulnerability I just opened (jvyden)
  • eb4d182: Am I OKAY? (jvyden)
  • 8313799: Add .svg and .ico to mimetype mapping list (jvyden)
  • 50564ad: Upgrade Bunkum to 3.2.0 (jvyden)...
Read more

v1.4.0

07 May 00:05
v1.4.0
7adc4c5
Compare
Choose a tag to compare
v1.4.0 Pre-release
Pre-release

This release implements LBP3 categories, adds some additional tracking to Tokens, such as login dates and the game you're playing. It also introduces rate-limiting and a big part, score submission. For now this only works in published levels not story levels, and it only works in single-player mode, but the work is there.

Commits

  • cc5fa8f: Bump Realm and Bunkum (jvyden)
  • ca3c1f9: Implement LBP3 Categories (#35) (Jayden) #35
  • d34732f: Fix CORS not working (jvyden)
  • 6b39063: Migrate to Bunkum.RealmDatabase system (jvyden)
  • eeffef7: Track game and platform when authenticating (#37) (Jayden) #37
  • eb8075e: Merge branch 'main' of github.com:LittleBigRefresh/Refresh (jvyden)
  • a7c2e3a: Update to Bunkum 2.3.0, fix DebugLocalBunkum (jvyden)
  • 2866173: Add login dates to Tokens (jvyden)
  • 7a78e45: Support Bunkum services breaking changes (jvyden)
  • ef76d88: Bump Bunkum to 3.0.0 (jvyden)
  • a2cdf72: Implement rate-limiting (jvyden)
  • ba4797b: Use new invocation of adding ratelimit service (jvyden)
  • d60a6ac: Update Bunkum to v3.0.1 (jvyden)
  • 194f634: Tell client to cache website data for 12 hours (jvyden)
  • 64c8d93: Allow Autodiscover to work with the website changes (jvyden)
  • 2de4408: Support Dependabot (Jayden)
  • a58d631: Update dependencies (jvyden)
  • 766344f: Update Bunkum.RealmDatabase to 3.0.2 (jvyden)
  • a1ba5bf: Directly reference Realm in Refresh.GameServer (jvyden)
  • f583a1a: Track plays & unique plays on levels (jvyden)
  • ba9e048: Don't dequeue level when attempting to play a level (jvyden)
  • 98c3658: Use nullable int in PlayLevel (jvyden)
  • 276120b: Rename remaining RealmDatabaseContext files to GameDatabaseContext (jvyden)
  • 63b2778: Update Bunkum to 3.0.4 (jvyden)
  • 2cca9c3: Serialize scores & put into database (jvyden)
  • f77ce96: Add backlink to GameSubmittedScores on GameLevel (jvyden)
  • 4a84ae9: Add topscores endpoint (jvyden)
  • 0cb1dd2: API endpoint for retrieving scores (jvyden)
  • cc88923: Add API endpoint to get a specific score by UUID (jvyden)
  • 7b6bde5: Paginate score endpoints (jvyden)
  • 0616061: Add max count of 100 to GetPageData (jvyden)
  • 5badbd5: Make CategoryHandler into an EndpointService (jvyden)
  • 82b8f01: Merge branch 'main' into score-submission (jvyden)
  • 73ab33b: Add CategoryService as startup service (jvyden)
  • 8483710: Merge branch 'main' into score-submission (jvyden)
  • a6a4961: Show only top score by user (jvyden)
  • 7adc4c5: API parameter to show all scores (jvyden)

v1.3.0

29 Mar 01:08
v1.3.0
bd87845
Compare
Choose a tag to compare
v1.3.0 Pre-release
Pre-release

Hello! This release includes two big changes.

First up is Recent Activity. Recent activity doesn't track everything (only level uploads and when a user favorites a level/another user), but the groundwork has been laid and we can now let server owners start collecting that data early as Refresh implements new features.

Next up, Refresh now bundles and hosts the website without any intervention required. Things should hopefully just work. Feel free to play around, break things, and let us know your feedback about the current state of the website!

Changes