Finish registry #446

Open
opened 2026-01-05 08:45:28 +00:00 by LunarTides · 0 comments
LunarTides commented 2026-01-05 08:45:28 +00:00 (Migrated from github.com)

The registry is hosted on: https://hs.lunartides.dev/registry/

  • Packs
    • Add Pack db column.
    • Parse meta.jsonc.
    • Add fields to the row.
    • Add likes.
    • Add dislikes.
    • Allow showing the code in packs.
      • [BUG] Force typescript language for .ts files. My laptop doesn't render typescript files correctly for some reason. Not client side apparently?
      • Show resource component when looking at it's file.
    • Show README.md file on pack page.
      • Use new Bun.markdown
    • #454
    • Approve/Deny
      • Add approving packs.
      • Approved by. Allows seeing who approved the version.
      • Add approve / deny message.
      • Add denying packs.
      • Unapprove packs.
      • Approve guidelines (Quality = More karma.)
        • Add automation for calculating karma using checkboxes (Has a README file, etc...)
          • Automatically check the checkboxes that the registry knows is true (Has a README file if the pack has a readme file.)
    • Self-moderation
      • Edit
        • Allow changing metadata from the pack page.
      • Delete
        • Versions
          • [BUG] Handle deleting all versions manually.
        • All
        • [BUG] Fix final confirm dialogue being behind the footer.
    • Reporting
    • Add additionalBadges db column.
    • Replace /versions/0.2.0 -> /v0.2.0 in url.
    • Only allow 1 version per packVersion. You can just bump the patch version if it gets denied.
    • Add permissions object in packs. permissions: { network: false, fileSystem: false }
      • Add warning that the pack requires these permissions.
    • Add proper support for requires.
    • Add tags.
    • Replace id with versionId and uuid with packId
    • Make sure the names work in TypeScript objects. (No starting with numbers, no dashes.)
    • Show amount of bytes in tooltip when hovering over Unpacked Size.
      • Add dotted underline to show that there's a tooltip
    • [BUG] Allow accessing settings of a pack uploaded to a group.
    • [BUG] Downloading only works on the README page.
  • Cards
    • Add Card db column.
    • [BUG] Show correct card when on unapproved 0.2.0 when an approved 0.1.0 exists. (From is correct, but the card displayed is not.)
    • Add card representation.
      • Hearthstone.js
      • Vanilla, as an actual card.
      • Parse color tags.
    • Reporting
    • #452
    • Show the code of the card on its page.
      • This requires storing the cards path in the database under a new filePath column. Do this when uploading the pack.
    • Color names / rarity of cards by their rarity.
    • Show heropowers in cards.
  • Other resources
    • Commands
    • SFXs
    • Systems
  • Searching
    • Search packs by uuid or name.
    • Search cards by uuid or name.
      • Show the pack the card is from.
      • Order by download count.
    • Add support for searching in-game.
    • [BUG] Search packs doesn't show loading, it waits for the result before loading the page.
    • Search filter packs by approved.
    • Make searching smarter.
    • Add pagination to search frontend.
  • Add versions.
    • Add versions for packs.
    • Add versions for cards.
    • Add isLatestVersion on packs / cards.
    • Make pack names non-unique for packs with the same uuid.
    • Validate semver for pack version.
    • Save packs to /static/assets/packs/{packUUID}/{packVersion}/{packUUID}.7z
    • Add support multiple rows of the same version of the pack.
  • Download.
    • Route / API
    • Disallow accessing /static/assets directly.
    • Add download count.
    • [BUG] Clicking "Download" then liking / disliking the pack will keep downloading the pack over and over again. Cannot reproduce Can reproduce
    • Add support for downloading in-game.
  • Upload
    • Parse blueprints after extracting pack.
    • Add all bp fields to the row.
    • Allow specifying owner and pack name when uploading,
    • Add support for uploading in-game.
    • Parse enchantment priority correctly.
    • Validate metadata with zod.
    • Reject proprietary packs.
    • Delete pack from db if adding cards goes wrong.
    • Validate card (blueprint) with zod.
    • Add support for links.
    • Use the new Bun.Archive instead of 7zip.
  • Profile
    • About me, pronouns, etc...
    • See packs and cards
      • Waiting for approval tag.
    • Avatars
      • Fix in production
    • Reporting
    • Appearance settings
      • Custom themes
        • Dark/light mode
    • Self-moderation
      • Delete account
        • Change username to DeletedAccount and then a uuidv7.
          • Handle deleted users in the backend and frontend.
      • Change username
        • 1-6 Month cooldown, allow reclaiming username meanwhile, but don't allow changing it to something else.
          • Don't rely on usernames in api, use ids instead.
    • Moderation tools
      • Delete pack
      • Rename pack
      • Ban account
      • Delete account
      • Mute account
      • ...
    • Handle packs belonging to deleted accounts.
    • Add additionalBadges db column.
    • Make sure the names work in TypeScript objects. (No starting with numbers, no dashes.)
    • [BUG] Fix the login regex (the - has to be escaped \-)
    • Prevent making users with the name "null" or "all".
    • Manage sessions
    • Reset password
    • Add email addresses
    • Add login via GitHub
  • Groups
    • Creating
    • Editing
    • Managing members
      • Add
      • Remove
      • Manage permissions
        • * (All permissions.)
        • pack.*
        • pack.upload
        • pack.edit
        • group.*
        • group.edit
        • member.*
        • member.add
        • member.remove
        • member.edit.permissions
        • owner (Can't be edited / removed by others outside of themself or the group manager. Only 1 user per group can have this permission.)
    • Display
      • Seperate from UserBig
      • Show members (Not permissions)
    • Add to right sidebar in user page.
    • Make sure the names work in TypeScript objects. (No starting with numbers, no dashes.)
    • Prevent making groups with the name "null" or "all".
    • Don't show invited users to non-members.
    • [BUG] Fix remaining compatibility issues with users
      • Leaderboard
    • [BUG] Fix not working for regular users
    • [BUG] Fix not working when not logged in
  • Comments
    • Add support for commenting on:
      • Packs
        • Display comments
        • Like comments
        • Post comment
        • Authors can heart comments on their profile. (Can NOT delete.)
          • [BUG] Too far down when logged out.
          • [BUG] Avatar too big for some reason
        • Make them versions specific. Show the version the comment was posted on on the comment.
        • Different date format. 2/1/2026 doesn't look good, and it doesn't follow my locale. (D/M/Y)
          • Replace at with @?
      • Cards
        • Add card field to packComment.
      • Files
        • Change card field to filePath.
          • Keep working on card page.
        • Display on file page
    • Likes
    • Replies
    • Reporting
    • Self-moderation.
    • Moderation.
  • Notifications
    • Your pack has been approved! (Click to view)
    • You have been given moderator status.
    • Support groups
    • You have been mentioned in the comments of a pack.
    • [BUG] Fix notifications not including /registry.
    • [BUG] Take you to the wrong place when pack approved.
  • Moderation tools
    • Add approving packs (toggleable)
    • Add review tools for approving packs.
      • GitHub-style tree to view files and folders. Click on the left to copy link. (Use # navigation.)
        • Internal notes. (This line looks suspicious. Can you look at it @ExampleModerator?)
      • Diffs
    • Dashboard.
      • Search
      • Delete pack
      • Rename pack
      • Ban account
        • Delete comments or orphan them (show commenter as "Deleted User").
      • Settings
        • Page size
        • Enable approve system
        • Max pack size
        • Max pack file amount
        • Pack allowed extensions
        • Allow
          • Creating accounts (Admins can bypass)
          • Logging in
          • Uploading packs
          • Downloading packs
          • ...
        • ...
      • ...
    • Event system. Alert moderator when an event happens. This is so that I get alerted every time someone uploads a pack, so that I can review it. (RSS feed?)
      • Discord bot?
  • [BUG] Fix mobile version.
    • Header
    • User
      • Edit User
      • Sidebar
    • PackSmall
    • Settings
    • Notifications
    • PackBig
      • Buttons
    • Contact
    • Rules
  • Change favicon to orange blue tinted version of the docs favicon.
  • Karma
    • Add karma
    • Actually add 100 instead of 1 karma.
    • Leaderboard
      • Opt-in
  • Logs (For statistics and to prevent moderator abuse)
    • key (user.login, moderate.approve, etc.)
    • value (JSON. Type based on the key. For user.login, value is { user: User }, for moderate.approve, the value is { moderator: User, packId: uuid, karma: number }, etc...)
    • Add to admin dashboard
      • Statistics / Pie-charts based on log key (and possibly value.)
  • Add components folder for easy reuse.
  • Add proper API so that it can be queried from the game.
    • Add latest route that routes to the latest stable version of the API.
    • Add next route that's unstable. This replaces the current v1 route. The website should use this route.
    • Use ids instead of @ownerName/-packName in API
    • Add OpenAPI (swagger?)
    • Scoped API keys
      • Should be hashed in the db.
      • Should be accessed as an env variable in the packager. Look at secrets api?
      • Add names to tokens
      • Split packs.upload based on username.
      • Refresh tokens
        • "Refresh Token" button
      • Delete tokens
      • "Sudo Tokens" to re-authenticate when adding a token.
    • Make sure the API is secure.
      • Pass 1
        • No-Auth endpoints
      • Pass 2
        • No-Auth endpoints
    • Move stuff from the server to the API.
  • Use tabs instead of html <details> in pack page like npm
  • pack.jsonc instead of metadata.jsonc
  • pack.json5 instead of pack.jsonc
  • Add ratelimits
  • Implement telescope support.
  • Validate name in packager. (No leading number, no dashes.)
  • [BUG] Fix no javascript issues
  • [BUG] Fix accessibility (a11y) issues.
    • Add "Skip to content" button in header
  • Do more stuff on the server instead of client. (Like getting the current / latest pack.)
  • Add links to the other pages (#428 #435)
  • Add new CI workflow for the website.
The registry is hosted on: https://hs.lunartides.dev/registry/ - [x] Packs - [x] Add `Pack` db column. - [x] Parse `meta.jsonc`. - [x] Add fields to the row. - [x] Add likes. - [x] Add dislikes. - [x] Allow showing the code in packs. - [x] [BUG] Force `typescript` language for `.ts` files. ~~My laptop doesn't render typescript files correctly for some reason.~~ Not client side apparently? - [ ] Show resource component when looking at it's file. - [x] Show `README.md` file on pack page. - [x] Use new `Bun.markdown` - [x] #454 - [x] Approve/Deny - [x] Add approving packs. - [x] Approved by. Allows seeing who approved the version. - [x] Add approve / deny message. - [x] Add denying packs. - [x] Unapprove packs. - [ ] Approve guidelines (Quality = More karma.) - [ ] Add automation for calculating karma using checkboxes (Has a README file, etc...) - [ ] Automatically check the checkboxes that the registry knows is true (Has a README file if the pack has a readme file.) - [ ] Self-moderation - [ ] Edit - [ ] Allow changing metadata from the pack page. - [x] Delete - [x] Versions - [ ] [BUG] Handle deleting all versions manually. - [x] All - [ ] [BUG] Fix final confirm dialogue being behind the footer. - [ ] Reporting - [ ] Add `additionalBadges` db column. - [x] Replace `/versions/0.2.0` -> `/v0.2.0` in url. - [x] Only allow 1 version per `packVersion`. You can just bump the patch version if it gets denied. - [x] Add `permissions` object in packs. `permissions: { network: false, fileSystem: false }` - [x] Add warning that the pack requires these permissions. - [ ] Add proper support for requires. - [ ] Add tags. - [ ] Replace `id` with `versionId` and `uuid` with `packId` - [x] Make sure the names work in TypeScript objects. (No starting with numbers, no dashes.) - [x] Show amount of bytes in tooltip when hovering over `Unpacked Size`. - [ ] Add dotted underline to show that there's a tooltip - [x] [BUG] Allow accessing settings of a pack uploaded to a group. - [ ] [BUG] Downloading only works on the README page. - [x] Cards - [x] Add `Card` db column. - [x] [BUG] Show correct card when on unapproved 0.2.0 when an approved 0.1.0 exists. (`From` is correct, but the card displayed is not.) - [ ] Add card representation. - [ ] Hearthstone.js - [ ] Vanilla, as an actual card. - [ ] Parse color tags. - [ ] Reporting - [x] #452 - [x] Show the code of the card on its page. - [x] This requires storing the cards path in the database under a new `filePath` column. Do this when uploading the pack. - [x] Color names / rarity of cards by their rarity. - [ ] Show heropowers in cards. - [ ] Other resources - [ ] Commands - [ ] SFXs - [ ] Systems - [x] Searching - [x] Search packs by uuid or name. - [x] Search cards by uuid or name. - [x] Show the pack the card is from. - [x] Order by download count. - [x] Add support for searching in-game. - [ ] [BUG] Search packs doesn't show loading, it waits for the result before loading the page. - [x] Search filter packs by approved. - [ ] Make searching smarter. - [ ] Add pagination to search frontend. - [x] Add versions. - [x] Add versions for packs. - [x] Add versions for cards. - [x] Add `isLatestVersion` on packs / cards. - [x] Make pack names non-unique for packs with the same uuid. - [x] Validate semver for pack version. - [x] Save packs to `/static/assets/packs/{packUUID}/{packVersion}/{packUUID}.7z` - [x] Add support multiple rows of the same version of the pack. - [x] Download. - [x] Route / API - [x] Disallow accessing `/static/assets` directly. - [x] Add download count. - [ ] [BUG] Clicking "Download" then liking / disliking the pack will keep downloading the pack over and over again. ~~*Cannot reproduce*~~ *Can reproduce* - [x] Add support for downloading in-game. - [x] Upload - [x] Parse blueprints after extracting pack. - [x] Add *all* bp fields to the row. - [x] Allow specifying owner and pack name when uploading, - [x] Add support for uploading in-game. - [ ] Parse enchantment priority correctly. - [ ] Validate metadata with zod. - [ ] Reject proprietary packs. - [ ] Delete pack from db if adding cards goes wrong. - [ ] Validate card (blueprint) with zod. - [ ] Add support for links. - [x] Use the new `Bun.Archive` instead of 7zip. - [x] Profile - [x] About me, pronouns, etc... - [x] See packs ~~and cards~~ - [x] Waiting for approval tag. - [x] Avatars - [ ] Fix in production - [ ] Reporting - [ ] Appearance settings - [ ] Custom themes - [ ] Dark/light mode - [ ] Self-moderation - [ ] Delete account - [ ] Change username to `DeletedAccount` and then a uuidv7. - [ ] Handle deleted users in the backend and frontend. - [ ] Change username - [ ] 1-6 Month cooldown, allow reclaiming username meanwhile, but don't allow changing it to something else. - [ ] Don't rely on usernames in api, use ids instead. - [ ] Moderation tools - [ ] Delete pack - [ ] Rename pack - [ ] Ban account - [ ] Delete account - [ ] Mute account - [ ] ... - [ ] Handle packs belonging to deleted accounts. - [ ] Add `additionalBadges` db column. - [ ] Make sure the names work in TypeScript objects. (No starting with numbers, no dashes.) - [x] [BUG] Fix the login regex (the `-` has to be escaped `\-`) - [ ] Prevent making users with the name "null" or "all". - [ ] Manage sessions - [ ] Reset password - [ ] Add email addresses - [ ] Add login via GitHub - [x] Groups - [x] Creating - [x] Editing - [ ] Managing members - [x] Add - [ ] Remove - [ ] Manage permissions - [x] `*` (All permissions.) - [ ] `pack.*` - [x] `pack.upload` - [ ] `pack.edit` - [ ] `group.*` - [x] `group.edit` - [ ] `member.*` - [x] `member.add` - [ ] `member.remove` - [ ] `member.edit.permissions` - [ ] `owner` (Can't be edited / removed by others outside of themself or the group manager. Only 1 user per group can have this permission.) - [x] Display - [x] Seperate from `UserBig` - [x] Show members (Not permissions) - [x] Add to right sidebar in user page. - [ ] Make sure the names work in TypeScript objects. (No starting with numbers, no dashes.) - [ ] Prevent making groups with the name "null" or "all". - [ ] Don't show invited users to non-members. - [x] [BUG] Fix remaining compatibility issues with users - [x] Leaderboard - [x] [BUG] Fix not working for regular users - [x] [BUG] Fix not working when not logged in - [x] Comments - [x] Add support for commenting on: - [x] Packs - [x] Display comments - [x] Like comments - [x] Post comment - [x] Authors can heart comments on their profile. (Can NOT delete.) - [x] [BUG] Too far down when logged out. - [x] [BUG] Avatar too big for some reason - [x] Make them versions specific. Show the version the comment was posted on on the comment. - [x] Different date format. `2/1/2026` doesn't look good, and it doesn't follow my locale. (D/M/Y) - [x] Replace `at` with `@`? - [x] Cards - [x] Add `card` field to `packComment`. - [x] Files - [x] Change `card` field to `filePath`. - [x] Keep working on card page. - [x] Display on file page - [x] Likes - [ ] Replies - [ ] Reporting - [x] Self-moderation. - [ ] Moderation. - [x] Notifications - [x] Your pack has been approved! (Click to view) - [x] You have been given moderator status. - [x] Support groups - [ ] You have been mentioned in the comments of a pack. - [x] [BUG] Fix notifications not including `/registry`. - [x] [BUG] Take you to the wrong place when pack approved. - [ ] Moderation tools - [x] Add approving packs (toggleable) - [x] Add review tools for approving packs. - [ ] GitHub-style tree to view files and folders. Click on the left to copy link. (Use # navigation.) - [ ] Internal notes. (This line looks suspicious. Can you look at it @ExampleModerator?) - [ ] Diffs - [x] Dashboard. - [ ] Search - [ ] Delete pack - [ ] Rename pack - [ ] Ban account - [ ] Delete comments or orphan them (show commenter as "Deleted User"). - [x] Settings - [x] Page size - [x] Enable approve system - [x] Max pack size - [x] Max pack file amount - [x] Pack allowed extensions - [ ] Allow - [ ] Creating accounts (Admins can bypass) - [ ] Logging in - [ ] Uploading packs - [ ] Downloading packs - [ ] ... - [ ] ... - [ ] ... - [x] Event system. Alert moderator when an event happens. This is so that I get alerted every time someone uploads a pack, so that I can review it. (RSS feed?) - [ ] Discord bot? - [x] [BUG] Fix mobile version. - [x] Header - [x] User - [x] Edit User - [x] Sidebar - [x] `PackSmall` - [ ] Settings - [x] Notifications - [x] `PackBig` - [x] Buttons - [x] Contact - [x] Rules - [x] Change favicon to ~~orange~~ blue tinted version of the docs favicon. - [x] Karma - [x] Add karma - [x] Actually add 100 instead of 1 karma. - [x] Leaderboard - [ ] Opt-in - [ ] Logs (For statistics and to prevent moderator abuse) - [ ] `key` (`user.login`, `moderate.approve`, etc.) - [ ] `value` (JSON. Type based on the key. For `user.login`, value is `{ user: User }`, for `moderate.approve`, the value is `{ moderator: User, packId: uuid, karma: number }`, etc...) - [ ] Add to admin dashboard - [ ] Statistics / Pie-charts based on log key (and possibly value.) - [x] Add components folder for easy reuse. - [x] Add proper API so that it can be queried from the game. - [x] Add `latest` route that routes to the latest stable version of the API. - [x] Add `next` route that's unstable. This replaces the current `v1` route. The website should use this route. - [ ] Use ids instead of `@ownerName/-packName` in API - [ ] Add OpenAPI (swagger?) - [x] Scoped API keys - [x] Should be hashed in the db. - [x] Should be accessed as an env variable in the packager. Look at secrets api? - [x] Add names to tokens - [x] Split `packs.upload` based on username. - [ ] Refresh tokens - [x] "Refresh Token" button - [ ] Delete tokens - [ ] "Sudo Tokens" to re-authenticate when adding a token. - [ ] Make sure the API is secure. - [ ] Pass 1 - [x] No-Auth endpoints - [ ] Pass 2 - [ ] No-Auth endpoints - [x] Move stuff from the server to the API. - [x] Use tabs instead of html `<details>` in pack page like [npm](https://www.npmjs.com/package/@inquirer/prompts) - [x] `pack.jsonc` instead of `metadata.jsonc` - [x] `pack.json5` instead of `pack.jsonc` - [ ] Add ratelimits - [ ] Implement `telescope` support. - [ ] Validate name in packager. (No leading number, no dashes.) - [ ] [BUG] Fix no javascript issues - [ ] [BUG] Fix accessibility (a11y) issues. - [ ] Add "Skip to content" button in header - [x] Do more stuff on the server instead of client. (Like getting the current / latest pack.) - [x] Add links to the other pages (#428 #435) - [ ] Add new CI workflow for the website.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
LunarTides/Hearthstone.js#446
No description provided.