-
Notifications
You must be signed in to change notification settings - Fork 29
Document feature parity #1180
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Document feature parity #1180
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,97 @@ | ||||||||||||||
| # Feature Parity Document: Legacy vs New App | ||||||||||||||
|
|
||||||||||||||
| **Legacy App:** [thunderstore.io](https://thunderstore.io) | ||||||||||||||
| **New App:** [new.thunderstore.io](https://new.thunderstore.io) | ||||||||||||||
| **Local API docs:** [DOCS](http://localhost.thunderstore/api/docs) | ||||||||||||||
| --- | ||||||||||||||
|
|
||||||||||||||
| ## Status Legend | ||||||||||||||
|
|
||||||||||||||
| - ✅ Complete | ||||||||||||||
| - ⚠️ Partial | ||||||||||||||
| - ❌ Missing | ||||||||||||||
|
|
||||||||||||||
| --- | ||||||||||||||
|
|
||||||||||||||
| ## Feature Comparison | ||||||||||||||
|
|
||||||||||||||
| ### Complete | ||||||||||||||
|
|
||||||||||||||
| #### Community | ||||||||||||||
|
|
||||||||||||||
| | Feature | Legacy App | New App | Status | Notes | | ||||||||||||||
| |---------|------------|---------|--------|-------| | ||||||||||||||
| |Get community list| ✅ | ✅ | Complete | GET /community/ | | ||||||||||||||
| |Get community| ✅ | ✅ | Complete | GET /community/{community_id}/ | | ||||||||||||||
| |Filter community| ✅ | ✅ | Complete | GET /community/{community_id}/filters/ | | ||||||||||||||
|
|
||||||||||||||
| #### Package listing | ||||||||||||||
|
|
||||||||||||||
| | Feature | Legacy App | New App | Status | Notes | | ||||||||||||||
| |---------|------------|---------|--------|-------| | ||||||||||||||
| |Get listing list for community| ✅ | ✅ | Complete | GET /listing/{community_id}/ | | ||||||||||||||
| |Get listing with community and namespace| ✅ | ✅ | Complete | GET /listing/{community_id}/{namespace_id}/ | | ||||||||||||||
| |Get listing with community, namespace and package name| ✅ | ✅ | Complete | GET /listing/{community_id}/{namespace_id}/{package_name}/ | | ||||||||||||||
| |Approve package listing| ✅ | ✅ | Complete | POST /listing/{community_id}/{namespace_id}/{package_name}/approve/ | | ||||||||||||||
| |Get packages depending on this package| ✅ | ✅ | Complete | GET /listing/{community_id}/{namespace_id}/{package_name}/dependants/ | | ||||||||||||||
| |Reject a package listing| ✅ | ✅ | Complete | POST /listing/{community_id}/{namespace_id}/{package_name}/reject/ | | ||||||||||||||
| |Update a package listing| ✅ | ✅ | Complete | POST /listing/{community_id}/{namespace_id}/{package_name}/update/ | | ||||||||||||||
|
|
||||||||||||||
| #### Package | ||||||||||||||
|
|
||||||||||||||
| | Feature | Legacy App | New App | Status | Notes | | ||||||||||||||
| |---------|------------|---------|--------|-------| | ||||||||||||||
| |Get the permissions for a package| ✅ | ✅ | Complete | GET /package/{community_id}/{namespace_id}/{package_name}/permissions/ | | ||||||||||||||
| |Deprecate a package| ✅ | ✅ | Complete | POST /package/{namespace_id}/{package_name}/deprecate/ | | ||||||||||||||
| |Get package changelog as html| ✅ | ✅ | Complete | GET /package/{namespace_id}/{package_name}/latest/changelog/ | | ||||||||||||||
| |Get package readme as html| ✅ | ✅ | Complete | GET /package/{namespace_id}/{package_name}/latest/readme/ | | ||||||||||||||
| |Rate a package| ✅ | ✅ | Complete | POST /package/{namespace_id}/{package_name}/rate/ | | ||||||||||||||
| |Get package version changelog| ✅ | ✅ | Complete | GET /package/{namespace_id}/{package_name}/v/{version_number}/changelog/ | | ||||||||||||||
| |Get package version readme| ✅ | ✅ | Complete | GET /package/{namespace_id}/{package_name}/v/{version_number}/readme/ | | ||||||||||||||
| |Get all versions for package| ✅ | ✅ | Complete | GET /package/{namespace_id}/{package_name}/versions/ | | ||||||||||||||
|
|
||||||||||||||
| #### Team | ||||||||||||||
|
|
||||||||||||||
| | Feature | Legacy App | New App | Status | Notes | | ||||||||||||||
| |---------|------------|---------|--------|-------| | ||||||||||||||
| |Create a new team| ✅ | ✅ | Complete | POST /team/create/ | | ||||||||||||||
| |Get team info| ✅ | ✅ | Complete | GET /team/{team_id}/ | | ||||||||||||||
| |Get list of team members| ✅ | ✅ | Complete | GET /team/{team_id}/member/ | | ||||||||||||||
| |Get service accounts for team| ✅ | ✅ | Complete | GET /team/{team_id}/service-account/ | | ||||||||||||||
| |Disband a team| ✅ | ✅ | Complete | DELETE /team/{team_name}/disband/ | | ||||||||||||||
| |Add a new team member to a team| ✅ | ✅ | Complete | POST /team/{team_name}/member/add/ | | ||||||||||||||
| |Update team details| ✅ | ✅ | Complete | PATCH /team/{team_name}/update/ | | ||||||||||||||
|
Comment on lines
+58
to
+63
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Verification agent 🧩 Analysis chainParameter naming mixes team_id and team_name; verify accuracy. Rows use 🏁 Script executed: #!/bin/bash
# Inspect team routes to confirm param names
rg -nP -C2 'team/\{(team_id|team_name)\}/|member/(add|)|disband|update' --type=py --type=ts --type=tsxLength of output: 27 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "Checking repository for team route placeholders and related endpoints..."
if command -v rg >/dev/null 2>&1; then
rg -n -C2 'team/\{team_id\}' || true
rg -n -C2 'team/\{team_name\}' || true
rg -n -C2 '/team/\{' || true
rg -n -C2 'disband' || true
rg -n -C2 'member/add' || true
if [ -f docs/thunderstore_feature_parity.md ]; then
echo
echo "docs/thunderstore_feature_parity.md lines 58-63:"
sed -n '58,63p' docs/thunderstore_feature_parity.md || true
else
echo "docs/thunderstore_feature_parity.md not found"
fi
else
echo "rg (ripgrep) not found — falling back to grep"
grep -R -n -C2 -F 'team/{team_id}' || true
grep -R -n -C2 -F 'team/{team_name}' || true
grep -R -n -C2 -F '/team/{' || true
grep -R -n -C2 -F 'disband' || true
grep -R -n -C2 -F 'member/add' || true
if [ -f docs/thunderstore_feature_parity.md ]; then
echo
echo "docs/thunderstore_feature_parity.md lines 58-63:"
sed -n '58,63p' docs/thunderstore_feature_parity.md || true
else
echo "docs/thunderstore_feature_parity.md not found"
fi
fiLength of output: 50070 Use {team_name} (not {team_id}) in the docs — code uses name/slug. Code and tests consistently use team_name (e.g. django/thunderstore/api/urls.py uses "team/str:team_name/", views/services accept kwargs/team_name, tests call /api/cyberstorm/team/{team.name}/). Update docs/thunderstore_feature_parity.md (lines 58–63) to replace {team_id} with {team_name} (or add an explicit note only if the API intentionally accepts both). 🤖 Prompt for AI Agents |
||||||||||||||
|
|
||||||||||||||
|
|
||||||||||||||
| ### Partial | ||||||||||||||
|
|
||||||||||||||
| | Feature | Legacy App | New App | Status | Notes | | ||||||||||||||
| |---------|------------|---------|--------|-------| | ||||||||||||||
| | Get Package Listing status info | ✅ | ⚠️ | Partial | In review [PR](https://github.com/thunderstore-io/Thunderstore/pull/1179) | | ||||||||||||||
| | Unlist Package | ✅ | ⚠️ | Partial | In review [PR](https://github.com/thunderstore-io/Thunderstore/pull/1178) | | ||||||||||||||
| | Fetch package source | ✅ | ⚠️ | Partial | In review [PR](https://github.com/thunderstore-io/Thunderstore/pull/1094) | | ||||||||||||||
| | Create service account | ✅ | ⚠️ | Partial | In review [PR](https://github.com/thunderstore-io/Thunderstore/pull/1098) | | ||||||||||||||
| | Delete service account | ✅ | ⚠️ | Partial | In review [PR](https://github.com/thunderstore-io/Thunderstore/pull/1098) | | ||||||||||||||
| | Delete user | ✅ | ⚠️ | Partial | In review [PR](https://github.com/thunderstore-io/Thunderstore/pull/1114) | | ||||||||||||||
| | Delete social auth account | ✅ | ⚠️ | Partial | In review [PR](https://github.com/thunderstore-io/Thunderstore/pull/1114) | | ||||||||||||||
| | Update team member info | ✅ | ⚠️ | Partial | In review [PR](https://github.com/thunderstore-io/Thunderstore/pull/1117) | | ||||||||||||||
| | Delete team member | ✅ | ⚠️ | Partial | In review [PR](https://github.com/thunderstore-io/Thunderstore/pull/1118) | | ||||||||||||||
|
|
||||||||||||||
|
|
||||||||||||||
| ### Missing | ||||||||||||||
|
|
||||||||||||||
| | Feature | Legacy App | New App | Status | Notes | | ||||||||||||||
| |---------|------------|---------|--------|-------| | ||||||||||||||
| | Leave team | ✅ | ❌ | TODO | No API endpoint | | ||||||||||||||
| | Report package | ✅ | ❌ | TODO | No Cyberstorm API endpoint - exists in experimental API | | ||||||||||||||
| | Upload new package | ✅ | ❌ | TODO? | How should this be handled? | | ||||||||||||||
|
|
||||||||||||||
|
Comment on lines
+85
to
+88
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Normalize Status values to match the legend. Legend uses Complete/Partial/Missing, but rows use “TODO”/“TODO?”. Swap to “Missing” for consistency and clearer scanning. -| Leave team | ✅ | ❌ | TODO | No API endpoint |
-| Report package | ✅ | ❌ | TODO | No Cyberstorm API endpoint - exists in experimental API |
-| Upload new package | ✅ | ❌ | TODO? | How should this be handled? |
+| Leave team | ✅ | ❌ | Missing | No API endpoint |
+| Report package | ✅ | ❌ | Missing | No Cyberstorm API endpoint — exists in experimental API |
+| Upload new package | ✅ | ❌ | Missing | How should this be handled? |📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||
|
|
||||||||||||||
| --- | ||||||||||||||
|
|
||||||||||||||
| ## Notes & Recommendations | ||||||||||||||
|
|
||||||||||||||
| - Prioritize high-impact missing features. | ||||||||||||||
| - Identify API gaps that block feature parity. | ||||||||||||||
| - Suggest roadmap or implementation order if possible. | ||||||||||||||
|
|
||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Fix unintended setext heading (markdownlint MD003).
The
---directly under “Local API docs” turns that line into a setext H2 instead of an HR. Insert a blank line before the dashes (or use three asterisks).📝 Committable suggestion
🤖 Prompt for AI Agents