Compare commits

..

689 Commits

Author SHA1 Message Date
DecDuck 768a4e2414 Quick fixes (#355)
* fix: error message on import

* fix: 2fa input size
2026-02-25 23:23:36 +11:00
DecDuck c82822c435 Add display name field to version importer (#354) 2026-02-25 23:05:24 +11:00
DecDuck f97fc25ea3 Fix torrential depot (#353)
Adds a plugin to automatically add/update the torrential depot record
2026-02-25 22:24:15 +11:00
DecDuck dbe34684d8 Paginated admin library & upgrade manifests (#351)
* feat: new page layout + endpoint

* feat: non-parallel mass import

* feat: paginated admin library

* feat: lint and performance improvement

* feat: library filter util

* feat: link frontend features to backend

* fix: lint

* fix: small fixes

* feat: bump torrential

* fix: lint
2026-02-25 02:17:33 +11:00
DecDuck 1ad881721e Fix dev torrential server (#349)
* fix: droplet interface not waiting for torrential

* fix: lint
2026-02-13 13:10:53 +11:00
Husky ed724c7170 migrate to prisma v7 (#345)
* migrate to prisma v7

* fix prisma type imports

* update prisma version in docker

* fix prisma cli breaking things
2026-02-11 01:26:53 +00:00
Husky f8447808dd Series of small fixes (#346)
* migrate bufbuild config to v2

* fix localdir lookup

* fix old oidc redirect path

* rework twemoji path stuff

* fix torrential cmd

* fix broken lock file

* align dev server port with nginx

* bump pnpm

* bump nuxt

* make translations lazy loaded

* format numbers via i18n

* fix prisma breaking if extension already exists
2026-02-09 16:27:31 +00:00
Paco ca845467e1 Refactoring and UI improvements on the admin home page (#348) 2026-02-09 18:40:45 +11:00
DecDuck 795fd5966d Regenerate lockfile 2026-02-09 15:36:10 +11:00
dependabot[bot] 5316ef706f chore(deps): bump seroval from 1.4.0 to 1.5.0 (#338)
Bumps [seroval](https://github.com/lxsmnsyc/seroval) from 1.4.0 to 1.5.0.
- [Release notes](https://github.com/lxsmnsyc/seroval/releases)
- [Commits](https://github.com/lxsmnsyc/seroval/commits/1.5.0)

---
updated-dependencies:
- dependency-name: seroval
  dependency-version: 1.5.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-07 13:41:19 +11:00
dependabot[bot] e0e4a551a3 chore(deps): bump lodash from 4.17.21 to 4.17.23 (#337)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.17.23
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-07 13:41:05 +11:00
dependabot[bot] e9fee7d5bc chore(deps): bump lodash-es from 4.17.21 to 4.17.23 (#340)
Bumps [lodash-es](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

---
updated-dependencies:
- dependency-name: lodash-es
  dependency-version: 4.17.23
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-07 13:33:27 +11:00
DecDuck 9b0f9994f6 API optimisations (#343)
* feat: api optimisation

* feat: emulator rename
2026-02-06 23:12:03 +11:00
Paco 276f4f6389 Fixes wrong values used in RAM usage section (#344) 2026-02-06 13:42:00 +11:00
Paco 965cbff8ff Make application and logo configurable (#336)
* Adds settings for server name and logo

* Implements ApplicationLogo and replaces site name based on settings

* Refactors component for changing the company logo

* Removes unused variable

* Uses message instead of statusMessage

* Replaces favicon with logo if set
2026-02-06 11:43:21 +11:00
DecDuck d80c1e5b91 Use native runners for CI (#342)
* feat: use platform-specific runners

* feat: replace with template

* fix: image name

* fix: registry image name

* fix: checkout repo

* fix: add drop version

* fix: add sha env

* fix: permissions
2026-02-06 09:55:22 +11:00
DecDuck d582202a8d Use self-hosted runner 2026-02-06 01:21:54 +11:00
DecDuck e05ba853f6 Fix Docker build 2026-02-06 00:53:50 +11:00
DecDuck 9d2c4465f8 Translated using Weblate (German) (#328)
Currently translated at 100.0% (522 of 522 strings)

Translated using Weblate (German)

Currently translated at 100.0% (522 of 522 strings)

Translated using Weblate (German)

Currently translated at 100.0% (522 of 522 strings)

Translated using Weblate (French)

Currently translated at 100.0% (522 of 522 strings)

Translated using Weblate (French)

Currently translated at 100.0% (518 of 518 strings)






Translate-URL: https://translate.droposs.org/projects/drop/drop/de/
Translate-URL: https://translate.droposs.org/projects/drop/drop/fr/
Translation: Drop/Drop

Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Hicks <hicksgaming99+weblate@gmail.com>
Co-authored-by: Ribemont Francois <ribemont.francois+weblate@gmail.com>
Co-authored-by: Weblate <noreply-mt-weblate@weblate.org>
Co-authored-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
2026-02-06 00:34:11 +11:00
DecDuck d234f8df33 In-app store, torrential backend, locales (#332)
* feat: add store nav and fixes

* fix: reduce password requirement & new task error ui

* fix: client webtoken fix

* fix: delta versions and dockerfile

* fix: use setup platforms for filter & display

* fix: setup not accounted when returning valid options

* feat: tighter delta version support

* feat: dl/disk size

* feat: offload manifest generation to torrential

* fix: bump torrential

* feat: remove droplet

* feat: bump torrential

* feat: convert locales
2026-02-06 00:12:24 +11:00
DecDuck 837bc6eb1d Fix console.log and NGINX port 2026-01-29 16:34:45 +11:00
DecDuck 00adab21c2 Game specialisation & delta versions (#323)
* feat: game specialisation, auto-guess extensions

* fix: enforce specialisation specific schema at API level

* fix: lint

* feat: partial work on depot endpoints

* feat: bump torrential

* feat: dummy version creation for depot uploads

* fix: lint

* fix: types

* fix: lint

* feat: depot version import

* fix: lint

* fix: remove any type

* fix: lint

* fix: push update interval

* fix: cpu usage calculation

* feat: delta version support

* feat: style tweaks for selectlaunch.vue

* fix: lint
2026-01-23 16:04:38 +11:00
Paco d8db5b5b85 Adds new tile on the admin home page with system data. (#301)
* Adds new tile on the admin home page with system data. Also fixes the active users bug in the pie chart

* Fixes missing parentheses

* Updates user stats cache when signing in

* Reads active number of users from session provider

* Removes unused variable

* Small improvements

* Removes acl properties from system data websocket and performs initial push of data

* fix: remove acl fetch

---------

Co-authored-by: DecDuck <declanahofmeyr@gmail.com>
2026-01-22 10:58:21 +11:00
dependabot[bot] 82cdc1e1aa chore(deps): bump diff from 8.0.2 to 8.0.3 (#326)
Bumps [diff](https://github.com/kpdecker/jsdiff) from 8.0.2 to 8.0.3.
- [Changelog](https://github.com/kpdecker/jsdiff/blob/master/release-notes.md)
- [Commits](https://github.com/kpdecker/jsdiff/compare/v8.0.2...v8.0.3)

---
updated-dependencies:
- dependency-name: diff
  dependency-version: 8.0.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-21 21:41:17 +11:00
Paco bb858917ce Customisable OIDC label #325 (#327) 2026-01-21 08:15:01 +00:00
Husky f04daf0388 Add ODIC Back-Channel Logout (#304)
* prevent returning expired sessions

* add issuer to ODIC creds

* get id token in ODIC

* make session signin return session

* working backchannel logout?

* require https for ODIC provider

* handle wellknown not being https

* find session api progress

* fix windows build

* return session token on session

* switch OIDC to #searchSessions

* update pnpm

* switch to using message on error obj

* move odic callback

* fix type errors

* redirect old oidc callback

* make redirect url a URL

* remove scheduled task downloadCleanup

* fix session search for oidc

* fix signin result

* cleanup code

* ignore data dir

* fix lint error
2026-01-20 09:50:04 +11:00
DecDuck 2967e433ca Fix sign-in page errors, etc (#322)
* fix: store page redirect

* fix: silent fail passkey + error display

* fix: remove console log modal
2026-01-19 17:34:03 +11:00
dependabot[bot] 61355e1da2 chore(deps): bump undici from 7.13.0 to 7.18.2 (#319)
Bumps [undici](https://github.com/nodejs/undici) from 7.13.0 to 7.18.2.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.13.0...v7.18.2)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.18.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-19 17:16:21 +11:00
dependabot[bot] 690c7e0163 chore(deps): bump node-forge from 1.3.1 to 1.3.2 (#295)
Bumps [node-forge](https://github.com/digitalbazaar/forge) from 1.3.1 to 1.3.2.
- [Changelog](https://github.com/digitalbazaar/forge/blob/main/CHANGELOG.md)
- [Commits](https://github.com/digitalbazaar/forge/compare/v1.3.1...v1.3.2)

---
updated-dependencies:
- dependency-name: node-forge
  dependency-version: 1.3.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-19 17:16:09 +11:00
dependabot[bot] 0b2a8faeca chore(deps): bump diff from 8.0.2 to 8.0.3 (#321)
Bumps [diff](https://github.com/kpdecker/jsdiff) from 8.0.2 to 8.0.3.
- [Changelog](https://github.com/kpdecker/jsdiff/blob/master/release-notes.md)
- [Commits](https://github.com/kpdecker/jsdiff/compare/v8.0.2...v8.0.3)

---
updated-dependencies:
- dependency-name: diff
  dependency-version: 8.0.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-19 17:15:52 +11:00
dependabot[bot] 8b92c9e0b9 chore(deps): bump tar from 7.4.3 to 7.5.3 (#320)
Bumps [tar](https://github.com/isaacs/node-tar) from 7.4.3 to 7.5.3.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.4.3...v7.5.3)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-19 17:15:37 +11:00
dependabot[bot] 29b9530945 chore(deps): bump devalue from 5.5.0 to 5.6.2 (#318)
Bumps [devalue](https://github.com/sveltejs/devalue) from 5.5.0 to 5.6.2.
- [Release notes](https://github.com/sveltejs/devalue/releases)
- [Changelog](https://github.com/sveltejs/devalue/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/devalue/compare/v5.5.0...v5.6.2)

---
updated-dependencies:
- dependency-name: devalue
  dependency-version: 5.6.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-19 17:15:24 +11:00
dependabot[bot] fb37d291a4 chore(deps-dev): bump h3 from 1.15.3 to 1.15.5 (#316)
Bumps [h3](https://github.com/h3js/h3) from 1.15.3 to 1.15.5.
- [Release notes](https://github.com/h3js/h3/releases)
- [Changelog](https://github.com/h3js/h3/blob/v1.15.5/CHANGELOG.md)
- [Commits](https://github.com/h3js/h3/compare/v1.15.3...v1.15.5)

---
updated-dependencies:
- dependency-name: h3
  dependency-version: 1.15.5
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-19 17:13:30 +11:00
DecDuck d5b4f9760b Translated using Weblate (French) (#297)
Currently translated at 100.0% (529 of 529 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (529 of 529 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (523 of 523 strings)

Translated using Weblate (Polish)

Currently translated at 24.4% (128 of 523 strings)

Translated using Weblate (Polish)

Currently translated at 22.7% (119 of 523 strings)

Added translation using Weblate (Polish)

Translated using Weblate (German)

Currently translated at 100.0% (523 of 523 strings)

Translated using Weblate (English (en_PIRATE))

Currently translated at 73.8% (386 of 523 strings)







Translate-URL: http://translate.droposs.org/projects/drop/drop/de/
Translate-URL: http://translate.droposs.org/projects/drop/drop/en_PIRATE/
Translate-URL: http://translate.droposs.org/projects/drop/drop/pl/
Translate-URL: https://translate.droposs.org/projects/drop/drop/fr/
Translation: Drop/Drop

Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Andus <resres2007@gmail.com>
Co-authored-by: Hicks <hicksgaming99+weblate@gmail.com>
Co-authored-by: Ribemont Francois <ribemont.francois+weblate@gmail.com>
2026-01-15 15:37:21 +11:00
DecDuck 99a60b8fa0 Fix MFA superlevel redirect & ViewTransition (#314)
* feat: fix mfa superlevel & viewtransition

* fix: lint
2026-01-15 15:34:17 +11:00
DecDuck 833b5fbcfa Auto-run torrential in development (#313)
* Auto-run torrential in development

* fix: lint
2026-01-14 15:10:48 +11:00
Husky 1eaec4c3e8 Switch to nuxt assets for emojis (#311)
* switch to nuxt assets for emojis

* add auth to emoji endpoint

* fix cache control header

* fix type error
2026-01-14 14:49:58 +11:00
DecDuck 63ac2b8ffc Depot API & v4 (#298)
* feat: nginx + torrential basics & services system

* fix: lint + i18n

* fix: update torrential to remove openssl

* feat: add torrential to Docker build

* feat: move to self hosted runner

* fix: move off self-hosted runner

* fix: update nginx.conf

* feat: torrential cache invalidation

* fix: update torrential for cache invalidation

* feat: integrity check task

* fix: lint

* feat: move to version ids

* fix: client fixes and client-side checks

* feat: new depot apis and version id fixes

* feat: update torrential

* feat: droplet bump and remove unsafe update functions

* fix: lint

* feat: v4 featureset: emulators, multi-launch commands

* fix: lint

* fix: mobile ui for game editor

* feat: launch options

* fix: lint

* fix: remove axios, use $fetch

* feat: metadata and task api improvements

* feat: task actions

* fix: slight styling issue

* feat: fix style and lints

* feat: totp backend routes

* feat: oidc groups

* fix: update drop-base

* feat: creation of passkeys & totp

* feat: totp signin

* feat: webauthn mfa/signin

* feat: launch selecting ui

* fix: manually running tasks

* feat: update add company game modal to use new SelectorGame

* feat: executor selector

* fix(docker): update rust to rust nightly for torrential build (#305)

* feat: new version ui

* feat: move package lookup to build time to allow for deno dev

* fix: lint

* feat: localisation cleanup

* feat: apply localisation cleanup

* feat: potential i18n refactor logic

* feat: remove args from commands

* fix: lint

* fix: lockfile

---------

Co-authored-by: Aden Lindsay <140392385+AdenMGB@users.noreply.github.com>
2026-01-13 15:32:39 +11:00
dependabot[bot] 8ef983304c chore(deps): bump qs from 6.14.0 to 6.14.1 (#303)
Bumps [qs](https://github.com/ljharb/qs) from 6.14.0 to 6.14.1.
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.14.0...v6.14.1)

---
updated-dependencies:
- dependency-name: qs
  dependency-version: 6.14.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-04 18:34:00 +11:00
Andus 8f5d8a43c5 Add user profile page (#302)
* Add user page and API endpoint

* add: /user/[id] page
* add: /api/v1/user/[id] API endpoint

* Change loading message in user profile page

* Fix build errors, prettier code
2026-01-04 13:45:20 +11:00
DecDuck c001a8c808 Bump version 2025-11-30 23:18:05 +11:00
DecDuck 505df10be3 Fix accessibility with API token modal 2025-11-30 23:17:42 +11:00
DecDuck cbc8cb4ea9 Translated using Weblate (German) (#290)
Currently translated at 100.0% (522 of 522 strings)

Translated using Weblate (German)

Currently translated at 100.0% (522 of 522 strings)

Translated using Weblate (German)

Currently translated at 100.0% (522 of 522 strings)

Translated using Weblate (German)

Currently translated at 96.3% (503 of 522 strings)

Translated using Weblate (German)

Currently translated at 96.3% (503 of 522 strings)

Translated using Weblate (French)

Currently translated at 100.0% (522 of 522 strings)

Translated using Weblate (French)

Currently translated at 100.0% (522 of 522 strings)






Translate-URL: http://translate.droposs.org/projects/drop/drop/de/
Translate-URL: http://translate.droposs.org/projects/drop/drop/fr/
Translation: Drop/Drop

Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Hicks <hicksgaming99+weblate@gmail.com>
Co-authored-by: Ribemont Francois <ribemont.francois+weblate@gmail.com>
Co-authored-by: Weblate <noreply-mt-weblate@weblate.org>
Co-authored-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
2025-11-30 23:07:11 +11:00
DecDuck c03152f299 Internal server error fixes, 7z fixes, OIDC fixes (#289)
* fix: add no-prisma-delete lint

* fix: typescript for lint

* fix: bump droplet

* fix: oidc scopes override

* fix: type errors

* feat: delete all notifications

* fix: lint

* fix: light mode style fixes
2025-11-30 23:01:52 +11:00
Weblate c9ead88015 Translated using Weblate (French)
Currently translated at 100.0% (499 of 499 strings)

Translated using Weblate (French)

Currently translated at 96.9% (484 of 499 strings)

Co-authored-by: Ribemont Francois <ribemont.francois+weblate@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: http://translate.droposs.org/projects/drop/drop/fr/
Translation: Drop/Drop
2025-11-22 10:34:45 +11:00
Hicks-99 246c97ccc9 Add additional content screenshots for Steam provider (#284) 2025-11-21 22:27:36 +11:00
DecDuck f1fccd9bff Remove .gitlab-ci.yml 2025-11-20 16:09:16 +11:00
DecDuck 2ae7f41be0 Fix 7z archives with spaces (#288)
* fix: ignore imported versions

* fix: bump droplet for 7z fixes
2025-11-20 14:02:56 +11:00
DecDuck beb824c8d9 Add metadata timeout (#287)
* Add metadata timeout

* Fix lint
2025-11-20 11:17:58 +11:00
DecDuck 8f41024be2 Fix Prisma build 2025-11-15 10:59:17 +11:00
DecDuck 2420814862 Add 7zip to container 2025-11-15 10:01:58 +11:00
DecDuck 41855bccd2 Bump version 2025-11-15 09:05:14 +11:00
Paco dfa30c8a65 Admin home page #128 (#259)
* First iteration on the new PieChart component

* #128 Adds new admin home page

* Fixes code after merging conflicts

* Removes empty file

* Uses real data for admin home page, and improves style

* Reverts debugging code

* Defines missing variable

* Caches user stats data for admin home page

* Typo

* Styles improvements

* Invalidates cache on signup/signin

* Implements top 5 biggest games

* Improves styling

* Improves style

* Using generateManifest to get the proper size

* Reading data from cache

* Removes unnecessary import

* Improves caching mechanism for game sizes

* Removes lint errors

* Replaces piechart tooltip with colors in legend

* Fixes caching

* Fixes caching and slight improvement on pie chart colours

* Fixes a few bugs related to caching

* Fixes bug where app signin didn't refresh cache

* feat: style improvements

* fix: lint

---------

Co-authored-by: DecDuck <declanahofmeyr@gmail.com>
2025-11-08 09:14:45 +11:00
laylafogiel-hash 289034d0c8 Add manual release date editor (#262)
* add manual release date editor

* watch() releaseDate instead of relying on coreMetadata updates

* make linter happy

---------

Co-authored-by: udifogiel <udifogiel@proton.me>
2025-11-07 09:27:37 +11:00
DecDuck 2a23f4d14c Fix lints 2025-10-24 09:33:39 +11:00
laylafogiel-hash b20d355527 Improve igdb metadata fetching (#257)
* improve igdb metadata fetching

    * Make sure to get images with reasonable resolution.
      By default the url igdb returns is in "t_thumb" size,
      an image of size 90x90, which is good only for the icon,
      but bad for pretty much else. This commit will make sure
      covers will be of size "t_cover_big", artworks of 1080p
      height (i.e. "t_1080p") and logos will have their original
      size ("t_original"). Maybe "t_logo_med" is more appropriate?

    * Fetch screenshots as well.

    * Use a separate image for icon and for cover.
      icon needs to be a square, and can be of low
      resolution, so the "t_thmb" size is more appropriate
      for him.

    * If there is a storyline for a game use it as a short
      description.

* IDGB -> IGDB

* use the longer text between storyline and description for description

---------

Co-authored-by: udifogiel <udifogiel@proton.me>
2025-10-24 09:25:54 +11:00
DecDuck fa9620eac1 Use 7zip for archive backend (#264)
* feat: use 7zip for archive backend

* fix: lint
2025-10-13 13:02:27 +11:00
dependabot[bot] a201b62c04 chore(deps): bump axios from 1.11.0 to 1.12.0 (#246)
Bumps [axios](https://github.com/axios/axios) from 1.11.0 to 1.12.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.11.0...v1.12.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.12.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-13 11:36:59 +11:00
dependabot[bot] 9bf164ab77 chore(deps): bump tar-fs from 2.1.3 to 2.1.4 (#256)
Bumps [tar-fs](https://github.com/mafintosh/tar-fs) from 2.1.3 to 2.1.4.
- [Commits](https://github.com/mafintosh/tar-fs/compare/v2.1.3...v2.1.4)

---
updated-dependencies:
- dependency-name: tar-fs
  dependency-version: 2.1.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-13 11:36:31 +11:00
laylafogiel-hash 97c6f3490c Add store sort options (#238) (#261)
This commit adds the option
to sort store items by name,
and to choose the sort order.

Co-authored-by: udifogiel <udifogiel@proton.me>
2025-10-13 11:20:48 +11:00
laylafogiel-hash f5cb856d3d Carousel UI improvements (#258)
* make carousel pagination clickable

* make carousel in game pages wrap around

* make items in store fit the row when the filter menu is visible

---------

Co-authored-by: udifogiel <udifogiel@proton.me>
2025-10-13 11:18:52 +11:00
Hicks-99 67de1f6c02 Add Steam metadata provider (#232) (#250)
* feat(metadata): add Steam metadata provider (#232)

* style(steam): remove emojis from log messages
2025-09-21 10:43:35 +10:00
DecDuck 1002265000 Update CONTRIBUTING.md 2025-09-10 10:40:21 +10:00
dependabot[bot] 37a2dff0dd chore(deps): bump vite from 6.3.5 to 6.3.6 (#245)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.3.5 to 6.3.6.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.3.6/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.3.6/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.3.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-10 10:39:11 +10:00
DecDuck 799cd6c394 Translations update from Weblate (#195)
* Translated using Weblate (German)

Currently translated at 66.5% (314 of 472 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/de/

* Translated using Weblate (French)

Currently translated at 93.1% (465 of 499 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/fr/

* Translated using Weblate (Russian)

Currently translated at 16.0% (80 of 499 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/ru/

* Translated using Weblate (German)

Currently translated at 62.9% (314 of 499 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/de/

* Translated using Weblate (German)

Currently translated at 62.9% (314 of 499 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/de/

* Translated using Weblate (German)

Currently translated at 62.9% (314 of 499 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/de/

* Translated using Weblate (German)

Currently translated at 81.7% (408 of 499 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/de/

* Translated using Weblate (German)

Currently translated at 81.7% (408 of 499 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/de/

* Translated using Weblate (German)

Currently translated at 81.7% (408 of 499 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/de/

* Translated using Weblate (German)

Currently translated at 100.0% (499 of 499 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/de/

---------

Co-authored-by: Niklas Eifler <droposs@eiflerstrom.de>
Co-authored-by: pVDWNwffCRw2B2inHGs# <farmouss@gmail.com>
Co-authored-by: D3 <sl4yerenter@protonmail.com>
Co-authored-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
Co-authored-by: Kuschiniko <nico.kusch@outlook.de>
Co-authored-by: Hicks <hicksgaming99+weblate@gmail.com>
2025-09-10 10:38:16 +10:00
dependabot[bot] 2a005a2222 chore(deps): bump devalue from 5.1.1 to 5.3.2 (#219)
Bumps [devalue](https://github.com/sveltejs/devalue) from 5.1.1 to 5.3.2.
- [Release notes](https://github.com/sveltejs/devalue/releases)
- [Changelog](https://github.com/sveltejs/devalue/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/devalue/compare/v5.1.1...v5.3.2)

---
updated-dependencies:
- dependency-name: devalue
  dependency-version: 5.3.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-07 17:31:24 +10:00
dependabot[bot] 3942d5c442 chore(deps): bump tmp from 0.2.3 to 0.2.5 (#228)
Bumps [tmp](https://github.com/raszi/node-tmp) from 0.2.3 to 0.2.5.
- [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/raszi/node-tmp/compare/v0.2.3...v0.2.5)

---
updated-dependencies:
- dependency-name: tmp
  dependency-version: 0.2.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-07 17:31:10 +10:00
DecDuck a520d52ad3 Preallocate download streams (#229)
* feat: pre-allocate streams for high-latency downloads

* fix: update drop-base

* fix: remove debug latency

* fix: lint
2025-08-31 14:50:56 +10:00
Husky aa1de921ee Switch to pnpm (#162)
* fix: metadata provider log

* feat: fully switch to pnpm

* ci: prettier ignore pnpm lock

* chore: dedupe lockfile

* chore: update pnpm
2025-08-31 09:53:55 +10:00
DecDuck bfeacbbdfe Delete yarn.lock 2025-08-31 09:45:04 +10:00
DecDuck afce9f159a Update drop-base commit 2025-08-26 09:19:22 +10:00
DecDuck fd828d5b50 Update droplet & other small features, and bump version for v0.3.3 (#212)
* fix: bump version and fix context timeout issues

* fix: bump droplet

* feat: add appimage auto-detection (#209)
2025-08-25 13:23:46 +10:00
DecDuck b33e27e446 API tokens (#201)
* fix: small fixes to request util and version update endpoint

* feat: api token creation and management

* fix: lint

* fix: remove unneeded sidebar component
2025-08-23 13:58:52 +10:00
useless-bit c97a56eb42 Init Prisma in Dockerfile (#204) 2025-08-23 07:55:37 +10:00
dependabot[bot] 5e5519ece7 chore(deps): bump vite-plugin-static-copy from 3.1.1 to 3.1.2 (#199)
Bumps [vite-plugin-static-copy](https://github.com/sapphi-red/vite-plugin-static-copy) from 3.1.1 to 3.1.2.
- [Release notes](https://github.com/sapphi-red/vite-plugin-static-copy/releases)
- [Changelog](https://github.com/sapphi-red/vite-plugin-static-copy/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sapphi-red/vite-plugin-static-copy/compare/vite-plugin-static-copy@3.1.1...vite-plugin-static-copy@3.1.2)

---
updated-dependencies:
- dependency-name: vite-plugin-static-copy
  dependency-version: 3.1.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-22 13:49:31 +10:00
DecDuck 6d89b7e510 Admin task UI update & QoL (#194)
* feat: revise library source names & update droplet

* feat: add internal name hint to library sources

* feat: update library source table with new name + icons

* fix: admin invitation localisation issue

* feat: #164

* feat: overhaul task UIs, #163

* fix: remove debug task

* fix: lint
2025-08-19 15:03:20 +10:00
FurbyOnSteroids 6baddc10e9 Fix non-unicode characters in game path (#193)
* replace btoa with a Buffer implementation, as btoa does not support non-unicode characters.

* replace btoa with a Buffer implementation, as btoa does not support non-unicode characters.

* fix linting

* fix linting

* replace buffer implementation with a md5 hash. This also adds the ts-md5 library.

* Revert "replace buffer implementation with a md5 hash. This also adds the ts-md5 library."

This reverts commit f98b811ab9.

* replace buffer implementation with md5 hash from node:crypto

* fix linting.. again

---------

Co-authored-by: FurbyOnSteroids <codeberg@your-moms-bellybutton.hair>
2025-08-16 22:23:57 +10:00
DecDuck a2ea0060cb Merge pull request #191 from Drop-OSS/weblate
Translations update from Weblate
2025-08-16 12:06:53 +10:00
Weblate 6aaab30439 Merge remote-tracking branch 'origin/develop' into develop 2025-08-16 02:05:27 +00:00
Ribemont Francois ea5d108a10 Translated using Weblate (French)
Currently translated at 98.2% (450 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/fr/
2025-08-16 12:02:48 +10:00
Weblate Translation Memory f0b127789f Translated using Weblate (English (en_PIRATE))
Currently translated at 83.8% (384 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/en_PIRATE/
2025-08-16 12:02:48 +10:00
Weblate 4c8be2bfd1 Update translation files
Updated by "Remove blank strings" add-on in Weblate.

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/
2025-08-16 12:02:47 +10:00
Ribemont Francois 7e371adeb0 Translated using Weblate (French)
Currently translated at 97.3% (446 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/fr/
2025-08-16 12:02:47 +10:00
Weblate Translation Memory 6d7b491adb Translated using Weblate (French)
Currently translated at 97.8% (448 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/fr/
2025-08-16 12:02:36 +10:00
DecDuck abec952e39 Various fixes (#186)
* fix: #181

* fix: use taskHandler as source of truth for imports

* fix: task formatting

* fix: zip downloads

* feat: re-enable import version button on delete + lint
2025-08-15 22:57:56 +10:00
dependabot[bot] 9ff541059d chore(deps): bump tmp from 0.2.3 to 0.2.4 (#179)
Bumps [tmp](https://github.com/raszi/node-tmp) from 0.2.3 to 0.2.4.
- [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/raszi/node-tmp/compare/v0.2.3...v0.2.4)

---
updated-dependencies:
- dependency-name: tmp
  dependency-version: 0.2.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-13 08:28:06 +10:00
DecDuck b84d1f20b5 v2 download API and Admin UI fixes (#177)
* fix: small ui fixes

* feat: #171

* fix: improvements to library scanning on admin UI

* feat: v2 download API

* fix: add download context cleanup

* fix: lint
2025-08-09 15:45:39 +10:00
Ribemont Francois ecc806dc07 Translated using Weblate (French)
Currently translated at 98.2% (450 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/fr/
2025-08-06 21:06:35 +00:00
Weblate Translation Memory 45c94cfcbf Translated using Weblate (English (en_PIRATE))
Currently translated at 83.8% (384 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/en_PIRATE/
2025-08-06 21:06:35 +00:00
DecDuck f6f972c2d6 Translations update from Weblate (#172)
* Translated using Weblate (English)

Currently translated at 100.0% (458 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/en/

* Translated using Weblate (English (en_PIRATE))

Currently translated at 80.7% (370 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/en_PIRATE/

* Translated using Weblate (English)

Currently translated at 100.0% (458 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/en/

* Translated using Weblate (English (en_PIRATE))

Currently translated at 83.4% (382 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/en_PIRATE/

* Added translation using Weblate (Russian)

* Translated using Weblate (French)

Currently translated at 49.1% (225 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/fr/

* Translated using Weblate (German)

Currently translated at 54.3% (249 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/de/

* Translated using Weblate (German)

Currently translated at 54.3% (249 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/de/

* Translated using Weblate (Russian)

Currently translated at 6.1% (28 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/ru/

* Translated using Weblate (English (en_PIRATE))

Currently translated at 84.0% (385 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/en_PIRATE/

* Translated using Weblate (French)

Currently translated at 97.8% (448 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/fr/

* Translated using Weblate (French)

Currently translated at 97.8% (448 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/fr/

* Translated using Weblate (German)

Currently translated at 68.5% (314 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/de/

* Translated using Weblate (German)

Currently translated at 68.5% (314 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/de/

* Translated using Weblate (German)

Currently translated at 68.5% (314 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/de/

* Translated using Weblate (English)

Currently translated at 100.0% (458 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/en/

* Translated using Weblate (French)

Currently translated at 97.3% (446 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/fr/

* Update translation files

Updated by "Remove blank strings" add-on in Weblate.

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/

---------

Co-authored-by: Husky <husky@disroot.org>
Co-authored-by: Ribemont Francois <ribemont.francois+weblate@gmail.com>
Co-authored-by: Hicks <hicksgaming99+weblate@gmail.com>
Co-authored-by: Kuschiniko <nico.kusch@outlook.de>
Co-authored-by: Dmitrii <nossster@gmail.com>
Co-authored-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
Co-authored-by: Weblate <noreply@weblate.org>
2025-08-06 17:49:07 +10:00
Mars7x e1dc26f676 README fixes (#174) 2025-08-06 17:48:25 +10:00
Weblate 2fec40c5a6 Update translation files
Updated by "Remove blank strings" add-on in Weblate.

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/
2025-08-06 02:57:46 +00:00
Ribemont Francois 8f572e1259 Translated using Weblate (French)
Currently translated at 97.3% (446 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/fr/
2025-08-06 02:57:46 +00:00
Weblate Admin 43aa15d45c Translated using Weblate (English)
Currently translated at 100.0% (458 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/en/
2025-08-06 02:57:46 +00:00
Husky 59a5540248 Translated using Weblate (German)
Currently translated at 68.5% (314 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/de/
2025-08-06 00:05:00 +00:00
Kuschiniko 5bfb3e0f68 Translated using Weblate (German)
Currently translated at 68.5% (314 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/de/
2025-08-06 00:05:00 +00:00
Hicks c04f6cbf80 Translated using Weblate (German)
Currently translated at 68.5% (314 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/de/
2025-08-06 00:05:00 +00:00
Weblate Translation Memory d2863fa95b Translated using Weblate (French)
Currently translated at 97.8% (448 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/fr/
2025-08-06 00:05:00 +00:00
Ribemont Francois 821fd2cf2d Translated using Weblate (French)
Currently translated at 97.8% (448 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/fr/
2025-08-06 00:05:00 +00:00
Husky 6f84ad42fc Translated using Weblate (English (en_PIRATE))
Currently translated at 84.0% (385 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/en_PIRATE/
2025-08-06 00:04:59 +00:00
Dmitrii 1d1157a902 Translated using Weblate (Russian)
Currently translated at 6.1% (28 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/ru/
2025-08-05 19:50:38 +00:00
Kuschiniko 6ca9e34c7e Translated using Weblate (German)
Currently translated at 54.3% (249 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/de/
2025-08-05 19:50:38 +00:00
Hicks bc29c468d8 Translated using Weblate (German)
Currently translated at 54.3% (249 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/de/
2025-08-05 19:50:38 +00:00
Ribemont Francois 925ea1a414 Translated using Weblate (French)
Currently translated at 49.1% (225 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/fr/
2025-08-05 19:50:38 +00:00
Weblate Admin c9addd407e Added translation using Weblate (Russian) 2025-08-05 01:47:18 +00:00
Husky 242ae09857 Translated using Weblate (English (en_PIRATE))
Currently translated at 83.4% (382 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/en_PIRATE/
2025-08-04 17:18:11 +00:00
Husky ba28c52912 Translated using Weblate (English)
Currently translated at 100.0% (458 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/en/
2025-08-04 17:18:11 +00:00
Husky a98c95e695 Translated using Weblate (English (en_PIRATE))
Currently translated at 80.7% (370 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/en_PIRATE/
2025-08-04 17:18:11 +00:00
Husky 26615ccad0 Translated using Weblate (English)
Currently translated at 100.0% (458 of 458 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/en/
2025-08-04 17:18:11 +00:00
Husky 0b0972b48d Small IO tweaks, robots.txt, and README improvements (#173)
* feat: add link to drop version in footer

* feat: add drop logo aria label

* feat: disable all crawling by bots

for now i think this is a good default as all of drop is currently behind auth

* feat: hide logo when inside wordmark for aria

* docs: update readme and contributing

* feat: default page in setup wizzard is img

* ci: remove redundant perm in release ci

* docs: update translation links and add progress image

* fix: lang selector using wrong weblate link
2025-08-04 16:30:22 +10:00
luzpaz a435ead916 Fix various typos (#156)
Found via `codespell -q 3 -S "./yarn.lock" -L pris`
2025-08-01 21:53:31 +10:00
DecDuck 545a6b154a Fix #119 (#153) 2025-08-01 16:26:27 +10:00
DecDuck 442f940cc4 Translated using Weblate (English) (#151)
Currently translated at 100.0% (456 of 456 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/en/
2025-08-01 14:31:50 +10:00
DecDuck 7d9525084d feat: bump version (#150) 2025-08-01 14:02:44 +10:00
DecDuck 72c972a2a7 Fix for undeleted games from library sources (#148)
* fix: casade delete for games and library sources

* fix: add bug workaround

* fix: lint
2025-08-01 14:00:10 +10:00
DecDuck b72e1ef7a4 Code-based authorization for Drop clients (#145)
* feat: code-based authorization

* fix: final touches

* fix: require session on code fetch endpoint

* feat: better error handling

* refactor: move auth send to client handler

* fix: lint
2025-08-01 13:11:56 +10:00
DecDuck 786ad0ff82 Translations update from Weblate (#107)
* Translated using Weblate (English (Australia))

Currently translated at 1.6% (6 of 375 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/en_AU/

* Translated using Weblate (English (en_PIRATE))

Currently translated at 99.4% (373 of 375 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/en_PIRATE/

* Translated using Weblate (English (en_PIRATE))

Currently translated at 99.4% (373 of 375 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/en_PIRATE/

* Translated using Weblate (English (en_PIRATE))

Currently translated at 100.0% (375 of 375 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/en_PIRATE/

---------

Co-authored-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
2025-08-01 10:38:53 +10:00
DecDuck 00224bdd2f Fix for incorrect description on company page 2025-07-31 21:49:15 +10:00
DecDuck 371e069e20 Fix for invalid route in setup wizard 2025-07-31 21:44:25 +10:00
DecDuck 91bb7c7dd4 Fix for Release CI 2025-07-31 21:39:01 +10:00
DecDuck 4e901164fb Fix Github Release CI (#144)
* fix: attempt fix from https://github.com/reproducible-containers/buildkit-cache-dance

* fix: lint

* fix: migrate to pnpm to see if it builds

* fix: comment out unified deps builder

* fix: remove dependency on deps

* fix: shamefully hoist deps
2025-07-31 21:36:01 +10:00
DecDuck 244f20b5f4 v0.3.0 2025-07-31 20:41:42 +10:00
DecDuck e4c8d42cc8 Setup wizard & 0.3.0 release (#146)
* fix: small merge fixes

* feat: initial setup wizard

* fix: last few localization items

* fix: lint

* fix: bump version
2025-07-31 20:41:02 +10:00
DecDuck ed99e020df Merge branch 'main' into develop 2025-07-31 18:03:19 +10:00
DecDuck 8363de2eed Store overhaul (#142)
* feat: small library tweaks + company page

* feat: new store view

* fix: ci merge error

* feat: add genres to store page

* feat: sorting

* feat: lock game/version imports while their tasks are running

* feat: feature games

* feat: tag based filtering

* fix: make tags alphabetical

* refactor: move a bunch of i18n to common

* feat: add localizations for everything

* fix: title description on panel

* fix: feature carousel text

* fix: i18n footer strings

* feat: add tag page

* fix: develop merge

* feat: offline games support (don't error out if provider throws)

* feat: tag management

* feat: show library next to game import + small fixes

* feat: most of the company and tag managers

* feat: company text field editing

* fix: small fixes + tsgo experiemental

* feat: upload icon and banner

* feat: store infinite scrolling and bulk import mode

* fix: lint

* fix: add drop-base to prettier ignore
2025-07-30 13:40:49 +10:00
Husky 1ae051f066 Update Prisma to 6.11 (#133)
* chore: update prisma to 6.11

more prisma future proofing due to experimental features

* chore: update dependencies

twemoji - new unicode update
argon2 - bux fixes
vue3-carousel - improve mobile experiance
vue-tsc - more stable

* fix: incorrect prisma version in docker

Also remove default value for BUILD_DROP_VERSION, that is now handled in nuxt config

* fix: no logging in prod

* chore: optimize docker builds even more

* fix: revert adoption of prisma driverAdapters

see: https://github.com/prisma/prisma/issues/27486

* chore: optimize dockerignore some more

* Fix `pino-pretty` not being included in build (#135)

* Remove `pino` from frontend

* Fix for downloads and removing of library source (#136)

* fix: downloads and removing library source

* fix: linting

* Fix max file size of 4GB (update droplet) (#137)

* Fix manual metadata import (#138)

* chore(deps): bump vue-i18n from 10.0.7 to 10.0.8 (#140)

Bumps [vue-i18n](https://github.com/intlify/vue-i18n/tree/HEAD/packages/vue-i18n) from 10.0.7 to 10.0.8.
- [Release notes](https://github.com/intlify/vue-i18n/releases)
- [Changelog](https://github.com/intlify/vue-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/intlify/vue-i18n/commits/v10.0.8/packages/vue-i18n)

---
updated-dependencies:
- dependency-name: vue-i18n
  dependency-version: 10.0.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump @intlify/core from 10.0.7 to 10.0.8 (#139)

---
updated-dependencies:
- dependency-name: "@intlify/core"
  dependency-version: 10.0.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Small fixes (#141)

* fix: save task as Json rather than string

* fix: pull objects before creating game in database

* fix: strips relative dirs from version information

* fix: #132

* fix: lint

* fix: news object ids and small tweaks

* fix: notification styling errors

* fix: lint

* fix: build issues by regenerating lockfile

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: DecDuck <declanahofmeyr@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-25 21:28:00 +10:00
DecDuck 45848d175e Small fixes (#141)
* fix: save task as Json rather than string

* fix: pull objects before creating game in database

* fix: strips relative dirs from version information

* fix: #132

* fix: lint

* fix: news object ids and small tweaks

* fix: notification styling errors

* fix: lint
2025-07-20 14:56:15 +10:00
dependabot[bot] 661dcf86a8 chore(deps): bump @intlify/core from 10.0.7 to 10.0.8 (#139)
---
updated-dependencies:
- dependency-name: "@intlify/core"
  dependency-version: 10.0.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-20 14:29:49 +10:00
dependabot[bot] a7b9bbc78a chore(deps): bump vue-i18n from 10.0.7 to 10.0.8 (#140)
Bumps [vue-i18n](https://github.com/intlify/vue-i18n/tree/HEAD/packages/vue-i18n) from 10.0.7 to 10.0.8.
- [Release notes](https://github.com/intlify/vue-i18n/releases)
- [Changelog](https://github.com/intlify/vue-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/intlify/vue-i18n/commits/v10.0.8/packages/vue-i18n)

---
updated-dependencies:
- dependency-name: vue-i18n
  dependency-version: 10.0.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-20 14:29:37 +10:00
DecDuck 75842fbfb6 Fix manual metadata import (#138) 2025-07-14 17:26:00 +10:00
DecDuck 4ef2ab2587 Fix max file size of 4GB (update droplet) (#137) 2025-07-14 16:43:42 +10:00
DecDuck 935ff48b15 Fix for downloads and removing of library source (#136)
* fix: downloads and removing library source

* fix: linting
2025-07-14 15:34:10 +10:00
DecDuck 51390e115f Remove pino from frontend 2025-07-14 14:20:17 +10:00
DecDuck 7bfc441d1d Fix pino-pretty not being included in build (#135) 2025-07-14 12:11:17 +10:00
Husky 2b70cea4e0 Logging (#131)
* ci: pull version from package.json on build

* fix: implicit any type

* feat: inital support for logger

* style: fix lint

* feat: move more logging over to pino

* fix: logging around company importing
2025-07-09 12:01:23 +10:00
DecDuck e4fbc7cd50 Toggle for showing title & description overlay on store page #51 (#130)
* #51 Adds settings page with showTitleDescriptionOnGamePanel

* Removes console.log

* Renames isHidden to system, adds missing system column on Game and fixes nitro plugin on fresh database

* Implements a different way to handle the placeholder image

* Removes system column on Game

* Groups settings keys together

* Removes unused i18n keys

* fix: fix eslints and other small tweaks

---------

Co-authored-by: Francois Ribemont <ribemont.francois@gmail.com>
2025-07-06 13:13:57 +10:00
DecDuck 706f2aac83 FlatLibrary provider (#127) 2025-07-06 12:44:41 +10:00
Husky 73c27f0984 User invite uses external domain option (#118)
* feat: user invite uses external domain option
fixes #117

* fix: inconsistent external url format

* fix: normalize external url more cleanly
2025-07-01 09:11:26 +10:00
DecDuck 12837d44fe Fix linting 2025-07-01 09:09:10 +10:00
DecDuck 12d87d6256 Fix CodeQL warnings 2025-06-28 12:00:42 +10:00
DecDuck 1bfdd73e4c Combined fixes (#116)
* fix: missing CheckIcon import in LanguageSelector

* fix: #114 and error handling

* fix: #97

* fix: lint

* feat: #104

* fix: #72
2025-06-10 10:08:01 +10:00
Pacodastre 60abc03091 Adds delete user functionality in admin panel #86 (#110)
* #86 Adds delete user functionality in admin panel

* Removes unnecessary code

* Prevents current user from deleting itself
2025-06-08 14:49:11 +10:00
DecDuck e32954ea7d Fix: Re-use validator from signup on invitation creation #108 (#113)
* fix: invitation validation

* fix: lint
2025-06-08 14:47:08 +10:00
Husky 72ae7a2884 Various bug fixes (#102)
* feat: set lang in html head

* fix: add # in front of git ref

* fix: remove unused vars from example env

* fix: package name and license field

* fix: enable sourcemap for client and server

* fix: emojis not showing in prod

this is extremely cursed, but it works

* chore: refactor auth manager

* feat: disable invitations if simple auth disabled

* feat: add drop version to footer

* feat: translate auth endpoints

* chore: move oidc module

* feat: add weekly tasks

enabled object cleanup as weekly task

* feat: add timestamp to task log msgs

* feat: add guard to prevent invalid progress %

* fix: add missing global scope to i18n components

* feat: set base url for i18n

* feat: switch task log to json format

* ci: run ci on develop branch only

* fix: UserWidget text not updating #109

* fix: EXTERNAL_URL being computed at build

* feat: add basic language outlines for translation

* feat: add more english dialects
2025-06-08 13:49:43 +10:00
DecDuck 9f5a3b3976 Re-use validator from signup on invitation creation #108 (#111)
* fix: server side validation and client side validation for invitation creation

* fix: lint
2025-06-08 11:59:00 +10:00
DecDuck de438b93d5 Migrate game metadata import to task system #90 (#103)
* feat: move game import to new task system

* fix: sizing issue with new task UI

* fix: lint

* feat: add pcgamingwiki task
2025-06-08 11:37:24 +10:00
DecDuck 9f8890020f Translations update from Weblate (#106)
* Translated using Weblate (English (en_PIRATE))

Currently translated at 100.0% (362 of 362 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/en_PIRATE/

* Translated using Weblate (English (en_PIRATE))

Currently translated at 100.0% (362 of 362 strings)

Translation: Drop/Drop
Translate-URL: http://translate.droposs.org/projects/drop/drop/en_PIRATE/

---------

Co-authored-by: Anonymous <noreply@weblate.org>
2025-06-08 11:15:16 +10:00
DecDuck 0e023534a7 Redesign of language selector #100 (#101)
* feat: add new language selector in footer, add pirate language

* fix: translations in title bar not updating

* chore: refactor into separate component

* fix: update translate url

* fix: update pirate translation to use "ship" instead of "plank" for platform

a very very necessary change
2025-06-08 10:33:41 +10:00
DecDuck a199393e29 Fix: Sign out functionality #95 (#99)
* fix: signout button on user widget

* fix: add comment explaining
2025-06-07 17:26:09 +10:00
DecDuck ed90ae2775 Fix: Broken footer links #96 (#98)
* fix: footer links

* fix: lint
2025-06-07 17:21:07 +10:00
DecDuck ca8ad37adf Fix unauthenticated /api/v1/client/chunk route
Critical fix, no issue or PR
2025-06-07 16:27:43 +10:00
DecDuck 4184705b14 Task groups & viewer in admin panel #52 (#91)
* feat: historical tasks in database, better scheduling, and unified API for accessing tasks

* feat: new UI for everything

* fix: add translations and fix formatting
2025-06-07 15:39:01 +10:00
Pacodastre d976ac87e3 Fix: Image upload modal doesn't close when clicking cancel #50 (#93) 2025-06-07 15:10:28 +10:00
DecDuck c3005813a2 Fix: Server attempts to create setup executable and finds undefined #83 (#84) 2025-06-06 09:18:58 +10:00
DecDuck 9e929ddf98 Better metadata editing division #79 (#82)
* feat: new dropdown-based editor switching

* feat: tab based switching

* feat: add icon

* fix: lint

* chore: i18n translations

oh boy was this a 'chore'
2025-06-05 14:53:19 +10:00
Husky 681efe95af i18n Support and Task improvements (#80)
* fix: release workflow

* feat: move mostly to internal tasks system

* feat: migrate object clean to new task system

* fix: release not  getting good base version

* chore: set version v0.3.0

* chore: style

* feat: basic task concurrency

* feat: temp pages to fill in page links

* feat: inital i18n support

* feat: localize store page

* chore: style

* fix: weblate doesn't like multifile thing

* fix: update nuxt

* feat: improved error logging

* fix: using old task api

* feat: basic translation docs

* feat: add i18n eslint plugin

* feat: translate store and auth pages

* feat: more translation progress

* feat: admin dash i18n progress

* feat: enable update check by default in prod

* fix: using wrong i18n keys

* fix: crash in library sources page

* feat: finish i18n work

* fix: missing i18n translations

* feat: use twemoji for emojis

* feat: sanatize object ids

* fix: EmojiText's alt text

* fix: UserWidget not using links

* feat: cache and auth for emoji api

* fix: add more missing translations
2025-06-05 09:53:30 +10:00
Aden Lindsay c7fab132ab Many new improvments and features to the UI (#76)
* feat(general): many new improvments and features to the UI

* fix: fix lints and run preetier

* fix: furthermore fixes

* chore: fix preetier eslint issue

* stlye: reposition mark all as read button for better placement

* fix: fix inccorect positioning on the mark all as read buton, again

* fix: fix account related issue with predefined types and styling

* fix: fix notification button dissapearance & type definition

* fix: fix auth page styling

* stlye: fixed styling on users list

* fix: fix lint dead code collector

* fix: please the prettier gods

* fix(notifications): seriously serialising

* chore: please the prettier gods once again, o holy one

* fix: remove eslint thing, im blaming eslint for that one

---------

Co-authored-by: Aden <aden@adenmgb.com>
2025-06-04 13:56:23 +10:00
DecDuck 4f8ea3e4ff Custom readValidatedBody util to return more specific error #69 (#78)
* feat: add readDropValidatedBody w/ special handler for ArkErrors

* fix: lint
2025-06-03 17:40:41 +10:00
DecDuck f264fd0971 Fix: Importing without Metadata is broken. #73 (#75)
* fix: manual metadata import

* fix: lint
2025-06-03 10:49:01 +10:00
DecDuck 8a354f0674 Fix admin library page "to import" logic #70 (#71) 2025-06-02 12:06:57 +10:00
DecDuck 3f78b6c94e Cannot create library source due to backend missing from request #67 (#68) 2025-06-02 11:05:36 +10:00
DecDuck 2056871dc9 Add UI for multi-library management #59 (#63)
* feat: add ui for library source management

* fix: lint
2025-06-01 18:33:42 +10:00
DecDuck 40e66def1e Multi-upload to image library #56 (#60)
* feat: support for file upload handler to track multiple files

* feat: update image upload endpoint to allow multiple files

* fix: lint
2025-06-01 16:06:56 +10:00
DecDuck 3e5c3678d5 Database-level multi-library support #48 (#58)
* feat: start of library backends

* feat: update backend routes and create initializer

* feat: add legacy library creation

* fix: resolve frontend type errors

* fix: runtime errors

* fix: lint
2025-06-01 16:05:05 +10:00
DecDuck 490afd0bb7 Fix GiantBomb metadata #61 (#62)
* fix: reviews error

* fix: lint
2025-06-01 15:39:10 +10:00
DecDuck 3fbe514f65 feat: ratings ui, import giantbomb ratings 2025-05-30 22:07:50 +10:00
Huskydog9988 185f37f135 fix: release workflow 2025-05-30 19:01:39 +10:00
DecDuck 6cc7e10fcd fix: remove old validation on version import 2025-05-30 13:18:35 +10:00
DecDuck 85edc4cca2 chore: move more admin over to arktype validators 2025-05-30 13:17:21 +10:00
DecDuck 83a9b22d82 fix: various fixes 2025-05-30 10:29:55 +10:00
DecDuck fca85633c1 chore: remove old playtime api 2025-05-30 08:41:50 +10:00
DecDuck 83a0ef2240 Merge branch 'Huskydog9988-more-fixes' into develop 2025-05-30 08:40:42 +10:00
DecDuck 925f3cb4f0 chore: remove const 2025-05-30 08:39:58 +10:00
DecDuck 2b61e9a371 chore: add DROP_VERISON constant 2025-05-30 08:39:43 +10:00
Huskydog9988 4f789a2e5b feat: cleanup extra metadata 2025-05-29 17:27:03 -04:00
Huskydog9988 d1c09784a4 fix: remove unused favicon ref 2025-05-29 17:07:30 -04:00
Huskydog9988 37fa9537d0 feat: object cleanup is finally here 2025-05-29 16:55:24 -04:00
Huskydog9988 f97a968e0d fix: not being able to edit game title 2025-05-29 15:59:53 -04:00
Huskydog9988 59b77b5a5e fix: allow specifying git ref 2025-05-29 15:22:12 -04:00
Huskydog9988 ad2c0f982a feat: add attestations to docker images
attestations are best practice https://docs.docker.com/build/ci/github-actions/attestations/
2025-05-29 14:26:15 -04:00
Huskydog9988 04d5ad0519 fix: compose not following node best practices 2025-05-29 14:18:57 -04:00
Huskydog9988 f08e1b40c3 fix: git install in docker 2025-05-29 14:18:19 -04:00
Husky dc982df96b Merge branch 'develop' into more-fixes 2025-05-29 13:58:27 -04:00
Huskydog9988 d99c648259 fix: accidental removal of nightly tag 2025-05-29 13:54:14 -04:00
Huskydog9988 233324d6fb feat: supply drop version during release build 2025-05-29 13:52:32 -04:00
Huskydog9988 15806a3c9f feat: allow clients to fetch drop version 2025-05-29 13:29:19 -04:00
DecDuck c5f8b44537 fix: metadata update errors 2025-05-29 17:36:52 +10:00
DecDuck ea90a7f086 fix: blade's metadata issue 2025-05-29 17:28:49 +10:00
Huskydog9988 be793ce0f7 fix: use ghcr instead of docker registry 2025-05-28 12:15:23 -04:00
DecDuck 093bb60eb2 chore: add DROP_VERISON constant 2025-05-28 15:07:11 +10:00
Husky ddaba898ee Merge branch 'develop' into more-fixes 2025-05-27 15:17:42 -04:00
Huskydog9988 0816d2ab3e fix: info leak in screenshots api 2025-05-27 15:14:50 -04:00
Huskydog9988 4b009f1aca feat: basic playtime backend 2025-05-27 12:30:20 -04:00
DecDuck 79a23ae1c6 Merge pull request #46 from Pacodastre/fix-docker-compose-image
Fixes wrong image being used in deploy-template example
2025-05-25 07:16:14 +10:00
Francois Ribemont 0719ffe0fa Fixes wrong image being used in example 2025-05-24 21:11:51 +01:00
Huskydog9988 21eec081ee fix: missing user check in screenshot api endpoint 2025-05-15 18:28:08 -04:00
Huskydog9988 4fbc730490 chore: style 2025-05-15 17:29:43 -04:00
Huskydog9988 a89c657fe1 feat: very basic screenshot api 2025-05-15 15:51:35 -04:00
Huskydog9988 831b20d737 fix: remove old requiredPerms field 2025-05-15 14:42:40 -04:00
Huskydog9988 59c3b9b76e fix: don't send system notifications to all users 2025-05-15 13:53:05 -04:00
Huskydog9988 bee3b0c588 fix: drop update notifications 2025-05-15 13:45:05 -04:00
Huskydog9988 1165d86c2c Merge remote-tracking branch 'origin/develop' into more-fixes 2025-05-15 13:38:46 -04:00
DecDuck ce27f76856 fix: openid redirect auth query 2025-05-15 21:22:24 +10:00
DecDuck 8e3ae01a30 feat: backend inline capability registration 2025-05-15 16:06:03 +10:00
DecDuck 6dad3aeab7 chore: style 2025-05-15 14:58:01 +10:00
DecDuck 1d141c117b fix: apply notification acls to live notifications 2025-05-15 14:57:16 +10:00
DecDuck 1dba112bce feat: separate library and metadata pages, notification acls 2025-05-15 14:55:05 +10:00
Huskydog9988 9d2aded70f feat: add acl to notifications
not sure if i got all the acls of the different notifications down rn, but it seems to be about right
2025-05-14 22:53:09 -04:00
Huskydog9988 82b123a345 fix: gamerating model 2025-05-14 22:13:53 -04:00
Huskydog9988 a34f10d9b9 feat: igdb tag support 2025-05-14 22:03:32 -04:00
Huskydog9988 9bf36c8737 feat: pcgamgingwiki desc in searchstub 2025-05-14 21:52:32 -04:00
Huskydog9988 bea26a9a6d feat: game metadata rating support 2025-05-14 21:40:25 -04:00
Huskydog9988 6df2ef1740 fix: igdb assuming certain values always exist 2025-05-14 21:38:16 -04:00
Huskydog9988 56e1ba64ed fix: check update not using drop's correct version 2025-05-14 19:54:06 -04:00
Huskydog9988 898516b33d chore: style 2025-05-14 18:27:31 -04:00
Huskydog9988 2cc3f1329c feat: fs object metadata cache and validation 2025-05-14 17:19:51 -04:00
Huskydog9988 b551788c4c fix: object fs backend not deleting metadata 2025-05-14 16:51:45 -04:00
Huskydog9988 ccdbbcf01c fix: editing game image metadata in admin panel 2025-05-14 16:30:35 -04:00
Huskydog9988 b033496710 feat: update checker based gh releases 2025-05-14 16:07:25 -04:00
Huskydog9988 a101ff07c4 fix: allow notification nonce reuse per user 2025-05-14 15:40:55 -04:00
DecDuck 086664adfd Update README.md 2025-05-12 17:11:19 +10:00
DecDuck ce0e21be9a Update README.md 2025-05-12 17:10:36 +10:00
Huskydog9988 dad2161754 feat: games now have tag support 2025-05-11 12:52:00 -04:00
Huskydog9988 a8ee27eea9 feat: pcgamgingwiki now provides a description 2025-05-11 00:35:16 -04:00
Huskydog9988 1bbdf46a0e feat: better docker builds 2025-05-10 23:49:58 -04:00
Huskydog9988 fc74738643 feat: new unified data folder 2025-05-10 16:18:28 -04:00
Huskydog9988 60d22ea280 fix: back button link in admin dash 2025-05-10 16:02:44 -04:00
Huskydog9988 3df6818ffe feat: openapi support plus more api validation 2025-05-10 15:16:26 -04:00
DecDuck a0bc4bbc4c feat: refactored into separate metadata and library pages 2025-05-10 15:22:57 +10:00
DecDuck 90277653cb feat: rework developer/publisher system 2025-05-10 11:59:56 +10:00
DecDuck ac355918ed Merge branch 'Huskydog9988-further-improvements' into develop 2025-05-10 11:26:16 +10:00
DecDuck d6830c3428 feat: update search style 2025-05-10 11:25:45 +10:00
Huskydog9988 cbf480bef9 fix: pcgamingwiki not parsing company websites 2025-05-10 11:25:45 +10:00
Huskydog9988 afaaaf2eb5 feat: unified company metadata store
still need to migrate users from old developer and publisher tables
2025-05-10 11:25:45 +10:00
Huskydog9988 14f0833d17 feat: finish migrating to new objectid naming 2025-05-10 11:25:45 +10:00
Huskydog9988 7f7d8c8f45 fix: linting errors 2025-05-10 11:25:45 +10:00
Huskydog9988 52a7de0a8b feat: minimum support for unrefed object cleanup 2025-05-10 11:25:45 +10:00
Huskydog9988 dbded55113 feat: identify unused objects 2025-05-10 11:25:44 +10:00
Huskydog9988 aa3105aecd feat: manually edit search term for game import 2025-05-10 11:25:44 +10:00
Huskydog9988 0c48d42c2d fix: missing metadata preventing game import
when a metadata provider fails to import a game's developer / publisher, the import is no longer blocked. the imports usally fail because there isn't a page for these compaines
2025-05-10 11:25:44 +10:00
Huskydog9988 836ba33fe4 feat: basic screenshot manager 2025-05-10 11:25:44 +10:00
DecDuck 1f41e52a86 feat: update search style 2025-05-10 11:24:04 +10:00
Huskydog9988 17e4734cfb fix: pcgamingwiki not parsing company websites 2025-05-08 21:22:15 -04:00
Huskydog9988 b681476373 feat: unified company metadata store
still need to migrate users from old developer and publisher tables
2025-05-08 20:44:37 -04:00
DecDuck 3a9eb82fdf fix: fix invitation register url 2025-05-09 10:02:48 +10:00
Huskydog9988 7e5e7b032b feat: finish migrating to new objectid naming 2025-05-08 19:42:46 -04:00
Huskydog9988 df291c3e9a fix: linting errors 2025-05-08 19:26:46 -04:00
Huskydog9988 bf691a7f5c feat: minimum support for unrefed object cleanup 2025-05-08 19:20:34 -04:00
Huskydog9988 597a2264e8 feat: identify unused objects 2025-05-08 19:19:10 -04:00
Huskydog9988 1a2d3c8207 feat: manually edit search term for game import 2025-05-08 12:16:12 -04:00
Huskydog9988 471e85d7c6 fix: missing metadata preventing game import
when a metadata provider fails to import a game's developer / publisher, the import is no longer blocked. the imports usally fail because there isn't a page for these compaines
2025-05-08 11:57:37 -04:00
Huskydog9988 f9f437dd85 feat: basic screenshot manager 2025-05-08 11:38:09 -04:00
DecDuck 143846c48a fix: revert session store 2025-05-08 21:46:12 +10:00
DecDuck 2fb909f73d Revert "fix: convert socket sessions to cacheHandler"
This reverts commit 733aee3977.
2025-05-08 21:43:54 +10:00
DecDuck 0f773a9779 fix: docker build 2025-05-08 21:30:52 +10:00
DecDuck 92a98a5984 fix: add prisma binary targets 2025-05-08 20:21:50 +10:00
DecDuck 464af37afb chore: warn when metadata fails 2025-05-08 19:49:37 +10:00
DecDuck f8dc3fef55 fix: swap order of nuxt and prisma generations 2025-05-08 17:35:59 +10:00
DecDuck 6d35e2697d fix: switch prisma schema type 2025-05-08 17:33:07 +10:00
DecDuck 0d02be2392 fix: refactor prisma multifolder into docs example 2025-05-08 16:25:01 +10:00
DecDuck 48f796ae4b fix: update prisma schema and path 2025-05-08 16:20:19 +10:00
DecDuck 125fe9e6e2 fix: remove jank prisma script, and move to generated prisma client 2025-05-08 16:17:23 +10:00
DecDuck 29f3094ad4 Merge branch 'Huskydog9988-more-stuff' into develop 2025-05-08 15:50:47 +10:00
DecDuck 733aee3977 fix: convert socket sessions to cacheHandler 2025-05-08 15:50:29 +10:00
DecDuck e3ed60feae feat: add oidc to admin panel 2025-05-08 15:48:46 +10:00
DecDuck bfa2c0a641 feat: add oidc to admin panel 2025-05-08 15:29:50 +10:00
Huskydog9988 952df560ec chore: remove fsbackend console logs 2025-05-07 22:32:24 -04:00
Huskydog9988 1db2229ad3 fix: edgecase where object hash isn't read 2025-05-07 22:29:10 -04:00
Huskydog9988 731499be81 feat: unified cache handler 2025-05-07 22:26:34 -04:00
Huskydog9988 5aa0899bcf docs: why timeline was disabled 2025-05-07 21:45:13 -04:00
Huskydog9988 30b065dde3 fix: eslint error and server plugin name 2025-05-07 18:50:57 -04:00
Huskydog9988 1f510bee57 Merge branch 'develop' of https://github.com/Huskydog9988/drop into more-stuff 2025-05-07 18:45:36 -04:00
Huskydog9988 07b34c874d refactor: homepage link in header 2025-05-07 18:42:13 -04:00
DecDuck 19ff73cc30 feat: oidc 2025-05-07 22:14:04 +10:00
DecDuck e8633ceca2 fix: signout, again 2025-05-07 12:26:22 +10:00
DecDuck 770294d559 fix: ignore error if we are unable to blacklist certificate 2025-05-07 12:16:09 +10:00
DecDuck c0c55d35f4 fix: signout route 2025-05-07 11:33:21 +10:00
DecDuck a47debda91 fix: notification rendering 2025-05-07 09:54:02 +10:00
Huskydog9988 c449b45009 chore: remove redundant omitApi prisma option 2025-04-24 18:34:20 -04:00
Huskydog9988 f1f19c8263 feat: run tasks at startup 2025-04-23 21:14:16 -04:00
DecDuck 31ad8505b7 fix: task api and other small issues 2025-04-20 23:34:22 +10:00
DecDuck feedcfc5c4 fix: metadata init issues 2025-04-20 23:24:08 +10:00
DecDuck a5facbd648 fix: misc fixes 2025-04-20 21:33:19 +10:00
DecDuck 3b1d04251c feat: log metadata error if fail 2025-04-20 21:23:09 +10:00
DecDuck fd4ec3fd1c Update release.yml 2025-04-20 20:43:01 +10:00
DecDuck 0a270b267c fix: prisma migrations in docker
i hate prisma so so so so so much
2025-04-20 18:12:29 +10:00
DecDuck ec6d38d7af fix: copy package.json to Dockerfile 2025-04-19 21:51:44 +10:00
DecDuck a9d8ddc0f5 fix: prisma schema folder location 2025-04-19 21:51:22 +10:00
DecDuck dada379354 Merge pull request #37 from Huskydog9988/eslint
feat: add eslint and prettier
2025-04-19 11:40:21 +10:00
Huskydog9988 86c7aa33ce fix: don't set own script csp 2025-04-17 20:57:27 -04:00
Huskydog9988 26abb75e94 ci: add prefix to branch based docker tags 2025-04-17 20:18:21 -04:00
Huskydog9988 8eec8b19dd fix: userwidget not opening 2025-04-17 20:17:31 -04:00
Huskydog9988 582acfb385 fix: missing components errors 2025-04-16 12:03:42 -04:00
Huskydog9988 456902c784 fix: type error in $dropFetch 2025-04-15 22:01:24 -04:00
Huskydog9988 87215c4a1e chore: prettier pass 2025-04-15 21:46:34 -04:00
Huskydog9988 d361e01eef fix: last eslint errors 2025-04-15 21:43:27 -04:00
Huskydog9988 8e109dd562 fix: more eslint stuff 2025-04-15 21:10:45 -04:00
Huskydog9988 8f429e1e56 fix: eslint errors, switch to using maps 2025-04-15 20:04:45 -04:00
Huskydog9988 e362f732e7 fix: more eslint issues 2025-04-13 22:10:28 -04:00
Huskydog9988 86c2d00726 feat: add lint ci job 2025-04-13 21:46:41 -04:00
Huskydog9988 d4b89b5dc5 fix: inital eslint errors 2025-04-13 21:44:29 -04:00
Huskydog9988 ff1255f948 feat: add eslint and prettier 2025-04-13 21:43:35 -04:00
DecDuck 96742cc918 Merge branch 'Huskydog9988-more-ui-work' into develop 2025-04-14 10:54:09 +10:00
DecDuck c2bb835b0f fix: etags and other
remove sanitize-filename because IDs are internally generated
remove pulse animation on NO GAME cards
add migration
refactors to be inline with other stuff
2025-04-14 10:52:12 +10:00
Huskydog9988 f384492ed2 fix: missing key in loops 2025-04-12 16:03:35 -04:00
Huskydog9988 22a7cfa544 feat: save fs objectbackend hashes 2025-04-12 15:54:26 -04:00
Huskydog9988 228d109692 fix: incorrect perms when deleting objects 2025-04-11 19:32:30 -04:00
Huskydog9988 dc89ff95d8 feat: make internal objectbackend methods private 2025-04-10 19:57:08 -04:00
Huskydog9988 04c56fd985 chore: update @types/bcryptjs 2025-04-10 19:50:37 -04:00
Huskydog9988 ca03be7f43 fix: don't add write perms, users can only delete objects 2025-04-10 19:50:04 -04:00
Huskydog9988 35a2d98790 fix: don't use stream package 2025-04-10 19:29:11 -04:00
Huskydog9988 c4d8b24295 feat: hash objects for etag value 2025-04-09 14:48:13 -04:00
DecDuck 42349ad4e1 feat: allow client-based web tokens 2025-04-08 16:16:40 +10:00
Huskydog9988 e7566a6316 feat: upgrade to nuxt 3.16 2025-04-07 21:55:52 -04:00
Huskydog9988 fdffd9a32a feat: add skeleton for loading game carousel 2025-04-07 21:28:58 -04:00
Huskydog9988 4c3413ae63 feat: add nonce to scripts 2025-04-07 20:01:57 -04:00
Huskydog9988 30e3e7289a chore: drop unused dep 2025-04-07 19:57:47 -04:00
Huskydog9988 12ba416ca5 feat: enable nuxt dev tools 2025-04-07 19:57:00 -04:00
Huskydog9988 e4aeaee6e7 refactor: move tsconfig to nuxt config 2025-04-07 19:55:33 -04:00
Huskydog9988 9d943bc5dc feat: add etag to object response 2025-04-07 19:19:45 -04:00
Huskydog9988 66d1413eb5 fix: gamecarousel layout shifts (mostly) 2025-04-07 17:28:40 -04:00
Huskydog9988 e572b61af9 fix: gamecarousel not resizing 2025-04-07 16:57:44 -04:00
Huskydog9988 f9b774ddb5 fix: wordmark causing page refresh 2025-04-07 16:49:56 -04:00
Huskydog9988 106b3f66a4 feat: sleak transition from store page to item 2025-04-07 16:17:55 -04:00
Huskydog9988 657fd50702 fix: missing html attributes 2025-04-07 16:13:57 -04:00
Huskydog9988 7400fae11b fix: use nuxtlink instaed of a tag 2025-04-07 16:11:56 -04:00
DecDuck 043ef6dcd2 fix: remove debug values from game carousel 2025-04-07 17:44:48 +10:00
DecDuck 6ea50bffc8 fix: store page released date 2025-04-07 16:55:01 +10:00
DecDuck 9584d69e97 fix: add tsignore pending upstream fix 2025-04-07 10:52:56 +10:00
DecDuck 5ceff44993 Merge branch 'Huskydog9988-more-fixes' into develop 2025-04-07 10:40:20 +10:00
DecDuck 372a9bdd97 fix: devices page (reactivity and relative timestamps) 2025-04-07 10:37:01 +10:00
Huskydog9988 fe82c78571 refactor: remove momentjs 2025-04-06 19:44:38 -04:00
Huskydog9988 fd11d41dc5 chore: updates prisma and bycryptjs 2025-04-06 14:34:25 -04:00
Huskydog9988 9242a810b0 fix: don't prerender auth routes 2025-04-06 14:28:03 -04:00
Huskydog9988 0b9d0a4ad9 fix: don't use npm crypto 2025-04-06 14:27:31 -04:00
Huskydog9988 17d3e0ef54 refactor: use node crypto uuid 2025-04-06 14:08:36 -04:00
Huskydog9988 4fd2b159a6 fix: type error in devices page 2025-04-06 13:47:55 -04:00
Huskydog9988 d6d457f999 fix: generate prisma types on install (like nuxt) 2025-04-06 13:46:53 -04:00
DecDuck 54b3bc3a7e fix: devices page for mobile 2025-04-05 23:30:38 +11:00
DecDuck 2cbee3d495 feat: add ability to review and revoke clients 2025-04-05 17:42:32 +11:00
DecDuck 7263ec53ac fix: remove weird import 2025-04-05 15:38:07 +11:00
DecDuck 0edfdbdfce fix: return user library for client 2025-04-05 15:34:24 +11:00
DecDuck 114d235a6a fix: remove legacy metadata client routes 2025-04-05 15:34:12 +11:00
DecDuck a47615a274 refactor: move game id fetch to index 2025-04-05 15:33:59 +11:00
DecDuck 1987c578bc Merge branch 'Huskydog9988-better-ci' into develop 2025-04-05 14:22:38 +11:00
DecDuck b2327b21fe Merge branch 'better-ci' of https://github.com/Huskydog9988/drop into Huskydog9988-better-ci 2025-04-05 14:22:21 +11:00
DecDuck b22681c555 fix: fix types, remove @nuxt/image because of broken types 2025-04-05 14:21:37 +11:00
Huskydog9988 931913b836 ci: drop PAT_TOKEN 2025-04-04 19:19:33 -04:00
Huskydog9988 2be0e2f88c ci: add typecheck ci 2025-04-04 19:15:05 -04:00
Huskydog9988 7df175b747 ci: update actions versions 2025-04-04 19:03:38 -04:00
Huskydog9988 b6d05a6d09 ci: don't mark nightly container as latest 2025-04-04 18:59:18 -04:00
Huskydog9988 8d88728c99 feat: typecheck in dev 2025-04-04 18:52:34 -04:00
Huskydog9988 7141735664 fix: auth prerender 2025-04-04 18:51:01 -04:00
DecDuck 82baeb909a feat: add yarn typecheck and fix all types 2025-04-05 09:40:05 +11:00
DecDuck 2a85322f64 Merge branch 'Huskydog9988-db-store' into develop 2025-04-04 10:37:08 +11:00
DecDuck 088cb68604 chore: apply schema changes to db 2025-04-04 10:34:58 +11:00
Huskydog9988 81be7ccf58 Merge remote-tracking branch 'origin/develop' into db-store 2025-04-03 19:21:05 -04:00
Huskydog9988 a9d1a442f6 refactor: session handler 2025-04-03 19:15:33 -04:00
Huskydog9988 97043d6366 fix: register page validation 2025-04-03 19:11:35 -04:00
Huskydog9988 756bf8f93f fix: add missing dev deps 2025-04-03 18:15:39 -04:00
Huskydog9988 9dc35c80c5 Merge branch 'develop' into db-store 2025-04-03 18:12:07 -04:00
Huskydog9988 0f35d4a445 feat: cache for session store in db 2025-04-01 21:32:13 -04:00
DecDuck 57f50b0306 fix: renable nuxt-security with xss validator off 2025-04-01 21:20:54 +11:00
DecDuck 065951d91f fix: update last accessed client on push 2025-04-01 21:16:54 +11:00
DecDuck 36e6c92938 feat: add cloud save backend 2025-04-01 21:08:57 +11:00
DecDuck e7109e58bb feat: update readme 2025-04-01 18:36:51 +11:00
DecDuck 17372a9c06 feat: account pages framework & updates to library 2025-04-01 18:28:34 +11:00
DecDuck d7297707d7 fix: register redirect 2025-04-01 18:18:57 +11:00
DecDuck c809c8fcbf fix: re-request fix for $dropFetch 2025-04-01 16:58:53 +11:00
DecDuck 68f5f88347 fix: carousel pagination 2025-04-01 16:42:08 +11:00
DecDuck 6f8e28d711 fix: sidebar in library page 2025-04-01 16:19:03 +11:00
DecDuck 47dc364d4e Merge branch 'develop' of https://github.com/AdenMGB/drop into AdenMGB-develop 2025-04-01 12:11:57 +11:00
DecDuck 3b4f940983 feat: slight optimisation with removing from collection 2025-04-01 12:08:39 +11:00
DecDuck 1048653eef fix: $dropFetch SSR and rate limiting 2025-04-01 12:02:34 +11:00
DecDuck f1c932b7d7 fix: remove previous fix and add longer yarn install timeout 2025-03-31 12:35:34 +11:00
DecDuck 7c420ba7d7 fix: revert previous and add yarn clean/configs 2025-03-31 12:24:50 +11:00
DecDuck 7974361e5b fix: potential fix for timeout: switch to full image from slim 2025-03-31 12:18:14 +11:00
DecDuck 01171d788c fix: pin nuxt to 3.15.4 and recreate lockfile 2025-03-31 11:50:15 +11:00
DecDuck eec709a6e9 fix: recreate lockfile 2025-03-31 11:37:09 +11:00
DecDuck 5384759261 fix: update workflow to recurse submodules properly 2025-03-31 09:47:54 +11:00
DecDuck e3022bc52b fix: add submodules 2025-03-31 09:38:58 +11:00
DecDuck c7af02c15e fix: update dockerfile & use NPM droplet 2025-03-31 09:32:09 +11:00
DecDuck 96a1199fff fix: update dockerfile to debian 12 2025-03-27 11:09:37 +11:00
DecDuck 2cfc2cee7c Merge pull request #29 from Huskydog9988/patch-1
nightly builds and fix drop repo
2025-03-27 09:22:31 +11:00
Husky f5e52321b8 nightly builds and fix drop repo 2025-03-26 18:20:37 -04:00
DecDuck 58d558159d feat: github build 2025-03-27 09:16:22 +11:00
DecDuck e4e1c66bca fix: public assets 2025-03-24 12:55:07 +11:00
DecDuck 1996b97e99 refactor: use hash directly in authmek and version field on authmek 2025-03-24 12:50:21 +11:00
DecDuck cb4937b590 Merge pull request #28 from Huskydog9988/auth-overhaul
overhaul auth and futureproof it with argon2
2025-03-24 12:27:14 +11:00
Huskydog9988 57042892c4 move register to auth path 2025-03-23 21:08:08 -04:00
Huskydog9988 1f309606c9 address some issues 2025-03-23 21:07:12 -04:00
Huskydog9988 f9e6702d40 Merge branch 'develop' into auth-overhaul 2025-03-23 20:33:46 -04:00
Huskydog9988 690aa042df switch back to json 2025-03-23 20:29:50 -04:00
DecDuck 87f01a9984 Merge pull request #26 from Huskydog9988/perf-fixes
massive perf improvements
2025-03-23 10:56:35 +11:00
Huskydog9988 c1272dc7a7 use arktype for clientside validation 2025-03-22 19:37:28 -04:00
Huskydog9988 257cdacad4 make signup less error prone in db 2025-03-22 17:26:12 -04:00
Huskydog9988 2c9fdebf25 new accounts use argon2 2025-03-22 17:09:10 -04:00
Huskydog9988 2027c69c0e fix signout 2025-03-22 16:55:08 -04:00
Huskydog9988 e08a13f2c3 add sharp for ipx 2025-03-22 15:58:53 -04:00
Huskydog9988 6ed7e76b17 move auth pages into auth dir 2025-03-22 15:54:43 -04:00
DecDuck 573bf87cbb Merge pull request #27 from Huskydog9988/cleanup-platform-parse
fix: platformparse case sensitivity
2025-03-20 23:10:28 +00:00
Husky e8afa274a7 fix: platformparse case sensitivity 2025-03-20 17:52:04 -04:00
Husky d4d1eaf2e2 Merge branch 'develop' into perf-fixes 2025-03-16 12:16:47 -04:00
DecDuck 6918e78cf9 fix: macos and rate limiting 2025-03-15 15:04:52 +11:00
Husky cd93ba2197 massive perf improvements
on the store page, brings LCP down to only 5.6s from 11s. total lighthouse score is now 78
2025-03-14 20:18:26 -04:00
Aden Lindsay c052511ff3 fix(library): Use $dropFetch util 2025-03-15 09:54:20 +10:30
Aden Lindsay 19d1a9dd0e style(library): complete restyling to match client library 2025-03-15 09:46:15 +10:30
Aden Lindsay 66400f4875 fix(webui): Fix forcably redirecting to https 2025-03-15 09:45:09 +10:30
Huskydog9988 88a5dc2a58 add migrations to store ca and session in db 2025-03-14 11:37:31 -04:00
Huskydog9988 cf0af15854 store sessions in db 2025-03-14 11:35:12 -04:00
Huskydog9988 61764e81b8 store certs in db 2025-03-14 10:53:37 -04:00
DecDuck 98c8258127 fix?: https redirection issues 2025-03-14 20:31:00 +11:00
DecDuck 3527f678e5 fix: remove @nuxt/content 2025-03-14 13:23:56 +11:00
DecDuck fce084f95a Merge branch 'Huskydog9988-perf-improvements/fetch' into develop 2025-03-14 13:16:55 +11:00
DecDuck 1ad1ebb3fd merge: husky updates 2025-03-14 13:16:26 +11:00
DecDuck 1de9ebdfa5 feat: refactor news and migrate rest of useFetch to $dropFetch 2025-03-14 13:12:04 +11:00
DecDuck bd1cb67cd0 feat: user page & $dropFetch util 2025-03-14 12:22:08 +11:00
DecDuck 3225f536ce feat: lazy init igdb 2025-03-13 16:18:44 +11:00
DecDuck 58f91f4ac4 Merge branch 'Huskydog9988-metadata-improvements' into develop 2025-03-13 15:55:09 +11:00
DecDuck 8fc37936dc Merge branch 'metadata-improvements' of https://github.com/Huskydog9988/drop into Huskydog9988-metadata-improvements 2025-03-13 15:54:51 +11:00
DecDuck 0ca9a3b2f7 feat: database level metadata provider init 2025-03-13 15:20:13 +11:00
Huskydog9988 f8ae5b70c0 automate twitch credential refresh 2025-03-12 19:06:52 -04:00
Huskydog9988 7a3b30b012 accidently commited secret from testing lol (revoked) 2025-03-12 19:06:52 -04:00
Huskydog9988 4e8cffd778 make pcgamig wiki types match api return 2025-03-12 19:06:52 -04:00
Huskydog9988 bf7eb5b986 fix issue in igdb where company isn't found 2025-03-12 19:06:34 -04:00
Huskydog9988 77d06df7d3 fix manual metadata fetching publishers +types 2025-03-12 19:06:34 -04:00
Huskydog9988 2755aa472b in progress igdb 2025-03-12 19:06:34 -04:00
Huskydog9988 2b7bc6965d add content security policy to allow showing remote images for game importing 2025-03-12 19:05:11 -04:00
Huskydog9988 08164cae68 add pcgamingwiki as metadata source 2025-03-12 19:05:11 -04:00
Huskydog9988 2ca96c34f7 note that you need to init submodules 2025-03-12 19:04:32 -04:00
Huskydog9988 4b4e067fac cleanup giantbomb provider 2025-03-12 19:04:32 -04:00
Huskydog9988 d2b485456a gracefully disable metadata provider when api key is missing 2025-03-12 19:04:32 -04:00
quexeky 793b57a163 chore: Update changelog.md 2025-03-12 18:59:59 -04:00
quexeky d9218dea59 fix: Update README.md with discord link 2025-03-12 18:59:59 -04:00
DecDuck 789361ea73 feat: add mac as platform 2025-03-11 19:02:53 +11:00
DecDuck ffc1537d7f feat: partial work on home admin page 2025-03-11 18:25:29 +11:00
DecDuck 9d07070ef6 feat: add news client routes 2025-03-11 18:24:50 +11:00
DecDuck 0f0874c10a feat: file uploads on news articles 2025-03-11 17:51:46 +11:00
DecDuck 137241fdbb fix: notifications and store styling 2025-03-11 17:08:31 +11:00
DecDuck 9515a21dc6 feat: move article creation into a modal 2025-03-11 12:20:56 +11:00
DecDuck c3ee948682 fix: store page styling 2025-03-11 11:47:35 +11:00
DecDuck 9608cc9742 fix: re-enable metadata providers 2025-03-11 11:33:05 +11:00
DecDuck 88aaa2a71b fix: add aarch64 tag to runner 2025-03-11 09:06:41 +11:00
DecDuck 133503582a feat: client collection routes 2025-03-10 12:28:59 +11:00
DecDuck 1eede0f035 fix: news frontend 2025-03-10 12:05:10 +11:00
DecDuck b6f52f660a fix: unmerged changes 2025-03-10 11:42:33 +11:00
DecDuck a1f65b7e59 Merge branch 'AdenMGB-develop' into develop 2025-03-10 11:41:40 +11:00
DecDuck 1ce707788d fix: decduck's code review 2025-03-10 11:39:45 +11:00
DecDuck 31aaec74af feat: migrate to tailwind v4 and fix user token API 2025-03-10 10:35:03 +11:00
DecDuck 97792f0707 fix: home page now (temporarily) redirects to store 2025-03-10 10:34:57 +11:00
DecDuck b6189d12e7 fix(droplet): add aarch64 optional packages 2025-03-10 10:34:32 +11:00
DecDuck 0877638fc4 feat(acls): refactor & acl descriptions 2025-03-10 10:34:32 +11:00
DecDuck 090d2e6586 feat(acls): added backend acls 2025-03-10 10:34:26 +11:00
DecDuck a64a2479ba feat: migrate to tailwind v4 and fix user token API 2025-02-14 20:01:18 +11:00
DecDuck 856babbc21 fix: null strings in setup versions 2025-02-13 13:34:46 +11:00
DecDuck aad5c23f45 fix: import ui setup autocomplete 2025-02-13 13:34:45 +11:00
DecDuck d8d5b938f0 fix: home page now (temporarily) redirects to store 2025-02-08 11:41:16 +11:00
DecDuck 3afd36a821 fix(droplet): add aarch64 optional packages 2025-02-08 11:38:06 +11:00
DecDuck ce8887528f feat(acls): refactor & acl descriptions 2025-02-07 17:26:23 +11:00
DecDuck d4dd259b5f feat(acls): added backend acls 2025-02-04 13:15:52 +11:00
Aden Lindsay 256fbd6afa fix(backend): Add forgotton migration for news storage 2025-02-03 16:50:10 +10:30
Aden Lindsay 9344d94e4c feat(api): Added API for deleting news articles 2025-02-02 10:21:43 +10:30
Aden Lindsay 1286248207 feat(api): Added API for retriving information about a spesific news article 2025-02-02 10:21:10 +10:30
Aden Lindsay 2ef8f2f93c feat(api): Added API for fetching news articles 2025-02-02 10:20:26 +10:30
Aden Lindsay 86053815f0 feat(api): Added API for creating articles 2025-02-02 10:19:31 +10:30
Aden Lindsay 88453f1ec4 feat(backend): Added backend communction between API & Frontend 2025-02-02 10:18:27 +10:30
Aden Lindsay 623ab7d786 feat(DB): Updated DB for news articles to be stored in the DB 2025-02-02 10:17:21 +10:30
Aden Lindsay 1ed15902a3 feat(news): Updated user for authoring articles 2025-02-02 10:16:28 +10:30
Aden Lindsay 3a55075532 feat(news): Created article full screen view 2025-02-02 10:15:09 +10:30
Aden Lindsay 6c7866ad14 feat(news): Created article overview page 2025-02-02 10:10:16 +10:30
Aden Lindsay f78b29b7fd feat(news) Added news page/sidebar 2025-02-02 10:09:25 +10:30
Aden Lindsay d8e964e06b feat(news): Added backend for news 2025-02-02 10:08:34 +10:30
Aden Lindsay 5d8f9d3813 Create useNews.ts 2025-02-02 10:07:24 +10:30
Aden Lindsay 28bf070ce2 feat(news): Added ability to search and filter news articles 2025-02-02 10:06:38 +10:30
Aden Lindsay 866c4d354e feat(news): Created ability to create news articles 2025-02-02 10:05:55 +10:30
Aden Lindsay e7837af0e7 feat(news): added ability to delete news articles 2025-02-02 10:05:13 +10:30
DecDuck 97b9b6dc11 Merge pull request #20 from AdenMGB/develop
Fresh animations & scaled Games Grid view properly
2025-01-30 19:30:21 +11:00
Aden Lindsay 09fd01d9b5 style(store): Added reactive hover state for admin dashboard button 2025-01-28 19:25:00 +10:30
Aden Lindsay 8fbe02a1b7 style(store): hover state for coursel button 2025-01-28 19:24:30 +10:30
Aden Lindsay dce116b66f style(collections): Hover state & scaling games grid properly 2025-01-28 19:23:24 +10:30
Aden Lindsay d167780562 fix(library): Fixed game banner as background, & added hover state 2025-01-28 19:22:29 +10:30
Aden Lindsay 6e057afb6d style(collections): Added hover state & animation for addition icon 2025-01-28 19:20:33 +10:30
Aden Lindsay 1967de72c8 style(GamePanel): New hover state styles 2025-01-28 19:17:12 +10:30
Aden Lindsay bfcc7519bf style(AddLibraryButton): New hover state animations 2025-01-28 19:15:49 +10:30
DecDuck 1a2aca9999 fix: collection overview trash icon 2025-01-28 17:23:06 +11:00
DecDuck 282e5bc2a6 fix: store page styling 2025-01-28 17:21:05 +11:00
DecDuck f369462e7f fix: cascade delete for collection entries 2025-01-28 17:06:30 +11:00
DecDuck 6317ad2657 fix: collection creation & overview hover styles 2025-01-28 17:01:34 +11:00
DecDuck 42ebbf2922 feat: collection deleting 2025-01-28 16:50:57 +11:00
DecDuck 7c1dec9401 fix: store style & library game page 2025-01-28 16:39:13 +11:00
DecDuck ecd26a42a8 feat: mobile ui and other design 2025-01-28 16:24:08 +11:00
DecDuck cf0aa948fe feat: refactor & redesign parts of UI 2025-01-28 16:24:08 +11:00
DecDuck 934c176974 refactor(create collection modal): use ModalTemplate & v-model 2025-01-28 16:24:08 +11:00
Aden Lindsay eea8f82bf9 squash: AdenMGB collection design & backend work
Update index.post.ts to implement saving collections functionality

Update index.get.ts to verify if collection exists and if user can access it

Update index.delete.ts to ask questions and not be so nonchalant

Update entry.post.ts

Update entry.delete.ts to do it better

Update index.vue to add functionality to the add to library button + fidgit with image

Update index.vue to also add add to library functionality, but no fidget :(

Update entry.post.ts to infact not remove it

Update index.ts

Update index.vue to manage collections from store page

Update index.ts to restrut for ahhhh

Update index.vue too add collection control to carosel

Update index.vue fix minor issue

Update index.vue to fix dropdown modal bug

Create library.vue for page layout

Create index.vue for library game details pane

Create index.vue for viewing collections pane

Create DeleteCollectionModal.vue component

Create CreateCollectionModal.vue component

Update AddLibraryButton.vue with dropdown :D

Update index.vue to use new components

Update index.vue for more components :O

Update entry.post.ts to not not return success, it'll figure it out

Update entry.delete.ts to not return...
2025-01-28 16:24:02 +11:00
Aden Lindsay 892f64fe3a Create signout.vue to sign out :shocked: 2025-01-28 16:19:41 +11:00
DecDuck 6bc3173d3a Merge branch 'backslash-fix' into develop 2025-01-28 15:20:30 +11:00
DecDuck 93a58c0d04 fix: import ui setup autocomplete 2025-01-28 15:20:06 +11:00
quexeky 3298b5f3ee Edit .gitlab-ci.yml 2025-01-26 12:21:38 +00:00
quexeky 6d03266ade Edit .gitlab-ci.yml 2025-01-26 12:17:19 +00:00
quexeky 1b3cf498f4 Edit .gitlab-ci.yml 2025-01-26 12:14:22 +00:00
quexeky 0bfe9803ac Edit .gitlab-ci.yml 2025-01-26 12:13:21 +00:00
quexeky 617278281e Edit .gitlab-ci.yml 2025-01-26 12:12:54 +00:00
quexeky 994db6c26a Edit .gitlab-ci.yml 2025-01-26 12:11:34 +00:00
quexeky 9f456cec9d chore: Update changelog.md 2025-01-25 22:49:06 +11:00
quexeky a95be39c17 Merge pull request #18 from Drop-OSS/develop
Merge develop into main
2025-01-25 19:27:22 +11:00
DecDuck 36776cc61e fix(prisma): update prisma schemas 2025-01-19 16:46:43 +11:00
DecDuck a309651fe4 feat(collections): backend 2025-01-19 16:29:29 +11:00
DecDuck 716eac79bf cicd: custom dind 2025-01-14 20:43:50 +11:00
DecDuck f3ed0f6430 feat(tasks): improved ux 2025-01-14 20:43:22 +11:00
quexeky c6bb21d9ee fix: Update README.md with discord link 2025-01-08 22:43:30 +00:00
DecDuck c7eb11a836 fix(invitations): fix always being created as admin 2025-01-05 22:21:55 +11:00
DecDuck 39d7ce7d1b feat(import): overhauled version importing 2024-12-31 00:04:50 +11:00
DecDuck 02d6346b01 fix(utils): fix recursive dirs util 2024-12-31 00:04:14 +11:00
DecDuck a8f21068fc fix(tasks): fix disconnect code 2024-12-31 00:03:56 +11:00
DecDuck 2cfe75a551 feat(metadata): change name, description and icon 2024-12-30 14:17:27 +11:00
DecDuck 5a1f8411de feat(game panel): adjust gradient 2024-12-29 19:20:17 +11:00
DecDuck a86045c307 feat(carousel ui): add aden's carousel pagination design 2024-12-29 19:08:18 +11:00
DecDuck db103de24d fix(ci/cd): recurse submodules 2024-12-27 20:31:06 +11:00
DecDuck e505e58192 feat(admin ui): add modifying game descriptions 2024-12-27 19:52:59 +11:00
DecDuck b75ebd13b7 fix(drop-base): add drop-base as git submodule 2024-12-27 16:36:37 +11:00
DecDuck 937954fa02 feat(admin ui): customisable image carousel and new layout 2024-12-27 14:43:40 +11:00
DecDuck 43e32b44a2 fix(mail regex): removed global flag 2024-12-27 13:14:29 +11:00
DecDuck 61d88c3091 fix(callback ui): fix width of token breaking things 2024-12-27 13:07:29 +11:00
DecDuck 12e312593e feat(client ui): manual handshake 2024-12-27 13:07:29 +11:00
DecDuck 4f9b94921a feat(ui): add noWrapper option 2024-12-27 13:07:29 +11:00
quexeky 0a5a649cfe fix(account creation): Fix username length requirement
Signed-off-by: quexeky <git@quexeky.dev>
2024-12-27 08:17:03 +11:00
DecDuck 2f52a16d52 feat(metadata): 'manual' metadata provider 2024-12-26 19:54:49 +11:00
DecDuck 38fc6b81df feat(loading button): add disabled state 2024-12-26 19:38:48 +11:00
DecDuck 28baabc122 feat(store ui): 'no images' slide on image carousel 2024-12-26 19:37:44 +11:00
DecDuck 9b12d4576c feat(object transactions): support more types 2024-12-26 19:37:21 +11:00
DecDuck e5cf13fd93 feat(admin ui): mobile nav 2024-12-26 19:36:40 +11:00
DecDuck dbb315a8d7 fix(deploy template): fix FATAL: "root"... message 2024-12-26 12:34:10 +11:00
DecDuck 2c19e13c09 feat(admin ui): improve feedback when metadata fails 2024-12-25 23:36:39 +11:00
DecDuck fe9373af78 feat(version auto detection): add .sh for linux 2024-12-25 23:19:36 +11:00
quexeky eadcaa1b05 chore(changelog): Update changelog
Signed-off-by: quexeky <git@quexeky.dev>
2024-12-25 11:39:25 +11:00
quexeky 5f29c28e04 docs(version): Version bump
Signed-off-by: quexeky <git@quexeky.dev>
2024-12-25 11:19:31 +11:00
quexeky db916bf970 Update README.md 2024-12-24 23:24:13 +00:00
quexeky 2309407ca6 Update CONTRIBUTING.md 2024-12-24 21:34:05 +00:00
DecDuck 5c78b20504 fix(client event handler): future lenience 2024-12-24 17:46:56 +11:00
DecDuck cada630e81 fix: moved icons and created PlatformClient so we can use the enum on the frontend 2024-12-24 11:43:36 +11:00
DecDuck a361c38e82 fix(icons): remove unnecessary import 2024-12-24 10:56:30 +11:00
DecDuck 0f10626b1b fix(icons): remove dynamic imports 2024-12-24 10:49:04 +11:00
DecDuck 8945196633 fix(icons): properly import icons 2024-12-24 10:39:13 +11:00
DecDuck 31e8359ec0 chore(replace md-it): replaced markdown-it with micromark 2024-12-24 10:08:27 +11:00
DecDuck 089c3e03f6 feat(delete games): update prisma & delete games 2024-12-23 21:12:32 +11:00
DecDuck fd4a7d1981 feat(umu id override): add support for overriding UMU id 2024-12-23 13:33:22 +11:00
DecDuck b50e27f4b0 feat(library admin): client side search 2024-12-17 20:42:12 +11:00
DecDuck 54c5d55da7 fix(client chunk api route): follow best practices 2024-12-09 17:04:51 +11:00
DecDuck 25fc957092 fix(giantbomb): fix for missing developers or publishers 2024-12-08 16:07:42 +11:00
DecDuck 5393db3236 feat(download): add version metadata route 2024-12-07 11:00:56 +11:00
DecDuck 6df560ca37 fix(manifests): fix delta manifest generation 2024-12-06 22:16:42 +11:00
DecDuck 789d3ba2f2 refactor(windows logo): moved windows logo into logos dir 2024-12-06 21:25:21 +11:00
DecDuck c4391d3f4d style(invitation ui): non rounded bottom 2024-12-06 19:43:15 +11:00
DecDuck 1f4d07568f feat(client): fetch game endpoint 2024-11-26 20:11:25 +11:00
DecDuck e408ac5df8 feat(ui): more ui improvements 2024-11-24 16:12:19 +11:00
DecDuck 305de9f45a refactor: more consistent naming for globals 2024-11-24 15:29:14 +11:00
DecDuck ecc819eebc feat(ui): game carousel 2024-11-24 09:47:32 +11:00
DecDuck 9cbdcbcdf6 feat(store): new endpoints, ui and beginnings of main store page 2024-11-23 21:29:24 +11:00
DecDuck 9c2249ed08 fix(style): game panel now always shows 3 lines exactly 2024-11-23 09:12:57 +11:00
DecDuck 7b3b919581 feat(store page): add button to open in admin panel 2024-11-23 09:03:56 +11:00
DecDuck ef8f3ae6fd fix(library): only show versions that are directories 2024-11-23 08:49:38 +11:00
DecDuck 7a88f4c52d style: updated text colours across app 2024-11-19 11:11:59 +11:00
DecDuck 6e6f09dba0 feat(notifications): added notification system w/ interwoven refactoring 2024-11-16 19:41:19 +11:00
DecDuck 62ea9a116b fix(ws): fixed websocket authentication 2024-11-16 18:28:38 +11:00
DecDuck f7d767d73e feat(sessions): cleanup and raw accessors 2024-11-16 18:23:44 +11:00
DecDuck 26a31f6d56 feat(session): under the hood organisation and consolidation 2024-11-16 18:20:14 +11:00
DecDuck 5358f1f52c fix: properly disconnect websockets from task handler 2024-11-16 17:27:27 +11:00
DecDuck bc0c47c487 feat: new ws handler 2024-11-16 17:03:52 +11:00
DecDuck 8463e35a10 fix: admin invitation w/ system user 2024-11-16 17:03:04 +11:00
DecDuck 2859005ad4 fix: split prisma schemas 2024-11-16 16:30:22 +11:00
DecDuck 44c60280ef refactor: rename admin socket session map 2024-11-16 16:27:38 +11:00
DecDuck 9011cf5c83 refactor: split prisma schemas 2024-11-16 16:24:23 +11:00
DecDuck 2c21a235b2 feat: introduction of 'system user' 2024-11-16 16:18:15 +11:00
DecDuck 87230fb0e7 refactor: more consistent naming for object handler 2024-11-16 16:11:20 +11:00
DecDuck 4488ae269b feat(ui): smoother bar in admin task ui 2024-11-16 16:08:41 +11:00
DecDuck bfafe02d48 feat(ui): user widget now redirects to actual page 2024-11-16 16:08:23 +11:00
DecDuck d7160abc47 feat(registration): require lowercase usernames 2024-11-16 16:08:02 +11:00
DecDuck 76bceb121f feat: content length header for chunk downloads 2024-11-10 22:14:01 +11:00
DecDuck 952ece8c83 fix(client reg): prisma create footprint 2024-11-09 17:25:35 +11:00
DecDuck 33d37700e1 fix(admin library): results are returned alphabetically 2024-11-08 21:31:22 +11:00
DecDuck a815542604 feat(game page): more subtle design improvements 2024-11-08 21:23:31 +11:00
DecDuck e796b465d1 feat(game page): slightly improved game page 2024-11-08 20:59:17 +11:00
DecDuck b511b40d7c fix(invitations): fix types 2024-11-08 20:44:38 +11:00
DecDuck 599da0e348 feat(invitations): completed admin UI, with minor changes to backend 2024-11-07 23:23:49 +11:00
DecDuck c7b675f841 fix(invitations): fix expires requirement in the admin endpoint 2024-11-07 20:07:53 +11:00
DecDuck be6c30dfee chore(invitations): add expires field 2024-11-07 19:07:05 +11:00
DecDuck 7d72a86876 feat(client cap): client capability framework + peer API configuration 2024-11-06 12:25:00 +11:00
DecDuck adb4b7381e chore(utils): consolidate type utils 2024-11-06 11:49:08 +11:00
DecDuck f2e018277b feat(type utils): add enum dictionary type 2024-11-06 11:38:49 +11:00
DecDuck 9c4b6f35bb feat(ca): generate a server certificate for mtls APIs 2024-11-06 11:38:32 +11:00
DecDuck b9ae26cb27 chore: remove client API deadweight 2024-11-06 09:55:38 +11:00
DecDuck ce0a9ab538 chore: update prisma version 2024-11-06 09:29:28 +11:00
DecDuck 8999303f0a refactor(ca): change name of store file 2024-11-06 09:20:02 +11:00
DecDuck 69e4c2592b feat(client api): keep track of last connected 2024-11-06 09:17:03 +11:00
DecDuck 1d5e1bda85 chore(app settings): remove log statements 2024-11-05 19:03:47 +11:00
DecDuck 39fe9d55fd feat(library manager): automatically create library folder if it doesn't exist 2024-11-05 19:03:14 +11:00
DecDuck a8a152e578 feat(library ui): add header 2024-11-05 19:01:22 +11:00
DecDuck 74fa671b69 refactor(icons): move icons into dedicated folder 2024-11-05 18:39:49 +11:00
DecDuck 7b0756c6bd feat(registration): add title to tab 2024-11-05 13:18:50 +11:00
quexeky 17971e0a5a docs: Updated README.md
Removed non-existent Volunteer section in the TOC

Signed-off-by: quexeky <git@quexeky.dev>
2024-11-05 12:39:09 +11:00
quexeky d3d93b03de docs: Added SECURITY.md
Signed-off-by: quexeky <git@quexeky.dev>
2024-11-05 12:39:09 +11:00
DecDuck 22366221b2 docs(readme): update information and setup guide 2024-11-05 12:22:49 +11:00
quexeky b0ef675e7e docs: Updated README.md
Removed some existing incorrect statements that had not been adapted fully. Still need to continue updating the contributing guide

Signed-off-by: quexeky <git@quexeky.dev>
2024-11-05 12:09:15 +11:00
quexeky cd0d2bfdea docs: updated CONTRIBUTING.md
Signed-off-by: quexeky <git@quexeky.dev>
2024-11-05 12:04:46 +11:00
DecDuck 4273a20180 build only ci 2024-11-05 11:09:16 +11:00
DecDuck c4a419f2e4 update deploy template 2024-11-05 11:02:35 +11:00
DecDuck 3a51c9cc9c migrate bcrypt to bcryptjs 2024-11-05 10:56:34 +11:00
DecDuck c3914cc1ed remove bcrypt (debug) 2024-11-05 10:49:48 +11:00
DecDuck 69f341b329 Delete .gitlab-ci.yml 2024-11-04 22:29:47 +00:00
quexeky b03d790247 Added "Work in Progress" to CONTRIBUTING.md
Signed-off-by: quexeky <git@quexeky.dev>
2024-11-05 09:29:09 +11:00
quexeky df41dd1c6f Relative link from README.md to CONTRIBUTING.md
Signed-off-by: quexeky <git@quexeky.dev>
2024-11-05 09:27:19 +11:00
DecDuck ad25d3e462 fix registry authentication 2024-11-05 09:26:21 +11:00
quexeky 8097dd6721 Update styling
Signed-off-by: quexeky <git@quexeky.dev>
2024-11-05 09:25:45 +11:00
DecDuck 803752e745 move to raw docker 2024-11-05 09:23:44 +11:00
DecDuck 6328c24537 copy autodevops configuration 2024-11-05 09:19:59 +11:00
quexeky f40f8c87f4 Updated image
Signed-off-by: quexeky <git@quexeky.dev>
2024-11-05 09:16:19 +11:00
DecDuck 886beb62ea use autodevops build stage 2024-11-05 09:14:48 +11:00
DecDuck 0f80fcd830 disable tls in build 2024-11-05 09:11:30 +11:00
DecDuck 52315d09da use configuration from docs for ci/cd 2024-11-05 09:09:10 +11:00
DecDuck 62a111b0fc fixed docker daemon location 2024-11-05 09:07:26 +11:00
DecDuck 7194d35cf5 use gitlab ci variable declaration 2024-11-05 09:03:35 +11:00
DecDuck 03b0b0c38b manual ci/cd 2024-11-05 09:01:27 +11:00
DecDuck b744671e57 move to yarn v2 2024-11-04 22:55:29 +11:00
DecDuck a8f58eba7c remove canvas from dependencies 2024-11-04 22:38:05 +11:00
DecDuck 46d35adfdb back to yarn, with nuxt telemetry force disabled
I think Nuxt prompts have been messing with the installs
2024-11-04 22:15:36 +11:00
quexeky eb66c5c07a Resizing fix to icon?
Signed-off-by: quexeky <git@quexeky.dev>
2024-11-04 22:00:39 +11:00
quexeky 13bfad4966 Forgot to remove a piece
Signed-off-by: quexeky <git@quexeky.dev>
2024-11-04 21:59:39 +11:00
quexeky e47944a3b0 Some updates to README.md and CONTRIBUTING.md
Signed-off-by: quexeky <git@quexeky.dev>
2024-11-04 21:59:12 +11:00
DecDuck 9cb2d6d02f migrate to pnpm due to ci/cd issues with yarn 2024-11-04 21:52:31 +11:00
DecDuck 36568c3845 verbose yarn install 2024-11-04 21:31:32 +11:00
DecDuck a208fbedbd run yarn install in CI/CD non interactively 2024-11-04 21:21:32 +11:00
DecDuck 584bcf1cdf removed yarn.lock 2024-11-04 21:15:49 +11:00
DecDuck c5d00b4766 docker based deployment 2024-11-04 20:50:35 +11:00
DecDuck 5fe2036f0b immutable application settings framework 2024-11-02 11:32:36 +11:00
DecDuck 583301ff40 slight fixes to register logic 2024-10-31 20:28:29 +11:00
quexeky 88c95d6bf7 Updated tailwind config 2024-10-30 09:17:20 +11:00
DecDuck 848a611751 server side and user client side completed for registration 2024-10-28 22:16:29 +11:00
DecDuck 2e44ef3501 user mobile header 2024-10-27 15:52:30 +11:00
DecDuck ecb381e1ca break into single column store on lg devices 2024-10-27 15:30:26 +11:00
DecDuck b2ab827a55 add proper carousel to store page
uses the VueCarousel library to add an actual carousel to the store page
for the images. uses responsive styles
2024-10-27 15:21:31 +11:00
DecDuck 46551f9330 bump droplet and add vue carousel 2024-10-27 15:07:39 +11:00
DecDuck e4339c34ec Update file chunk.get.ts 2024-10-26 05:46:28 +00:00
DecDuck 7d2a1c6952 starting docs infra 2024-10-25 13:15:46 +11:00
DecDuck 24a0d118f2 slight bug fixes and clean up 2024-10-24 22:12:01 +11:00
DecDuck ef13b68592 better server side signin redirects
this makes it so if a user requests a page (not API route) and isn't
signed in, it automatically redirects them to the sign in page (doesn't
show a flash of the error page)
2024-10-23 12:55:38 +11:00
DecDuck c4a3e4e9a7 failed gracefully on invalid chunk index 2024-10-23 12:36:09 +11:00
DecDuck 7f4db0c1dc slight patch to rename query to be more consistent 2024-10-23 12:13:30 +11:00
DecDuck 3dd6062af4 added download chunk endpoint 2024-10-23 12:03:31 +11:00
DecDuck 6e2dc89670 Add LICENSE 2024-10-22 22:40:13 +00:00
DecDuck 93bc143dac additional polish and QoL features 2024-10-22 09:43:00 +11:00
DecDuck 03a37f72aa fixed manifest generation 2024-10-21 21:50:55 +11:00
DecDuck 7e176262cc more cleaning 2024-10-21 21:50:27 +11:00
DecDuck e1c1d7ea39 fixed task system 2024-10-21 21:50:21 +11:00
DecDuck c355f6fdbb cleanup & polish 2024-10-21 21:49:51 +11:00
DecDuck 0a715fef08 ability to fetch client certs for p2p 2024-10-21 10:14:13 +11:00
DecDuck 395219d0cb patch for no version check in manifest generation 2024-10-20 20:38:28 +11:00
DecDuck eb3f9f91ca check for no version in manifest generation 2024-10-20 20:31:07 +11:00
DecDuck cf578bd005 patch metadata handler 2024-10-20 19:44:00 +11:00
DecDuck 1f575b2bc0 small fixes & SSR disabled
SSR was causing weird issues where error pages would flash because the
user wasn't logged in. I'm disabling it for now, but I will eventually
look into ways to fix the issue and re-enable it.
2024-10-17 21:04:32 +11:00
DecDuck 91b7e1071c more client routes to support Drop app update 2024-10-15 20:05:38 +11:00
DecDuck 329c74d3ce game version re-ordering 2024-10-14 20:34:23 +11:00
DecDuck 8674ac7211 beginnings of download implementation 2024-10-12 17:34:09 +11:00
DecDuck 328b9ba46c fixes to store page for mobile clients 2024-10-12 17:33:31 +11:00
DecDuck 9b7ee4e746 upload images to games 2024-10-12 12:09:14 +11:00
DecDuck 27070b6a4c almst complete admin ui and initial store designs 2024-10-11 22:45:02 +11:00
DecDuck 46c8f0c48a version importing 2024-10-11 17:16:26 +11:00
DecDuck a7c33e7d43 completed game importing; partial work on version importing 2024-10-11 00:37:08 +11:00
DecDuck 718f5ba514 task API
The Task API allows for an easy way to create long-lived tasks that
require reporting back to user with progress/logs. It will be used in
the upcoming game importing.
2024-10-10 16:13:10 +11:00
DecDuck f3672f81dd patch signin 2024-10-10 13:39:43 +11:00
DecDuck 6b5e48d6fe admin ui shell 2024-10-09 15:43:55 +11:00
DecDuck 486bce8bc7 finished object endpoints
Added writing (tested) and deleting (untested) endpoints
2024-10-09 15:08:55 +11:00
DecDuck 435551c207 object storage + full permission system + testing
Object storage now works fully, with the permission system. It still
needs additional external endpoints for updating and deleting objects
from the API, but it is otherwise complete. Further tasks include
writing an S3 adapter.
2024-10-09 14:43:06 +11:00
DecDuck de388a937a object storage interface + utility functions
New ObjectBackend class that requires implementors to specify a few
basic functions, and it handles the permission logic on top of that.
Hopefully there is enough abstraction to suite further use cases!
2024-10-09 13:47:28 +11:00
DecDuck 4fa771a0b5 update dependencies and add note about optional dependencies 2024-10-09 02:35:59 +11:00
DecDuck 6ba5cdddc5 bump @drop/droplet version for windows developers 2024-10-09 02:26:21 +11:00
DecDuck d4e2dc8cb6 finalised client APIs and authentication method 2024-10-09 00:37:11 +11:00
DecDuck 425934d3ef Update README.md 2024-10-09 00:20:07 +11:00
DecDuck c4d81135a2 migrate to new droplet ca system 2024-10-08 21:45:44 +11:00
DecDuck 2b4382d013 handshakes 2024-10-08 18:08:34 +11:00
DecDuck 7523e536b5 another stage of client authentication 2024-10-08 16:13:46 +11:00
DecDuck 909432a6ce client initiate 2024-10-08 13:17:30 +11:00
DecDuck ceacd8469d README update 2024-10-08 00:56:15 +11:00
DecDuck 7869043c28 refactoring 2024-10-08 00:41:05 +11:00
DecDuck bfafd2a044 ca groundwork 2024-10-07 22:35:54 +11:00
DecDuck 1bd19ad917 more ui 2024-10-04 15:35:03 +10:00
DecDuck e52f072091 ui groundwork 2024-10-04 14:43:02 +10:00
DecDuck 22ac7f6b15 metadata engine 2024-10-04 13:01:06 +10:00
DecDuck 196f87c219 initial work on metadata system 2024-09-29 11:08:49 +10:00
DecDuck e1a789fa36 initial commit 2024-09-28 19:12:11 +10:00
1238 changed files with 4840 additions and 80282 deletions
+42 -5
View File
@@ -1,6 +1,43 @@
/sites
/cli
/desktop
/backend # go backend
Dockerfile
.github
.vscode
*.md
node_modules
#### gitignore below
# Nuxt dev/build outputs
.output
.data
.nuxt
.nitro
.cache
dist
# Node dependencies
node_modules
.yarn
# Logs
logs
*.log
# Misc
.DS_Store
.fleet
.idea
# Local env files
.env
.env.*
!.env.example
.data
# deploy template
deploy-template/*
!deploy-template/compose.yml
# generated prisma client
/prisma/client
/prisma/validate
@@ -1,24 +1,12 @@
name: Server CI
name: CI
on:
push:
branches: [develop]
paths:
- "server/**"
- "libraries/base/**"
- "package.json"
- "pnpm-lock.yaml"
- "pnpm-workspace.yaml"
- ".github/workflows/server-ci.yml"
branches:
- develop
pull_request:
branches: [develop]
paths:
- "server/**"
- "libraries/base/**"
- "package.json"
- "pnpm-lock.yaml"
- "pnpm-workspace.yaml"
- ".github/workflows/server-ci.yml"
branches:
- develop
permissions:
contents: read
@@ -30,6 +18,8 @@ jobs:
steps:
- name: Check out the repo
uses: actions/checkout@v4
with:
submodules: true
- name: Install pnpm
uses: pnpm/action-setup@v4
@@ -44,7 +34,6 @@ jobs:
run: pnpm install
- name: Typecheck
working-directory: server
run: pnpm run typecheck
lint:
@@ -53,6 +42,8 @@ jobs:
steps:
- name: Check out the repo
uses: actions/checkout@v4
with:
submodules: true
- name: Install pnpm
uses: pnpm/action-setup@v4
@@ -67,5 +58,4 @@ jobs:
run: pnpm install
- name: Lint
working-directory: server
run: pnpm run lint
-140
View File
@@ -1,140 +0,0 @@
name: "Build and release desktop"
on:
workflow_dispatch:
inputs:
tagName:
required: false
type: string
description: "tagName to be associated with this release."
release:
types: [published]
# This can be used to automatically publish nightlies at UTC nighttime
# schedule:
# - cron: "0 2 * * *" # run at 2 AM UTC
# This workflow will trigger on each push to the `release` branch to create or update a GitHub release, build your app, and upload the artifacts to the release.
jobs:
publish-tauri:
permissions:
contents: write
strategy:
fail-fast: false
matrix:
include:
- platform: "macos-14" # for Arm based macs (M1 and above).
args: "--target aarch64-apple-darwin"
- platform: "macos-14" # for Intel based macs.
args: "--target x86_64-apple-darwin"
- platform: "ubuntu-22.04" # for Tauri v1 you could replace this with ubuntu-20.04.
args: ""
- platform: "ubuntu-22.04-arm"
args: "--target aarch64-unknown-linux-gnu"
- platform: "windows-latest"
args: ""
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: setup pnpm
uses: pnpm/action-setup@v4
with:
run_install: false
- name: setup node
uses: actions/setup-node@v4
with:
node-version: lts/*
cache: pnpm
- name: install Rust nightly
uses: dtolnay/rust-toolchain@nightly
with:
# Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds.
targets: ${{ matrix.platform == 'macos-14' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
- name: Rust cache
uses: swatinem/rust-cache@v2
with:
workspaces: './desktop/src-tauri -> target'
- name: install dependencies (ubuntu only)
if: matrix.platform == 'ubuntu-22.04' || matrix.platform == 'ubuntu-22.04-arm' # This must match the platform value defined above.
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf xdg-utils
# webkitgtk 4.0 is for Tauri v1 - webkitgtk 4.1 is for Tauri v2.
- name: Import Apple Developer Certificate
if: matrix.platform == 'macos-14'
env:
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
run: |
echo $APPLE_CERTIFICATE | base64 --decode > certificate.p12
security create-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
security set-keychain-settings -t 3600 -u build.keychain
# Add build.keychain to the user keychain search list so that codesign
# (invoked later by tauri-action WITHOUT an explicit --keychain) can
# resolve the signing identity from it.
security list-keychains -d user -s build.keychain $(security list-keychains -d user | tr -d '"')
echo "Created keychain"
curl https://droposs.org/drop.der --output drop.der
# swiftc libs/appletrust/add-certificate.swift
# ./add-certificate drop.der
# rm add-certificate
# echo "Added certificate to keychain using swift util"
## Script is equivalent to:
sudo security authorizationdb write com.apple.trust-settings.admin allow
sudo security add-trusted-cert -d -r trustRoot -k build.keychain -p codeSign -u -1 drop.der
sudo security authorizationdb remove com.apple.trust-settings.admin
security import certificate.p12 -k build.keychain -P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign
echo "Imported certificate"
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$KEYCHAIN_PASSWORD" build.keychain
security find-identity -v -p codesigning build.keychain
- name: Verify Certificate
if: matrix.platform == 'macos-14'
run: |
CERT_INFO=$(security find-identity -v -p codesigning build.keychain | grep "Drop OSS")
CERT_ID=$(echo "$CERT_INFO" | awk -F'"' '{print $2}')
echo "CERT_ID=$CERT_ID" >> $GITHUB_ENV
echo "Certificate imported. Using identity: $CERT_ID"
- name: install frontend dependencies
run: pnpm install # change this to npm, pnpm or bun depending on which one you use.
- uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Do NOT set APPLE_CERTIFICATE / APPLE_CERTIFICATE_PASSWORD here. Doing so
# makes tauri-action import the cert into its own throwaway keychain and
# look up the identity by Apple-only name prefixes (e.g.
# "Developer ID Application:"), which never matches our "Drop OSS" cert
# and fails with "failed to resolve signing identity". Instead we rely on
# the build.keychain prepared above and only pass the resolved identity.
APPLE_SIGNING_IDENTITY: ${{ env.CERT_ID }}
NO_STRIP: true
with:
tagName: ${{ inputs.print_tags || 'v__VERSION__' }} # the action automatically replaces \_\_VERSION\_\_ with the app version.
releaseName: "Auto-release v__VERSION__"
releaseBody: "See the assets to download this version and install. This release was created automatically."
releaseDraft: false
prerelease: true
args: ${{ matrix.args }}
projectPath: './desktop'
-56
View File
@@ -1,56 +0,0 @@
name: Droplet CI
on:
push:
branches: [develop]
paths:
- "libraries/droplet/**"
- "libraries/droplet_types/**"
- "libraries/libarchive/**"
- ".github/workflows/droplet-ci.yml"
pull_request:
branches: [develop]
paths:
- "libraries/droplet/**"
- "libraries/droplet_types/**"
- "libraries/libarchive/**"
- ".github/workflows/droplet-ci.yml"
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
jobs:
ci:
name: Build, Test, Lint
runs-on: ubuntu-latest
defaults:
run:
working-directory: libraries/droplet
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt, clippy
- name: Rust cache
uses: swatinem/rust-cache@v2
with:
workspaces: "./libraries/droplet -> target"
- name: Install libarchive
run: |
sudo apt-get update
sudo apt-get install -y libarchive-dev
- name: Check formatting
run: cargo fmt --all -- --check
- name: Run Clippy (lint)
run: cargo clippy --all-targets --all-features -- -D warnings
- name: Run tests
run: cargo test --all-features --all --verbose
-100
View File
@@ -1,100 +0,0 @@
name: Deploy website to GitHub Pages
on:
# Runs on pushes targeting the default branch
push:
branches: [develop]
paths:
- "sites/promo/**"
- "sites/docs/**"
- "package.json"
- "pnpm-lock.yaml"
- "pnpm-workspace.yaml"
- ".github/workflows/pages.yml"
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment per the "pages" group, skipping runs queued
# between the in-progress run and the latest queued one. cancel-in-progress defaults
# to false, so in-flight production deployments are allowed to complete.
concurrency: "pages"
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
run_install: false
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: "22"
cache: "pnpm"
# Only install the promo site (radiant) and docs site (docs-next) and their
# dependencies so the public website deploy stays decoupled from the
# server/desktop build pipelines.
- name: Install dependencies
run: pnpm install --filter radiant... --filter docs-next...
- name: Setup Pages
id: setup_pages
uses: actions/configure-pages@v5
- name: Restore cache
uses: actions/cache@v4
with:
path: |
sites/promo/.next/cache
# Generate a new cache whenever packages or source files change.
key: ${{ runner.os }}-nextjs-${{ hashFiles('pnpm-lock.yaml') }}-${{ hashFiles('sites/promo/**.[jt]s', 'sites/promo/**.[jt]sx') }}
# If source files changed but packages didn't, rebuild from a prior cache.
restore-keys: |
${{ runner.os }}-nextjs-${{ hashFiles('pnpm-lock.yaml') }}-
- name: Build promo site with Next.js
working-directory: sites/promo
run: pnpm run build
env:
PAGES_BASE_PATH: ${{ steps.setup_pages.outputs.base_path }}
- name: Build docs site with Astro
working-directory: sites/docs
run: pnpm run build
# Nest the Starlight docs (built with base: "/docs") inside the promo export
# so both ship from a single GitHub Pages deployment at /docs.
- name: Assemble docs into /docs
run: |
rm -rf sites/promo/out/docs
mkdir -p sites/promo/out/docs
cp -r sites/docs/dist/. sites/promo/out/docs/
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: sites/promo/out
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
@@ -1,4 +1,4 @@
name: Build and release server
name: Release Workflow
on:
workflow_dispatch: {}
@@ -29,6 +29,7 @@ jobs:
- name: Check out the repo
uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 3 # fix for when this gets triggered by tag
fetch-tags: true
ref: ${{ github.ref }}
+39 -2
View File
@@ -1,2 +1,39 @@
dist/
node_modules/
# Nuxt dev/build outputs
.output
.data
.nuxt
.nitro
.cache
dist
# Node dependencies
node_modules
.yarn
# Logs
logs
*.log
# Misc
.DS_Store
.fleet
.idea
# Local env files
.env
.env.*
!.env.example
.data
# deploy template
deploy-template/*
!deploy-template/compose.yml
# generated prisma client
/prisma/client
/prisma/validate
/server/internal/proto
+6
View File
@@ -0,0 +1,6 @@
[submodule "drop-base"]
path = drop-base
url = https://github.com/Drop-OSS/drop-base.git
[submodule "torrential"]
path = torrential
url = https://github.com/Drop-OSS/torrential.git
+19 -49
View File
@@ -1,15 +1,13 @@
# syntax=docker/dockerfile:1
# Pinned to bookworm so the glibc here matches the torrential build stage
# and the libarchive runtime package is named `libarchive13` (trixie renames it to libarchive13t64).
FROM node:lts-bookworm-slim AS base
FROM node:lts-alpine AS base
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable
WORKDIR /app
## so corepack knows pnpm's version
COPY . .
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
## prevent prompt to download
ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0
## setup for offline
@@ -22,18 +20,12 @@ FROM base AS deps
RUN pnpm install --frozen-lockfile --ignore-scripts
### BUILD TORRENTIAL
# Bookworm-pinned to match the runtime image's glibc (a trixie build would not run on bookworm).
FROM rustlang/rust:nightly-bookworm-slim AS torrential-build
## libarchive-dev + pkg-config let libarchive3-sys link libarchive dynamically (glibc).
## protobuf-compiler is kept for parity (torrential's build.rs uses a vendored protoc).
RUN apt-get update && apt-get install -y --no-install-recommends \
pkg-config \
libarchive-dev \
protobuf-compiler \
&& rm -rf /var/lib/apt/lists/*
FROM rustlang/rust:nightly-alpine AS torrential-build
RUN apk add musl-dev
WORKDIR /build
COPY . .
RUN cargo build --release --manifest-path ./torrential/Cargo.toml
COPY torrential .
RUN apk add protoc
RUN cargo build --release
### BUILD APP
FROM base AS build-system
@@ -42,19 +34,17 @@ ENV NODE_ENV=production
ENV NUXT_TELEMETRY_DISABLED=1
## add git so drop can determine its git ref at build
RUN apt-get update && apt-get install -y --no-install-recommends git \
&& rm -rf /var/lib/apt/lists/*
RUN apk add --no-cache git
## copy deps and rest of project files
COPY . .
COPY --from=deps /app/node_modules ./node_modules
COPY . .
ARG BUILD_DROP_VERSION
ARG BUILD_GIT_REF
## build
RUN pnpm run --filter=drop postinstall && pnpm run --filter=drop build
RUN pnpm run postinstall && pnpm run build
# create run environment for Drop
@@ -63,43 +53,23 @@ FROM base AS run-system
ENV NODE_ENV=production
ENV NUXT_TELEMETRY_DISABLED=1
# The base stage's `COPY . .` puts the whole repo into the runtime WORKDIR (/app),
# but at runtime only the artifacts copied explicitly below are needed. Drop the
# inherited `torrential` source dir: the service resolves the binary by scanning
# the cwd for `torrential`, and a directory there is spawned as ./torrential and
# fails with EACCES. With it gone, resolution falls through to the `torrential`
# binary installed on PATH (/usr/bin/torrential) below.
RUN rm -rf /app/torrential
# RUN --mount=type=cache,target=/root/.yarn YARN_CACHE_FOLDER=/root/.yarn yarn add --network-timeout 1000000 --no-lockfile --ignore-scripts prisma@6.11.1
## runtime deps:
## - libarchive13: torrential now links libarchive dynamically (glibc build)
## - p7zip-full: provides the 7z CLI
## - nginx: front-end proxy
## - openssl + ca-certificates: required by Prisma's query engine on Debian
## pnpm itself is provided by corepack (enabled in the base stage)
RUN apt-get update && apt-get install -y --no-install-recommends \
libarchive13 \
p7zip-full \
nginx \
openssl \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
RUN pnpm install prisma@7.7.0 --global
RUN apk add --no-cache pnpm 7zip nginx
RUN pnpm install prisma@7.3.0
# init prisma to download all required files
RUN pnpm prisma init
COPY --from=build-system /app/server/prisma.config.ts ./
COPY --from=build-system /app/server/.output ./app
COPY --from=build-system /app/server/prisma ./prisma
COPY --from=build-system /app/server/build ./startup
COPY --from=build-system /app/server/build/nginx.conf /nginx.conf
COPY --from=torrential-build /build/torrential/target/release/torrential /usr/bin/
COPY --from=build-system /app/prisma.config.ts ./
COPY --from=build-system /app/.output ./app
COPY --from=build-system /app/prisma ./prisma
COPY --from=build-system /app/build ./startup
COPY --from=build-system /app/build/nginx.conf /nginx.conf
COPY --from=torrential-build /build/target/release/torrential /usr/bin/
ENV LIBRARY="/library"
ENV DATA="/data"
ENV NGINX_CONFIG="/nginx.conf"
# Nuxt's port
# NGINX's port
ENV PORT=4000
CMD ["sh", "/app/startup/launch.sh"]
View File
+2 -2
View File
@@ -6,7 +6,7 @@
# Drop
[![Website](https://img.shields.io/badge/website-000000?style=for-the-badge&logo=About.me&logoColor=white)](https://droposs.org)
[![Docs](https://img.shields.io/badge/DOCS-black?style=for-the-badge&logo=docusaurus)](https://droposs.org/docs)
[![Docs](https://img.shields.io/badge/DOCS-black?style=for-the-badge&logo=docusaurus)](https://docs.droposs.org/)
[![Static Badge](https://img.shields.io/badge/FORUM-blue?style=for-the-badge)](https://forum.droposs.org)
[![GitHub License](https://img.shields.io/badge/AGPL--3.0-red?style=for-the-badge)](LICENSE)
[![Discord](https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/ACq4qZp4a9)
@@ -28,7 +28,7 @@ Drop is an open-source game distribution platform, similar to GameVault or Steam
## Deployment
See our documentation on how to [deploy Drop](https://droposs.org/docs/admin/quickstart) for more information.
See our documentation on how to [deploy Drop](https://docs.droposs.org/docs/guides/quickstart) for more information.
## Contributing
+1 -1
View File
@@ -2,4 +2,4 @@
To report a vulnerability, please DO NOT create an issue for it
as this may lead to the vulnerability being exploited before it
can be fixed. Instead, please email [security@droposs.org](mailto:security@droposs.org)
can be fixed. Instead, please email [security@deepcore.dev](mailto:security@deepcore.dev)
View File
-1
View File
@@ -1 +0,0 @@
/bin
-19
View File
@@ -1,19 +0,0 @@
package core
import (
"context"
"fmt"
"os"
"github.com/jackc/pgx/v5"
)
func connect() {
conn, err := pgx.Connect(context.Background(), os.Getenv("DATABASE_URL"))
if err != nil {
fmt.Fprintf(os.Stderr, "Unable to connect to database: %v\n", err)
os.Exit(1)
}
defer conn.Close(context.Background())
}
-10
View File
@@ -1,10 +0,0 @@
module drop/core
go 1.26.1
require (
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
github.com/jackc/pgx/v5 v5.9.1 // indirect
golang.org/x/text v0.29.0 // indirect
)
-15
View File
@@ -1,15 +0,0 @@
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
github.com/jackc/pgx/v5 v5.9.1 h1:uwrxJXBnx76nyISkhr33kQLlUqjv7et7b9FjCen/tdc=
github.com/jackc/pgx/v5 v5.9.1/go.mod h1:mal1tBGAFfLHvZzaYh77YS/eC6IX9OWbRV1QIIM0Jn4=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk=
golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-5
View File
@@ -1,5 +0,0 @@
module drop
go 1.26.1
require github.com/gorilla/mux v1.8.1
-2
View File
@@ -1,2 +0,0 @@
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
-3
View File
@@ -1,3 +0,0 @@
go 1.26.1
use ./core
-9
View File
@@ -1,9 +0,0 @@
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc=
golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-37
View File
@@ -1,37 +0,0 @@
package main
import (
"fmt"
"log"
"net/http"
"strings"
"github.com/gorilla/mux"
)
func handler(res http.ResponseWriter, req *http.Request) {
fmt.Fprintf(res, "G'day there mate")
}
func routingMiddleware(h http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
url := *r.URL
url.Path = strings.TrimSuffix(r.URL.Path, "/")
r.URL = &url
h.ServeHTTP(w, r)
})
}
func main() {
r := mux.NewRouter().StrictSlash(true)
r.Use(routingMiddleware)
r.HandleFunc("/api/v1", handler)
srv := &http.Server{
Addr: ":3433",
Handler: r,
}
log.Printf("starting drop server on :3433")
srv.ListenAndServe()
}
-3
View File
@@ -3,6 +3,3 @@ plugins:
- local: protoc-gen-es
out: server/internal/proto
opt: target=ts
inputs:
- directory: ../
@@ -21,8 +21,6 @@ http {
scgi_temp_path scgi_temp;
uwsgi_temp_path uwsgi_temp;
proxy_buffering off;
server {
listen 3000;
server_name localhost;
+544
View File
@@ -0,0 +1,544 @@
## Release 0.2.0-beta
### Fixes
- fix recursive dirs util #02d6346
- Fix username length requirement #0a5a649
- remove dynamic imports #0f10626
- fix for missing developers or publishers #25fc957
- split prisma schemas #2859005
- results are returned alphabetically #33d3770
- update prisma schemas #36776cc
- removed global flag #43e32b4
- properly disconnect websockets from task handler #5358f1f
- follow best practices #54c5d55
- future lenience #5c78b20
- fix width of token breaking things #61d88c3
- fixed websocket authentication #62ea9a1
- fix delta manifest generation #6df560c
- admin invitation w/ system user #8463e35
- properly import icons #8945196
- prisma create footprint #952ece8
- game panel now always shows 3 lines exactly #9c2249e
- remove unnecessary import #a361c38
- fix disconnect code #a8f2106
- fix types #b511b40
- add drop-base as git submodule #b75ebd1
- Update README.md with discord link #c6bb21d
- fix expires requirement in the admin endpoint #c7b675f
- fix always being created as admin #c7eb11a
- moved icons and created PlatformClient so we can use the enum on the frontend #cada630
- recurse submodules #db103de
- fix FATAL: "root"... message #dbb315a
- only show versions that are directories #ef8f3ae
### Features
- update prisma & delete games #089c3e0
- manual handshake #12e3125
- fetch game endpoint #1f4d075
- under the hood organisation and consolidation #26a31f6
- 'no images' slide on image carousel #28baabc
- improve feedback when metadata fails #2c19e13
- introduction of 'system user' #2c21a23
- change name, description and icon #2cfe75a
- 'manual' metadata provider #2f52a16
- add disabled state #38fc6b8
- overhauled version importing #39d7ce7
- automatically create library folder if it doesn't exist #39fe9d5
- smoother bar in admin task ui #4488ae2
- add noWrapper option #4f9b949
- add version metadata route #5393db3
- completed admin UI, with minor changes to backend #599da0e
- adjust gradient #5a1f841
- keep track of last connected #69e4c25
- added notification system w/ interwoven refactoring #6e6f09d
- content length header for chunk downloads #76bceb1
- add title to tab #7b0756c
- add button to open in admin panel #7b3b919
- client capability framework + peer API configuration #7d72a86
- customisable image carousel and new layout #937954f
- support more types #9b12d45
- generate a server certificate for mtls APIs #9c4b6f3
- new endpoints, ui and beginnings of main store page #9cbdcbc
- backend #a309651
- more subtle design improvements #a815542
- add aden's carousel pagination design #a86045c
- add header #a8a152e
- client side search #b50e27f
- new ws handler #bc0c47c
- user widget now redirects to actual page #bfafe02
- require lowercase usernames #d7160ab
- more ui improvements #e408ac5
- add modifying game descriptions #e505e58
- mobile nav #e5cf13f
- slightly improved game page #e796b46
- game carousel #ecc819e
- add enum dictionary type #f2e0182
- improved ux #f3ed0f6
- cleanup and raw accessors #f7d767d
- add support for overriding UMU id #fd4a7d1
- add .sh for linux #fe9373a
### Other Changes
- quexeky <git@quexeky.dev>
- fixed manifest generation #03a37f7
- manual ci/cd #03b0b0c
- ability to fetch client certs for p2p #0a715fe
- disable tls in build #0f80fcd
- Updated README.md #17971e0
- Merge pull request #18 from Drop-OSS/develop
- initial work on metadata system #196f87c
- more ui #1bd19ad
- remove log statements #1d5e1bd
- small fixes & SSR disabled #1f575b2
- update information and setup guide #2236622
- metadata engine #22ac7f6
- Update CONTRIBUTING.md #2309407
- slight bug fixes and clean up #24a0d11
- almst complete admin ui and initial store designs #27070b6
- handshakes #2b4382d
- user mobile header #2e44ef3
- more consistent naming for globals #305de9f
- replaced markdown-it with micromark #31e8359
- fixes to store page for mobile clients #328b9ba
- game version re-ordering #329c74d
- verbose yarn install #36568c3
- patch for no version check in manifest generation #395219d
- migrate bcrypt to bcryptjs #3a51c9c
- added download chunk endpoint #3dd6062
- Update README.md #425934d
- build only ci #4273a20
- object storage + full permission system + testing #435551c
- rename admin socket session map #44c6028
- bump droplet and add vue carousel #46551f9
- version importing #46c8f0c
- back to yarn, with nuxt telemetry force disabled #46d35ad
- finished object endpoints #486bce8
- update dependencies and add note about optional dependencies #4fa771a
- use configuration from docs for ci/cd #52315d0
- slight fixes to register logic #583301f
- removed yarn.lock #584bcf1
- Version bump #5f29c28
- immutable application settings framework #5fe2036
- fixed docker daemon location #62a111b
- copy autodevops configuration #6328c24
- Delete .gitlab-ci.yml #69f341b
- admin ui shell #6b5e48d
- bump @drop/droplet version for windows developers #6ba5cdd
- Add LICENSE #6e2dc89
- custom dind #716eac7
- task API #718f5ba
- use gitlab ci variable declaration #7194d35
- move icons into dedicated folder #74fa671
- another stage of client authentication #7523e53
- refactoring #7869043
- moved windows logo into logos dir #789d3ba
- updated text colours across app #7a88f4c
- starting docs infra #7d2a1c6
- more cleaning #7e17626
- slight patch to rename query to be more consistent #7f4db0c
- move to raw docker #803752e
- server side and user client side completed for registration #848a611
- beginnings of download implementation #8674ac7
- more consistent naming for object handler #87230fb
- use autodevops build stage #886beb6
- Updated tailwind config #88c95d6
- change name of store file #8999303
- split prisma schemas #9011cf5
- client initiate #909432a
- more client routes to support Drop app update #91b7e10
- additional polish and QoL features #93bc143
- upload images to games #9b7ee4e
- migrate to pnpm due to ci/cd issues with yarn #9cb2d6d
- run yarn install in CI/CD non interactively #a208fbe
- completed game importing; partial work on version importing #a7c33e7
- remove canvas from dependencies #a8f58eb
- fix registry authentication #ad25d3e
- consolidate type utils #adb4b73
- Updated README.md #b0ef675
- add proper carousel to store page #b2ab827
- move to yarn v2 #b744671
- remove client API deadweight #b9ae26c
- add expires field #be6c30d
- ca groundwork #bfafd2a
- cleanup & polish #c355f6f
- remove bcrypt (debug) #c3914cc
- non rounded bottom #c4391d3
- failed gracefully on invalid chunk index #c4a3e4e
- update deploy template #c4a419f
- migrate to new droplet ca system #c4d8113
- docker based deployment #c5d00b4
- updated CONTRIBUTING.md #cd0d2bf
- update prisma version #ce0a9ab
- README update #ceacd84
- patch metadata handler #cf578bd
- Added SECURITY.md #d3d93b0
- finalised client APIs and authentication method #d4e2dc8
- Update README.md #db916bf
- object storage interface + utility functions #de388a9
- initial commit #e1a789f
- fixed task system #e1c1d7e
- Update file chunk.get.ts #e4339c3
- ui groundwork #e52f072
- Update changelog #eadcaa1
- check for no version in manifest generation #eb3f9f9
- break into single column store on lg devices #ecb381e
- better server side signin redirects #ef13b68
- patch signin #f3672f8
_changelog generated by_ [go-conventional-commits](https://github.com/joselitofilho/go-conventional-commits)
## Release 0.2.0-beta
### Fixes
- fix recursive dirs util #02d6346
- Fix username length requirement #0a5a649
- remove dynamic imports #0f10626
- fix for missing developers or publishers #25fc957
- split prisma schemas #2859005
- results are returned alphabetically #33d3770
- update prisma schemas #36776cc
- removed global flag #43e32b4
- properly disconnect websockets from task handler #5358f1f
- follow best practices #54c5d55
- future lenience #5c78b20
- fix width of token breaking things #61d88c3
- fixed websocket authentication #62ea9a1
- fix delta manifest generation #6df560c
- admin invitation w/ system user #8463e35
- properly import icons #8945196
- prisma create footprint #952ece8
- game panel now always shows 3 lines exactly #9c2249e
- remove unnecessary import #a361c38
- fix disconnect code #a8f2106
- fix types #b511b40
- add drop-base as git submodule #b75ebd1
- Update README.md with discord link #c6bb21d
- fix expires requirement in the admin endpoint #c7b675f
- fix always being created as admin #c7eb11a
- moved icons and created PlatformClient so we can use the enum on the frontend #cada630
- recurse submodules #db103de
- fix FATAL: "root"... message #dbb315a
- only show versions that are directories #ef8f3ae
### Features
- update prisma & delete games #089c3e0
- manual handshake #12e3125
- fetch game endpoint #1f4d075
- under the hood organisation and consolidation #26a31f6
- 'no images' slide on image carousel #28baabc
- improve feedback when metadata fails #2c19e13
- introduction of 'system user' #2c21a23
- change name, description and icon #2cfe75a
- 'manual' metadata provider #2f52a16
- add disabled state #38fc6b8
- overhauled version importing #39d7ce7
- automatically create library folder if it doesn't exist #39fe9d5
- smoother bar in admin task ui #4488ae2
- add noWrapper option #4f9b949
- add version metadata route #5393db3
- completed admin UI, with minor changes to backend #599da0e
- adjust gradient #5a1f841
- keep track of last connected #69e4c25
- added notification system w/ interwoven refactoring #6e6f09d
- content length header for chunk downloads #76bceb1
- add title to tab #7b0756c
- add button to open in admin panel #7b3b919
- client capability framework + peer API configuration #7d72a86
- customisable image carousel and new layout #937954f
- support more types #9b12d45
- generate a server certificate for mtls APIs #9c4b6f3
- new endpoints, ui and beginnings of main store page #9cbdcbc
- backend #a309651
- more subtle design improvements #a815542
- add aden's carousel pagination design #a86045c
- add header #a8a152e
- client side search #b50e27f
- new ws handler #bc0c47c
- user widget now redirects to actual page #bfafe02
- require lowercase usernames #d7160ab
- more ui improvements #e408ac5
- add modifying game descriptions #e505e58
- mobile nav #e5cf13f
- slightly improved game page #e796b46
- game carousel #ecc819e
- add enum dictionary type #f2e0182
- improved ux #f3ed0f6
- cleanup and raw accessors #f7d767d
- add support for overriding UMU id #fd4a7d1
- add .sh for linux #fe9373a
### Other Changes
- quexeky <git@quexeky.dev>
- fixed manifest generation #03a37f7
- manual ci/cd #03b0b0c
- ability to fetch client certs for p2p #0a715fe
- disable tls in build #0f80fcd
- Updated README.md #17971e0
- Merge pull request #18 from Drop-OSS/develop
- initial work on metadata system #196f87c
- more ui #1bd19ad
- remove log statements #1d5e1bd
- small fixes & SSR disabled #1f575b2
- update information and setup guide #2236622
- metadata engine #22ac7f6
- Update CONTRIBUTING.md #2309407
- slight bug fixes and clean up #24a0d11
- almst complete admin ui and initial store designs #27070b6
- handshakes #2b4382d
- user mobile header #2e44ef3
- more consistent naming for globals #305de9f
- replaced markdown-it with micromark #31e8359
- fixes to store page for mobile clients #328b9ba
- game version re-ordering #329c74d
- verbose yarn install #36568c3
- patch for no version check in manifest generation #395219d
- migrate bcrypt to bcryptjs #3a51c9c
- added download chunk endpoint #3dd6062
- Update README.md #425934d
- build only ci #4273a20
- object storage + full permission system + testing #435551c
- rename admin socket session map #44c6028
- bump droplet and add vue carousel #46551f9
- version importing #46c8f0c
- back to yarn, with nuxt telemetry force disabled #46d35ad
- finished object endpoints #486bce8
- update dependencies and add note about optional dependencies #4fa771a
- use configuration from docs for ci/cd #52315d0
- slight fixes to register logic #583301f
- removed yarn.lock #584bcf1
- Version bump #5f29c28
- immutable application settings framework #5fe2036
- fixed docker daemon location #62a111b
- copy autodevops configuration #6328c24
- Delete .gitlab-ci.yml #69f341b
- admin ui shell #6b5e48d
- bump @drop/droplet version for windows developers #6ba5cdd
- Add LICENSE #6e2dc89
- custom dind #716eac7
- task API #718f5ba
- use gitlab ci variable declaration #7194d35
- move icons into dedicated folder #74fa671
- another stage of client authentication #7523e53
- refactoring #7869043
- moved windows logo into logos dir #789d3ba
- updated text colours across app #7a88f4c
- starting docs infra #7d2a1c6
- more cleaning #7e17626
- slight patch to rename query to be more consistent #7f4db0c
- move to raw docker #803752e
- server side and user client side completed for registration #848a611
- beginnings of download implementation #8674ac7
- more consistent naming for object handler #87230fb
- use autodevops build stage #886beb6
- Updated tailwind config #88c95d6
- change name of store file #8999303
- split prisma schemas #9011cf5
- client initiate #909432a
- more client routes to support Drop app update #91b7e10
- additional polish and QoL features #93bc143
- upload images to games #9b7ee4e
- migrate to pnpm due to ci/cd issues with yarn #9cb2d6d
- run yarn install in CI/CD non interactively #a208fbe
- completed game importing; partial work on version importing #a7c33e7
- remove canvas from dependencies #a8f58eb
- fix registry authentication #ad25d3e
- consolidate type utils #adb4b73
- Updated README.md #b0ef675
- add proper carousel to store page #b2ab827
- move to yarn v2 #b744671
- remove client API deadweight #b9ae26c
- add expires field #be6c30d
- ca groundwork #bfafd2a
- cleanup & polish #c355f6f
- remove bcrypt (debug) #c3914cc
- non rounded bottom #c4391d3
- failed gracefully on invalid chunk index #c4a3e4e
- update deploy template #c4a419f
- migrate to new droplet ca system #c4d8113
- docker based deployment #c5d00b4
- updated CONTRIBUTING.md #cd0d2bf
- update prisma version #ce0a9ab
- README update #ceacd84
- patch metadata handler #cf578bd
- Added SECURITY.md #d3d93b0
- finalised client APIs and authentication method #d4e2dc8
- Update README.md #db916bf
- object storage interface + utility functions #de388a9
- initial commit #e1a789f
- fixed task system #e1c1d7e
- Update file chunk.get.ts #e4339c3
- ui groundwork #e52f072
- Update changelog #eadcaa1
- check for no version in manifest generation #eb3f9f9
- break into single column store on lg devices #ecb381e
- better server side signin redirects #ef13b68
- patch signin #f3672f8
_changelog generated by_ [go-conventional-commits](https://github.com/joselitofilho/go-conventional-commits)
## Release 0.1.0-beta
### Fixes
- remove dynamic imports #0f10626
- fix for missing developers or publishers #25fc957
- split prisma schemas #2859005
- results are returned alphabetically #33d3770
- properly disconnect websockets from task handler #5358f1f
- follow best practices #54c5d55
- future lenience #5c78b20
- fixed websocket authentication #62ea9a1
- fix delta manifest generation #6df560c
- admin invitation w/ system user #8463e35
- properly import icons #8945196
- prisma create footprint #952ece8
- game panel now always shows 3 lines exactly #9c2249e
- remove unnecessary import #a361c38
- fix types #b511b40
- fix expires requirement in the admin endpoint #c7b675f
- moved icons and created PlatformClient so we can use the enum on the frontend #cada630
- only show versions that are directories #ef8f3ae
### Features
- update prisma & delete games #089c3e0
- fetch game endpoint #1f4d075
- under the hood organisation and consolidation #26a31f6
- introduction of 'system user' #2c21a23
- automatically create library folder if it doesn't exist #39fe9d5
- smoother bar in admin task ui #4488ae2
- add version metadata route #5393db3
- completed admin UI, with minor changes to backend #599da0e
- keep track of last connected #69e4c25
- added notification system w/ interwoven refactoring #6e6f09d
- content length header for chunk downloads #76bceb1
- add title to tab #7b0756c
- add button to open in admin panel #7b3b919
- client capability framework + peer API configuration #7d72a86
- generate a server certificate for mtls APIs #9c4b6f3
- new endpoints, ui and beginnings of main store page #9cbdcbc
- more subtle design improvements #a815542
- add header #a8a152e
- client side search #b50e27f
- new ws handler #bc0c47c
- user widget now redirects to actual page #bfafe02
- require lowercase usernames #d7160ab
- more ui improvements #e408ac5
- slightly improved game page #e796b46
- game carousel #ecc819e
- add enum dictionary type #f2e0182
- cleanup and raw accessors #f7d767d
- add support for overriding UMU id #fd4a7d1
### Other Changes
- quexeky <git@quexeky.dev>
- fixed manifest generation #03a37f7
- manual ci/cd #03b0b0c
- ability to fetch client certs for p2p #0a715fe
- disable tls in build #0f80fcd
- Updated README.md #17971e0
- initial work on metadata system #196f87c
- more ui #1bd19ad
- remove log statements #1d5e1bd
- small fixes & SSR disabled #1f575b2
- update information and setup guide #2236622
- metadata engine #22ac7f6
- Update CONTRIBUTING.md #2309407
- slight bug fixes and clean up #24a0d11
- almst complete admin ui and initial store designs #27070b6
- handshakes #2b4382d
- user mobile header #2e44ef3
- more consistent naming for globals #305de9f
- replaced markdown-it with micromark #31e8359
- fixes to store page for mobile clients #328b9ba
- game version re-ordering #329c74d
- verbose yarn install #36568c3
- patch for no version check in manifest generation #395219d
- migrate bcrypt to bcryptjs #3a51c9c
- added download chunk endpoint #3dd6062
- Update README.md #425934d
- build only ci #4273a20
- object storage + full permission system + testing #435551c
- rename admin socket session map #44c6028
- bump droplet and add vue carousel #46551f9
- version importing #46c8f0c
- back to yarn, with nuxt telemetry force disabled #46d35ad
- finished object endpoints #486bce8
- update dependencies and add note about optional dependencies #4fa771a
- use configuration from docs for ci/cd #52315d0
- slight fixes to register logic #583301f
- removed yarn.lock #584bcf1
- Version bump #5f29c28
- immutable application settings framework #5fe2036
- fixed docker daemon location #62a111b
- copy autodevops configuration #6328c24
- Delete .gitlab-ci.yml #69f341b
- admin ui shell #6b5e48d
- bump @drop/droplet version for windows developers #6ba5cdd
- Add LICENSE #6e2dc89
- task API #718f5ba
- use gitlab ci variable declaration #7194d35
- move icons into dedicated folder #74fa671
- another stage of client authentication #7523e53
- refactoring #7869043
- moved windows logo into logos dir #789d3ba
- updated text colours across app #7a88f4c
- starting docs infra #7d2a1c6
- more cleaning #7e17626
- slight patch to rename query to be more consistent #7f4db0c
- move to raw docker #803752e
- server side and user client side completed for registration #848a611
- beginnings of download implementation #8674ac7
- more consistent naming for object handler #87230fb
- use autodevops build stage #886beb6
- Updated tailwind config #88c95d6
- change name of store file #8999303
- split prisma schemas #9011cf5
- client initiate #909432a
- more client routes to support Drop app update #91b7e10
- additional polish and QoL features #93bc143
- upload images to games #9b7ee4e
- migrate to pnpm due to ci/cd issues with yarn #9cb2d6d
- run yarn install in CI/CD non interactively #a208fbe
- completed game importing; partial work on version importing #a7c33e7
- remove canvas from dependencies #a8f58eb
- fix registry authentication #ad25d3e
- consolidate type utils #adb4b73
- Updated README.md #b0ef675
- add proper carousel to store page #b2ab827
- move to yarn v2 #b744671
- remove client API deadweight #b9ae26c
- add expires field #be6c30d
- ca groundwork #bfafd2a
- cleanup & polish #c355f6f
- remove bcrypt (debug) #c3914cc
- non rounded bottom #c4391d3
- failed gracefully on invalid chunk index #c4a3e4e
- update deploy template #c4a419f
- migrate to new droplet ca system #c4d8113
- docker based deployment #c5d00b4
- updated CONTRIBUTING.md #cd0d2bf
- update prisma version #ce0a9ab
- README update #ceacd84
- patch metadata handler #cf578bd
- Added SECURITY.md #d3d93b0
- finalised client APIs and authentication method #d4e2dc8
- Update README.md #db916bf
- object storage interface + utility functions #de388a9
- initial commit #e1a789f
- fixed task system #e1c1d7e
- Update file chunk.get.ts #e4339c3
- ui groundwork #e52f072
- check for no version in manifest generation #eb3f9f9
- break into single column store on lg devices #ecb381e
- better server side signin redirects #ef13b68
- patch signin #f3672f8
_changelog generated by_ [go-conventional-commits](https://github.com/joselitofilho/go-conventional-commits)
-1
View File
@@ -1 +0,0 @@
use flake
-4
View File
@@ -1,4 +0,0 @@
/target
logs/
.vscode
.direnv
-3396
View File
File diff suppressed because it is too large Load Diff
-27
View File
@@ -1,27 +0,0 @@
[package]
name = "downpour"
version = "0.1.0"
edition = "2024"
[dependencies]
anyhow = "1.0.100"
async-trait = "0.1.89"
chrono = "0.4.43"
clap = { version = "4.5.54", features = ["derive"] }
console = "0.16.2"
dialoguer = "0.12.0"
dirs = "6.0.0"
droplet-rs = { path = "../libraries/droplet" }
fern = { version = "0.7.1", features = ["colored"] }
futures = "0.3.31"
indicatif = "0.18.3"
log = "0.4.29"
opendal = { version = "0.55.0", features = ["services-s3"] }
rand = "0.9.2"
reqwest = { version = "0.13.1", features = ["json"] }
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.148"
tokio = { version = "1.48.0", features = ["fs", "macros"] }
tokio-util = { version = "0.7.18", features = ["compat"] }
url = "2.5.8"
webbrowser = "1.0.6"
-3
View File
@@ -1,3 +0,0 @@
# CLI (`downpour`)
The cli way to access Drop. Used for admin tasks that require local access, like uploading game content.
-96
View File
@@ -1,96 +0,0 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1768564909,
"narHash": "sha256-Kell/SpJYVkHWMvnhqJz/8DqQg2b6PguxVWOuadbHCc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e4bae1bd10c9c57b2cf517953ab70060a828ee6f",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1744536153,
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs",
"rust-overlay": "rust-overlay"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1768704795,
"narHash": "sha256-Y33TAp2BHEcuspYvcmBXXD0qdvjftv73PwyKTDOjoSY=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "4b7472a78857ac789fb26616040f55cfcbd36c6e",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}
-52
View File
@@ -1,52 +0,0 @@
{
description = "Drop-OSS app development environment";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
rust-overlay.url = "github:oxalica/rust-overlay";
};
outputs =
{
self,
nixpkgs,
flake-utils,
rust-overlay,
}:
flake-utils.lib.eachDefaultSystem (
system:
let
overlays = [ (import rust-overlay) ];
pkgs = import nixpkgs {
inherit system overlays;
};
libraries = with pkgs; [
glib
glibc
openssl
];
in
{
devShells.default = pkgs.mkShell {
nativeBuildInputs = with pkgs; [
pkg-config
git
rust-bin.nightly.latest.default
rust-analyzer
cargo-expand
];
buildInputs = libraries;
shellHook = ''
export LD_LIBRARY_PATH="${
pkgs.lib.makeLibraryPath libraries
}:$LD_LIBRARY_PATH"
echo "Downpour development environment loaded"
'';
};
}
);
}
-2
View File
@@ -1,2 +0,0 @@
[toolchain]
channel = "nightly"
-10
View File
@@ -1,10 +0,0 @@
# Downpour CLI spec
`downpour [command] --opts`
## Commands:
- new <path/s3 name> <public endpoint> - creates/initalizes a depot at the endpoint. Creates manifest.json and speedtest
- connect <s3 endpoint> <key> <secret> [name] - connects to an s3 endpoint and saves the endpoint to some sort of credentials file. Name is either as provided or the hostname of the endpoint
- upload <game id> <localpath> <path/s3 name> - uploads game as described before. Should fail if depot isn't initialized with new from above
- copy <game id> <version id> <src path/s3 name> <dest path/s3 name> - copies between two depots
- mark [exists/absent] <game id> <version id> <path/s3 name> - modifies depot's manifest.json to show content exists or is absent without copying (for third party copies)
- rename <public endpoint> <new public endpoint> - renames an endpoint [NEEDS API ROUTES - can't do yet]
- delete <public endpoint> - delete an endpoint [NEEDS API ROUTES - can't do yet]
-69
View File
@@ -1,69 +0,0 @@
use clap::{Args, Parser, Subcommand, ValueEnum};
use crate::{commands::connect::config_option::ConfigOptionCli, interactive_variable};
#[derive(Parser)]
#[command(version, about, long_about = None)]
pub struct Cli {
#[command(subcommand)]
pub command: Commands,
/// Specify data file path
#[arg(short, long)]
pub data: Option<String>,
}
#[derive(Subcommand)]
pub enum Commands {
/// Configures downpour endpoints
Connect {
#[arg(short, long)]
name: Option<String>,
#[command(subcommand)]
option: ConfigOptionCli,
},
/// Uploads new game version to depot
Upload {
#[clap(flatten)]
info: UploadInfoCli,
#[arg(short, long)]
/// Alias of a given connection
name: Option<String>,
},
}
#[derive(Args)]
pub struct UploadInfo {
pub path: String,
pub game_id: String,
pub version_id: String,
}
#[derive(Args)]
pub struct UploadInfoCli {
/// Relative path to new version files
#[arg(short, long, default_value_t = String::from("."))]
pub path: String,
/// ID of game to attach to
#[arg(short, long)]
pub game_id: Option<String>,
/// Version ID to attach to
#[arg(short, long)]
pub version_id: Option<String>,
}
impl UploadInfoCli {
pub fn interactive_configure(self) -> UploadInfo {
let path = self.path;
interactive_variable!(self, game_id, "Game ID");
interactive_variable!(self, version_id, "Version ID");
UploadInfo {
path,
game_id,
version_id,
}
}
}
#[derive(ValueEnum, Copy, Clone, Debug, PartialEq, Eq)]
pub enum UploadStyle {
S3,
}
-152
View File
@@ -1,152 +0,0 @@
use crate::{
commands::connect::{
config_option::{ConfigOption, ConfigOptionCli},
configurable::Configure,
speedtest::{SPEEDTEST_PATH, Speedtest},
},
manifest::DepotManifest,
};
use dialoguer::{Confirm, theme::ColorfulTheme};
use futures::AsyncWriteExt;
use indicatif::{ProgressBar, ProgressStyle};
use log::{debug, info};
use opendal::Operator;
use serde::{Deserialize, Serialize};
use std::{collections::HashMap, fs, ops::Not};
use tokio_util::compat::FuturesAsyncWriteCompatExt;
const CONFIG_DIR: &str = "downpour/config.json";
#[derive(Serialize, Deserialize)]
pub struct Config {
configurations: HashMap<String, ConfigOption>,
active: Option<String>,
}
impl Config {
pub fn new() -> Self {
Self {
configurations: HashMap::new(),
active: None,
}
}
pub fn exists(&self, name: &String) -> bool {
self.configurations.contains_key(name)
}
pub fn save(&self) -> anyhow::Result<()> {
let json = serde_json::to_string(self)?;
let save_path = dirs::config_dir()
.expect("Apparently your home directory doesn't exist") // Should probably formalise that error
.join(CONFIG_DIR);
fs::create_dir_all(save_path.parent().unwrap())?;
fs::write(save_path, json)?;
Ok(())
}
pub fn read() -> Self {
let save_path = dirs::config_dir()
.expect("Apparently your home directory doesn't exist") // Should probably formalise that error
.join(CONFIG_DIR);
if fs::exists(&save_path)
.unwrap_or_else(|_| panic!("Could not read save path {:#?}", &save_path))
{
serde_json::from_str(&fs::read_to_string(save_path).unwrap()).unwrap()
} else {
Config::new()
}
}
pub fn add_item(&mut self, name: String, object: ConfigOption) {
if matches!(object, ConfigOption::S3(..)) {
self.active = Some(name.clone())
}
self.configurations.insert(name, object);
self.save().expect("Failed to save config");
}
pub fn get_active(&self) -> Option<&ConfigOption> {
if let Some(active) = &self.active {
self.configurations.get(active)
} else {
None
}
}
pub fn get<T: AsRef<str>>(&self, name: T) -> Option<&ConfigOption> {
self.configurations.get(name.as_ref())
}
}
pub async fn manage_configuration(
config: &mut Config,
name: Option<String>,
option: ConfigOptionCli,
) -> anyhow::Result<()> {
let mut name = name;
if let Some(name) = &name
&& config.exists(name)
{
let confirm = Confirm::with_theme(&ColorfulTheme::default())
.with_prompt(format!(
"An entry already exists with the name \"{}\". Would you like to overwrite it?",
name
))
.interact()?;
if !confirm {
return Err(anyhow::anyhow!("User cancelled action"));
}
}
let config_option = match option {
ConfigOptionCli::S3(s3_config_cli) => s3_config_cli.clone().configure(&mut name).await?,
};
let name = name.expect("Default name was not provided by ConfigOption. This is a bug");
config.add_item(name, config_option.clone());
let operator = config_option.build()?;
generate_manifest(&operator).await?;
info!("Finished uploading manifest");
generate_speedtest(&operator).await?;
info!("Finished uploading speedtest");
Ok(())
}
async fn generate_speedtest(operator: &Operator) -> anyhow::Result<()> {
// Workaround to operator.exists("...") also logging a 404 warning
let lister = operator.list_with(SPEEDTEST_PATH).limit(1).await?;
if lister.is_empty().not() {
info!("Speedtest already exists on Depot. Skipping speedtest upload...");
return Ok(());
}
let mut writer = operator
.writer(SPEEDTEST_PATH)
.await?
.into_futures_async_write()
.compat_write();
let progress_bar = ProgressBar::new(10_000).with_style(
ProgressStyle::default_bar()
.template("[{elapsed_precise}] [ETA {eta}] {bar} {percent_precise}%")
.unwrap(),
);
let mut reader = Speedtest::new(|progress| {
let progress_int = (progress * 100f32).round() as u64;
progress_bar.set_position(progress_int);
});
let written = tokio::io::copy(&mut reader, &mut writer).await?;
progress_bar.finish();
debug!("Wrote {} bytes to {:?}", written, operator.info());
writer.into_inner().close().await?;
debug!("Closed writer");
Ok(())
}
async fn generate_manifest(operator: &Operator) -> anyhow::Result<()> {
let lister = operator.list_with("manifest.json").limit(1).await?;
if lister.is_empty().not() {
info!("Manifest already exists on Depot. Skipping manifest upload...");
return Ok(());
}
let data = DepotManifest::new();
operator
.write("manifest.json", serde_json::to_string(&data)?)
.await?;
Ok(())
}
-27
View File
@@ -1,27 +0,0 @@
use clap::Subcommand;
use opendal::{Operator, layers::LoggingLayer};
use serde::{Deserialize, Serialize};
use crate::{
commands::connect::s3::{S3Config, S3ConfigCli},
operator_builder::OperatorBuilder,
};
#[derive(Subcommand, Clone)]
pub enum ConfigOptionCli {
// Connect to any S3-compatible endpoint
S3(S3ConfigCli),
}
#[derive(Serialize, Deserialize, Clone)]
pub enum ConfigOption {
S3(S3Config),
}
impl ConfigOption {
pub fn build(&self) -> anyhow::Result<Operator> {
Ok(match self {
ConfigOption::S3(s3_config) => s3_config.build()?,
}
.layer(LoggingLayer::default()))
}
}
-5
View File
@@ -1,5 +0,0 @@
use crate::commands::connect::config_option::ConfigOption;
pub trait Configure {
async fn configure(self, name: &mut Option<String>) -> anyhow::Result<ConfigOption>;
}
-47
View File
@@ -1,47 +0,0 @@
use std::str::FromStr;
use dialoguer::{Input, theme::ColorfulTheme};
#[macro_export]
macro_rules! interactive_variable {
($value:ident, $var:ident, $prompt:expr) => {
let $var = if let Some($var) = $value.$var {
$var
} else {
$crate::commands::connect::interactive::query_variable($prompt).unwrap()
};
};
}
#[macro_export]
macro_rules! interactive_optional_variable {
($value:ident, $var:ident, $prompt:expr) => {
let $var = if let Some($var) = $value.$var {
Some($var)
} else {
$crate::commands::connect::interactive::query_optional_variable($prompt).unwrap()
};
};
}
pub fn query_variable<T: Clone + FromStr + ToString>(prompt: impl ToString) -> dialoguer::Result<T>
where
<T as FromStr>::Err: ToString,
{
Input::with_theme(&ColorfulTheme::default())
.with_prompt(prompt.to_string())
.interact_text()
}
pub fn query_optional_variable<T: Clone + FromStr + ToString>(
prompt: impl ToString,
) -> dialoguer::Result<Option<T>>
where
<T as FromStr>::Err: ToString,
{
let input: T = Input::with_theme(&ColorfulTheme::default())
.with_prompt(prompt.to_string())
.allow_empty(true)
.interact_text()?;
if input.to_string().is_empty() {
return Ok(None);
}
Ok(Some(input))
}
-7
View File
@@ -1,7 +0,0 @@
pub mod config;
pub mod configurable;
pub mod s3;
#[macro_use]
pub mod interactive;
pub mod config_option;
pub mod speedtest;
-67
View File
@@ -1,67 +0,0 @@
use clap::Args;
use opendal::Operator;
use serde::{Deserialize, Serialize};
use crate::{
commands::connect::{config_option::ConfigOption, configurable::Configure},
interactive_variable,
operator_builder::OperatorBuilder,
};
#[derive(Args, Clone)]
pub struct S3ConfigCli {
key_id: Option<String>,
secret_key: Option<String>,
endpoint: Option<String>,
region: Option<String>,
bucket_name: Option<String>,
root: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct S3Config {
key_id: String,
secret_key: String,
endpoint: String,
region: String,
bucket_name: String,
root: Option<String>,
}
impl Configure for S3ConfigCli {
async fn configure(self, name: &mut Option<String>) -> anyhow::Result<ConfigOption> {
interactive_variable!(self, key_id, "S3 Key ID");
interactive_variable!(self, secret_key, "S3 Secret Key");
interactive_variable!(self, region, "S3 Region");
interactive_variable!(self, bucket_name, "S3 Bucket Name");
interactive_variable!(self, endpoint, "S3 Endpoint");
if let None = name {
*name = Some(endpoint.clone());
}
Ok(ConfigOption::S3(S3Config {
secret_key,
key_id,
region,
bucket_name,
endpoint,
root: self.root,
}))
}
}
impl OperatorBuilder for S3Config {
fn build(&self) -> anyhow::Result<Operator> {
let builder = opendal::services::S3::default()
.access_key_id(&self.key_id)
.secret_access_key(&self.secret_key)
.region(&self.region)
.endpoint(&self.endpoint)
.root(self.root.as_deref().unwrap_or("/"))
.bucket(&self.bucket_name)
.disable_config_load();
let op: Operator = Operator::new(builder)?.finish();
Ok(op)
}
}
-41
View File
@@ -1,41 +0,0 @@
use rand::{RngCore, SeedableRng, rng, rngs::StdRng};
use tokio::io::AsyncRead;
#[derive(Clone, Debug)]
pub struct Speedtest<F: Fn(f32)> {
core: rand::rngs::StdRng,
to_write: usize,
callback: Box<F>,
}
pub const SPEEDTEST_BYTES: usize = 64 * 1024 * 1024;
pub const SPEEDTEST_PATH: &str = "speedtest";
impl<F: Fn(f32)> AsyncRead for Speedtest<F> {
fn poll_read(
self: std::pin::Pin<&mut Self>,
_cx: &mut std::task::Context<'_>,
buf: &mut tokio::io::ReadBuf<'_>,
) -> std::task::Poll<std::io::Result<()>> {
let mut s = self;
let to_write = buf.remaining().min(s.to_write);
let filled = {
let fill_slice = buf.initialize_unfilled_to(to_write);
s.core.fill_bytes(fill_slice);
fill_slice.len()
};
s.to_write = s.to_write.saturating_sub(filled);
(s.callback)((1f32 - (s.to_write as f32 / SPEEDTEST_BYTES as f32)) * 100f32);
buf.advance(filled);
std::task::Poll::Ready(Ok(()))
}
}
impl<F: Fn(f32)> Speedtest<F> {
pub fn new(callback: F) -> Self {
Self {
core: StdRng::from_rng(&mut rng()),
to_write: SPEEDTEST_BYTES,
callback: Box::new(callback),
}
}
}
-2
View File
@@ -1,2 +0,0 @@
pub mod connect;
pub mod upload;
-79
View File
@@ -1,79 +0,0 @@
use std::path::Path;
use crate::{
cli::UploadInfo,
commands::connect::{config::Config, config_option::ConfigOption},
manifest::{ClosureFactory, CompressionOption, DepotManifest, generate_v2_manifest},
operator_builder::OperatorBuilder,
};
use futures::AsyncWriteExt;
use log::info;
use opendal::{FuturesAsyncWriter, Operator};
use tokio_util::compat::{Compat, FuturesAsyncWriteCompatExt};
pub async fn upload(
upload_info: &UploadInfo,
config: Config,
name: &Option<String>,
) -> anyhow::Result<()> {
let game_id = upload_info.game_id.clone();
let path = upload_info.path.clone();
let version_id = upload_info.version_id.clone();
let operator = get_operator(config, name)?;
let mut existing_depot_manifest = get_depot_manifest(&operator).await?;
info!("Uploading chunks");
let v2_manifest = generate_v2_manifest(
Path::new(&path),
ClosureFactory::new(
async move |id: String| {
info!("Uploading chunk id {id}");
let writer = operator
.writer(&format!("{game_id}/{version_id}/{id}"))
.await
.unwrap()
.into_futures_async_write()
.compat_write();
writer
},
|writer: Compat<FuturesAsyncWriter>| async {
writer.into_inner().close().await.unwrap();
},
),
)
.await?;
info!("Finished uploading chunks");
existing_depot_manifest.append(
upload_info.game_id.to_string(),
upload_info.version_id.to_string(),
CompressionOption::None,
);
Ok(())
}
async fn get_depot_manifest(operator: &Operator) -> Result<DepotManifest, anyhow::Error> {
let existing_depot_manifest = operator.read("manifest.json").await?.to_bytes();
let existing_depot_manifest: DepotManifest =
serde_json::from_slice(existing_depot_manifest.as_ref())?;
Ok(existing_depot_manifest)
}
fn get_operator(config: Config, name: &Option<String>) -> anyhow::Result<Operator> {
let operator = match if let Some(name) = name {
config
.get(name)
.ok_or(anyhow::anyhow!("Name does not exist"))?
} else {
config.get_active().ok_or(anyhow::anyhow!(
"No active connection set. Please specify with --name"
))?
} {
ConfigOption::S3(s3_config) => s3_config.build()?,
};
Ok(operator)
}
-1
View File
@@ -1 +0,0 @@
pub mod interface;
-53
View File
@@ -1,53 +0,0 @@
use fern::colors::{Color, ColoredLevelConfig};
use log::LevelFilter;
use std::env;
use std::fs;
use std::io;
pub fn configure_logging() -> anyhow::Result<()> {
let log_level = env::var("RUST_LOG")
.unwrap_or_else(|_| "info".to_string())
.parse::<LevelFilter>()?;
let log_dir = env::var("LOG_FILE_DIR").unwrap_or_else(|_| "logs".to_string());
fs::create_dir_all(&log_dir)?;
let colors = ColoredLevelConfig::new()
.error(Color::Red)
.warn(Color::Yellow)
.info(Color::Blue)
.debug(Color::Green)
.trace(Color::Magenta);
fern::Dispatch::new()
.chain(
fern::Dispatch::new()
.format(move |out, message, record| {
out.finish(format_args!(
"[{}] {}: {}",
chrono::Local::now().format("%H:%M:%S%.3f"),
colors.color(record.level()),
message
))
})
.chain(io::stdout()),
)
.chain(
fern::Dispatch::new()
.format(|out, message, record| {
out.finish(format_args!(
"[{}] {} {} - {}",
chrono::Local::now().format("%Y-%m-%d %H:%M:%S%.3f"),
record.level(),
record.target(),
message
))
})
.chain(fern::log_file(format!("{}/app.log", log_dir))?),
)
.level(log_level)
.apply()?;
Ok(())
}
-34
View File
@@ -1,34 +0,0 @@
#![feature(async_fn_traits)]
use crate::commands::connect::config::manage_configuration;
use crate::{
cli::{Cli, Commands},
commands::connect::config::Config,
commands::upload,
};
use clap::Parser;
mod cli;
mod commands;
mod logging;
mod manifest;
mod operator_builder;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
crate::logging::configure_logging()?;
let cli = Cli::parse();
let mut config = Config::read();
match cli.command {
Commands::Connect { name, option } => {
manage_configuration(&mut config, name, option).await?
}
Commands::Upload { info, name } => {
let info = info.interactive_configure();
upload::interface::upload(&info, config, &name).await?;
}
};
Ok(())
}
-114
View File
@@ -1,114 +0,0 @@
use std::{collections::HashMap, path::Path};
use async_trait::async_trait;
use droplet_rs::manifest::{Manifest, ManifestWriterFactory, generate_manifest_rusty};
use indicatif::{ProgressBar, ProgressStyle};
use log::info;
use serde::{Deserialize, Serialize};
use tokio::io::AsyncWrite;
#[derive(Serialize, Deserialize)]
pub struct DepotManifest {
content: HashMap<String, DepotManifestGameData>,
}
#[derive(Serialize, Deserialize)]
struct DepotManifestGameData {
version_id: String,
compression: CompressionOption,
}
#[derive(Serialize, Deserialize)]
pub enum CompressionOption {
None,
Gzip,
Zstd,
}
impl DepotManifest {
pub fn new() -> Self {
Self {
content: HashMap::new(),
}
}
pub fn append(&mut self, game_id: String, version_id: String, compression: CompressionOption) {
self.content.insert(
game_id,
DepotManifestGameData {
version_id,
compression,
},
);
}
}
pub struct ClosureFactory<Writer, Factory, Closer>
where
Writer: AsyncWrite + Unpin,
Factory: AsyncFn(String) -> Writer,
Closer: AsyncFn(Writer),
{
writer: Factory,
closer: Closer,
}
#[async_trait]
impl<
W: AsyncWrite + Unpin + Send + Sync,
F: AsyncFn(String) -> W + Send + Sync + 'static,
C: AsyncFn(W) + Send + Sync,
> ManifestWriterFactory for ClosureFactory<W, F, C>
where
for<'a> F::CallRefFuture<'a>: Send,
for<'b> C::CallRefFuture<'b>: Send,
{
type Writer = W;
async fn create(&self, id: String) -> anyhow::Result<Self::Writer> {
let func = &self.writer;
let output = func(id).await;
Ok(output)
}
async fn close(&self, writer: Self::Writer) -> anyhow::Result<()> {
let func = &self.closer;
func(writer).await;
Ok(())
}
}
impl<
W: AsyncWrite + Unpin + Send + Sync,
F: AsyncFn(String) -> W + Send + Sync + 'static,
C: AsyncFn(W) + Sync,
> ClosureFactory<W, F, C>
where
for<'a> F::CallRefFuture<'a>: Send,
for<'b> C::CallRefFuture<'b>: Send,
{
pub fn new(f: F, c: C) -> Self {
Self {
writer: f,
closer: c,
}
}
}
pub async fn generate_v2_manifest<Factory>(dir: &Path, factory: Factory) -> anyhow::Result<Manifest>
where
Factory: ManifestWriterFactory,
{
let progress_bar = ProgressBar::new(10_000).with_style(
ProgressStyle::default_bar()
.template("[{elapsed_precise}] [ETA {eta}] {bar} {percent_precise}%")
.unwrap(),
);
generate_manifest_rusty(
dir,
|progress| {
let progress_int = (progress * 100f32).round() as u64;
progress_bar.set_position(progress_int);
},
|log| progress_bar.suspend(|| info!("{}", log)),
Some(&factory),
None,
)
.await
}
-5
View File
@@ -1,5 +0,0 @@
use opendal::Operator;
pub trait OperatorBuilder {
fn build(&self) -> anyhow::Result<Operator>;
}
@@ -30,11 +30,7 @@
</div>
<div class="grid grid-cols-1 lg:grid-cols-3 gap-4 pt-8">
<SelectorMultiItem
v-model="currentTags"
:items="tags"
:create="createTag"
/>
<SelectorMultiItem v-model="currentTags" :items="tags" />
<div class="flex flex-col">
<label
for="releaseDate"
@@ -497,9 +493,8 @@ if (!game.value)
const currentTags = ref<{ [key: string]: boolean }>(
Object.fromEntries(game.value.tags.map((e) => [e.id, true])),
);
const rawTags = await $dropFetch("/api/v1/admin/tags");
const tags = ref(
rawTags.map((e) => ({ name: e.name, param: e.id }) satisfies StoreSortOption),
const tags = (await $dropFetch("/api/v1/admin/tags")).map(
(e) => ({ name: e.name, param: e.id }) satisfies StoreSortOption,
);
watch(
@@ -510,11 +505,7 @@ watch(
params: {
id: game.value.id,
},
body: {
tags: Object.entries(v)
.filter((v) => v[1])
.map((v) => v[0]),
},
body: { tags: Object.keys(v) },
failTitle: "Failed to update game tags",
});
},
@@ -825,15 +816,4 @@ async function updateImageCarousel() {
);
}
}
async function createTag(value: string): Promise<string> {
const tag = await $dropFetch(`/api/v1/admin/tags`, {
method: "POST",
body: {
name: value,
},
});
tags.value.push({ name: tag.name, param: tag.id });
return tag.id;
}
</script>

Some files were not shown because too many files have changed in this diff Show More