Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
158 commits
Select commit Hold shift + click to select a range
766b971
fix: persist Overview tab score breakdown page number across navigati…
leonaIee Apr 14, 2026
597b537
fix: repo check tab of repository page (#202)
yunwei-zh Apr 14, 2026
31a43ad
feat: unify miner detail page with PR/Issue Discovery mode toggle (#179)
bittoby Apr 14, 2026
f84fec7
fix: readme relative links
tmimmanuel Mar 20, 2026
2d06528
fix: extract shared LinkRenderer and ImageRenderer into MarkdownRende…
tmimmanuel Mar 30, 2026
94c7888
fix: add MarkdownRenderers in index.ts
tmimmanuel Mar 30, 2026
b0d1409
fix: lint error
tmimmanuel Apr 1, 2026
953ae02
fix: simplify markdown renderers to a single resolveRelativeUrl helper
tmimmanuel Apr 9, 2026
f02831e
style: format code with prettier
tmimmanuel Apr 9, 2026
de4fcc5
Fix/leaderboard sidebar duplicate key (#124)
tmimmanuel Apr 13, 2026
23425f4
fix: prevent PR status chart text overflow at lg breakpoint (#144)
leonaIee Apr 13, 2026
3d8a40d
refactor: Extract duplicated monthly rewards calculation into shared …
corevibe555 Apr 13, 2026
9c83f10
Fix leaderboard page after tier removal (#131)
it-education-md Apr 13, 2026
af1aebc
fix: correct OSS Eligible badge tooltip credibility threshold (90% ->…
TeapoyY Apr 13, 2026
17a2768
fix: correct Step 7 credibility threshold to 80% (#188)
kiannidev Apr 13, 2026
a389a2f
Fix(UI): prevent repository name overflow in repositories table (#136)
silvanus930 Apr 13, 2026
53da8a9
refactor: Replace any types with parse-diff library types in PRFilesC…
corevibe555 Apr 13, 2026
0101a6e
fix: reset page to 0 when author filter chip is removed (#159)
Grizouforever Apr 13, 2026
aa8f93f
fix: correct FAQ reward description and credibility formula (#185)
xinmotlanthua Apr 13, 2026
94e9c26
fix: correct hardcoded credibility thresholds (75% → 80%) (#193)
aviu16 Apr 14, 2026
d3aa763
refactor: Extract duplicated truncateText to shared utils (#157)
corevibe555 Apr 14, 2026
42c71fb
fix: assign rank badges after sorting on Top Miners page (#169)
leonaIee Apr 14, 2026
a9a59fb
refactor: Replace any types with strict TypeScript types (#154)
corevibe555 Apr 14, 2026
1ed6682
fix(onboard): correct scoring facts and add Issue Discovery across Ab…
dataCenter430 Apr 14, 2026
14cee40
feat(search): add keyboard navigation and global shortcuts (Cmd+K, /,…
eureka0928 Apr 14, 2026
27292c6
refactor: Extract duplicated getRankIcon into shared RankIcon compone…
corevibe555 Apr 14, 2026
471bc2a
fix: rename /issues route to /bounties (#192)
anderdc Apr 14, 2026
10d9824
fix: persist PR list page number across navigation (#198)
leonaIee Apr 14, 2026
33ebf43
fix: use 'day(s)' in contribution heatmap label (#239)
anderdc Apr 14, 2026
831db9e
fix: rename PR Success Ratio to Credibility for consistency (#162) (#…
xinmotlanthua Apr 14, 2026
096753e
fix: persist Overview tab score breakdown page number across navigati…
leonaIee Apr 14, 2026
3a4e411
fix: repo check tab of repository page (#202)
yunwei-zh Apr 14, 2026
fd34e87
feat: unify miner detail page with PR/Issue Discovery mode toggle (#179)
bittoby Apr 14, 2026
bccfc3b
fix: correct back for repository page, and correct commiter (#204)
yunwei-zh Apr 14, 2026
5243d5e
Add issue leaderboard metrics to Discoveries without removing PR view…
spider-yamet Apr 14, 2026
2c94063
refactor: Extract duplicated credibilityColor to shared utils (#215)
dataCenter430 Apr 14, 2026
dcba4dc
refactor: extract duplicated issue status metadata to shared utils (#…
RenzoMXD Apr 14, 2026
df02739
chore: remove dayjs, consolidate date logic on date-fns (#234)
eureka0928 Apr 14, 2026
cbf1560
fix: NaN numeric rendering and standardize integer parsing (#255)
yunwei-zh Apr 14, 2026
e14cff0
refactor: extract duplicated PR status helpers to shared utils (#220)
RenzoMXD Apr 14, 2026
f3f3fc2
fix: onboard step7 active bg color (#209)
silvanus930 Apr 14, 2026
0915232
refactor: Extract duplicated formatDate to shared utils (#214)
dataCenter430 Apr 14, 2026
59cbd89
refactor: Extract duplicated FilterButton into shared component (#217)
dataCenter430 Apr 14, 2026
02e787e
feat(miner): click-to-copy hotkey on MinerScoreCard (#240)
eureka0928 Apr 14, 2026
a4046b0
refactor: Extract repeated border and text color literals to theme co…
dataCenter430 Apr 14, 2026
b2383c0
refactor: remove dead IssueDiscoveryScoreCard and standardize numeric…
MkDev11 Apr 15, 2026
dae7714
fix: add rel="noopener noreferrer" to remaining target="_blank" links…
edwin-rivera-dev Apr 15, 2026
38247f9
fix: unify scrollbar styles across code viewer and app (#249)
dataCenter430 Apr 15, 2026
4340d1d
fix: repo casing, react state, unstable list key (#261)
yunwei-zh Apr 15, 2026
7e480b9
feat: add issue-specific tab components for issue discovery mode (#242)
MkDev11 Apr 15, 2026
cb8d364
fix: adjust zIndex for AppBar in AppLayout component (#243)
carlh7777 Apr 15, 2026
16c39ea
refactor(dashboard): replace hardcoded colors with theme tokens (#252)
claytonlin1110 Apr 15, 2026
8931bf2
refactor(leaderboard): replace hardcoded colors with theme tokens (#256)
bittoby Apr 15, 2026
256bb4d
refactor: replace sidebar, FAQ, and selection hardcoded colors with t…
Helios531 Apr 15, 2026
7d6e8d2
feat: introduce RowLink primitive and migrate leaderboard (#266) (#269)
edwin-rivera-dev Apr 15, 2026
bcb0b20
refactor(prs): replace hardcoded colors with theme tokens (#262)
bittoby Apr 15, 2026
467fb7c
refactor(pages): replace hardcoded colors with theme tokens (#263)
DragunovX16 Apr 15, 2026
702ff09
refactor: extract duplicated cell styles from leaderboard tables into…
MkDev11 Apr 15, 2026
14eab0a
fix: send Insights docs link to issue-discovery doc in Discovery mode…
edwin-rivera-dev Apr 15, 2026
4dbcaba
feat: add docs link to Bounties page header (#274)
edwin-rivera-dev Apr 15, 2026
ef05f27
fix(miners): Score sort matches displayed value and Repository is sor…
eureka0928 Apr 15, 2026
07d81f3
fix: apply themed scrollbars to PR files changed panels (#310)
leonaIee Apr 15, 2026
a96c558
Redesign dashboard UI and align cards with theme styling (#272)
it-education-md Apr 15, 2026
6a1166f
fix: hide default webkit scrollbar button artifact in repo weights ta…
edwin-rivera-dev Apr 15, 2026
a45ebf6
feat: make Repository Pull Requests table columns sortable (#283)
edwin-rivera-dev Apr 15, 2026
7a17913
fix: abort in-flight fetches in repo viewers to prevent stale content…
edwin-rivera-dev Apr 15, 2026
f6ad1f2
fix: persist Top Miners filters in URL (#299)
jsdevninja Apr 15, 2026
674b084
fix: back button and scroll-to-top issues on tabbed pages (#312)
YB0y Apr 15, 2026
04e3f8a
refactor(miners): replace hardcoded colors with theme tokens (#314)
claytonlin1110 Apr 15, 2026
406abe5
feat: add two-tier ErrorBoundary with graceful fallback UI (#322)
edwin-rivera-dev Apr 15, 2026
b6f796d
refactor: Replace hardcoded colors in repository components with them…
MkDev11 Apr 15, 2026
8844e9d
feat: add live activity status filter tabs to dashboard sidebar (#304)
bittoby Apr 15, 2026
b161bc9
refactor: replace inline FilterButton in TopMinersTable with shared c…
dataCenter430 Apr 15, 2026
ff03d78
feat: group Scoring cards into OSS / Discovery sub-tabs (#306)
edwin-rivera-dev Apr 15, 2026
1033c77
fix: add mergedAt fallback to merged PR detection in stats and utils …
dataCenter430 Apr 15, 2026
ef666c6
Show percentage in dashboard overview donut center (#328)
it-education-md Apr 15, 2026
f3e517d
refactor: extract duplicated headerCellStyle/bodyCellStyle into share…
dataCenter430 Apr 15, 2026
be72976
fix: remove N+1 PR details requests from LiveCommitLog (#332)
edwin-rivera-dev Apr 16, 2026
3c3d21d
refactor: replace hardcoded colors in issue components with theme tok…
MkDev11 Apr 16, 2026
c9f66ce
feat: add codeDensity, label, and labelMultiplier to PR API models (#…
anderdc Apr 16, 2026
c493ee7
refactor: replace hardcoded colors with theme tokens in PRDetailsCard…
MkDev11 Apr 16, 2026
965e210
refactor: remove dead MinerFocusCard component (#341)
statxc Apr 16, 2026
f7310cb
fix: use parseFloat instead of Number() to prevent NaN in PR score di…
dataCenter430 Apr 16, 2026
1b0339d
refactor: use shared TablePagination in MinerPRsTabl (#344)
statxc Apr 16, 2026
980eed9
feat: add miner watchlist with localStorage persistence (#331)
edwin-rivera-dev Apr 16, 2026
12a621e
refactor: remove dead TopPRsTable component (#346)
statxc Apr 16, 2026
11bfe6e
chore: merge main into test to reconcile diverged histories
LandynDev Apr 16, 2026
653024c
chore: reconcile main into test (#412)
LandynDev Apr 16, 2026
619762f
chore: reconcile main into test (graph fix) (#419)
LandynDev Apr 16, 2026
c978c6b
chore: add release workflows (promote, schedule, source-lock) (#427)
LandynDev Apr 16, 2026
daab861
chore: use PAT for release push so admin bypass applies
LandynDev Apr 16, 2026
6b87ad0
chore: remove scheduler and poller workflows (#431)
LandynDev Apr 16, 2026
3d9c9e3
fix: discoveries miner card shows issue stats only (#292)
Dexterity104 Apr 16, 2026
2adddcf
Feat/repositories chart table parity (#308)
edwin-rivera-dev Apr 16, 2026
aedbaec
feat: display code density and label multiplier in score breakdowns (…
MkDev11 Apr 16, 2026
8767fea
fix(layout): prevent mobile scroll area from hiding under fixed heade…
carlh7777 Apr 16, 2026
1bae694
Refactor/remove use issue (#359)
wdeveloper16 Apr 16, 2026
adac534
refactor: extract MONO_FONT constant to theme.ts and replace all hard…
dataCenter430 Apr 16, 2026
d0c6fae
fix: move issue score breakdown to Overview tab, remove mislabeled Is…
edwin-rivera-dev Apr 16, 2026
500809e
fix(miner-activity): show contribution heatmap tooltips immediately o…
carlh7777 Apr 16, 2026
421ce57
Persist miner PR filter in URL (#390)
jsdevninja Apr 16, 2026
f34f806
fix: redesign 404 page with recovery actions and consistent styling (…
edwin-rivera-dev Apr 16, 2026
f022e36
refactor: replace hardcoded colors with theme tokens (#361)
claytonlin1110 Apr 16, 2026
9210d15
refactor: standardize numeric parsing in MinerScoreCard and MinerScor…
jerryzai Apr 16, 2026
7accc77
feat: add Active/Inactive filter buttons to repositories table (#381)
plind-junior Apr 16, 2026
2d6100e
refactor: remove unused useHistoricalTrend hook from DashboardApi (#369)
dev-miro26 Apr 16, 2026
46c9e69
feat: persist filters and list state in URL query params (#367)
jony376 Apr 16, 2026
0e8ed86
refactor: replace duplicated bounty status helpers in RepositoryIssue…
RenzoMXD Apr 16, 2026
4f0a4da
refactor: replace remaining any types with strict ECharts and parse-d…
RenzoMXD Apr 16, 2026
a583fc6
fix: improve mobile responsiveness in SectionCard and TopMinersTable …
carlh7777 Apr 16, 2026
aca1384
fix: remove irrelevant PRs sort from discoveries leaderboard (#378)
edwin-rivera-dev Apr 16, 2026
8bc2512
[UX] feat: add loading skeletons for leaderboard tables (#357)
edwin-rivera-dev Apr 16, 2026
4924dcc
refactor: extract duplicated tooltipSlotProps to shared theme constan…
RenzoMXD Apr 16, 2026
525d22a
fix: correct issue credibility formula and add missing stat tooltips …
edwin-rivera-dev Apr 16, 2026
a69aa79
fix: add FAQ tab to Onboard and redirect orphaned /about and /faq rou…
edwin-rivera-dev Apr 16, 2026
aaa0f27
feat(bounties): add sortable columns and align sorting UX with reposi…
carlh7777 Apr 16, 2026
d33129a
refactor: extract shared PR table helpers and remove duplicate status…
statxc Apr 17, 2026
7a437ae
fix: use issue counts for MinerCard donut chart on discoveries page (…
edwin-rivera-dev Apr 17, 2026
4f9c6ee
fix: improve bounties help text spacing in header (#388)
jimcody1995 Apr 17, 2026
cfc6cc4
refactor: replace hardcoded colors and date formatting with theme tok…
leonaIee Apr 17, 2026
2348f26
feat: grey out stale repos and scores outside 35-day scoring window (…
plind-junior Apr 17, 2026
3046749
feat: open any row in a new tab (#266) (#313)
fansilas Apr 17, 2026
65dcb66
feat: dual donut charts, issue stats, and Issues sort on watchlist ca…
edwin-rivera-dev Apr 17, 2026
5f1cbce
feat: add pre-commit hooks with husky and lint-staged (#441)
seroperson Apr 17, 2026
d282fbe
Copy Button UX Improvement — Getting Started Page (#459)
dataCenter430 Apr 17, 2026
be45385
feat(leaderboard): replace eligibility toggle with tri-state segmente…
YB0y Apr 17, 2026
b53f2a2
search input width updated in repositories route page (#483)
francmart514 Apr 17, 2026
787ba38
feat: display structural and leaf token score breakdown in score view…
edwin-rivera-dev Apr 17, 2026
7c8e83c
Fix Watchlist eligibility ambiguity (OSS vs Discoveries) (#500)
yunwei-zh Apr 17, 2026
5fa3af7
fix: inconsistent scrollbar usage across 10+ files and components (#463)
dataCenter430 Apr 17, 2026
9b3f13d
*fix(routing): correct PR and repository detail fallbacks to register…
seekmistar01 Apr 17, 2026
8a19ab8
fix: improve the FAQ expressions and add a new entry for issue discov…
dataCenter430 Apr 17, 2026
735f9af
feat(top-repositories): improve mobile search interaction (#442)
carlh7777 Apr 17, 2026
18a7bdc
feat(search): enhance SearchInput component with additional props and…
carlh7777 Apr 17, 2026
8b7b190
fix(issues): align KPI label with “Available Issues” tab wording (#451)
seekmistar01 Apr 17, 2026
3423377
fix: repository chart unusable when sorted by Weight (#467)
leonaIee Apr 17, 2026
cf93947
Refactor/extract shared price formatters (#494)
edwin-rivera-dev Apr 17, 2026
2cb5113
fix(discoveries): remove duplicate issue stats row from miner cards (…
bittoby Apr 17, 2026
a005f57
feature: place oss eligibility badge below miner name consistently (#…
EndlessLucky Apr 17, 2026
b625db4
Merge branch 'test' of https://github.com/entrius/gittensor-ui into f…
carlh7777 Apr 19, 2026
f4a1637
feat(leaderboard): add list view to miners leaderboard (#444)
bittoby Apr 20, 2026
d99b63e
feat: expand watchlist to track repos, bounties, and pull requests (#…
MkDev11 Apr 20, 2026
81cac48
feat(repositories): add card view toggle to Repositories page (#464)
MkDev11 Apr 20, 2026
a788e40
fix: prevent mobile clipping of issue discovery toggle label (#519)
EndlessLucky Apr 20, 2026
91a42ac
feat(miners): add status filter to PR Score Breakdown on miner detail…
bittoby Apr 20, 2026
f782afe
fix: polish sidebar hover and watchlist dialog styling (#544)
plind-junior Apr 21, 2026
2938e1f
Migrate remaining tables onto shared DataTable + useDataTableParams (…
bittoby Apr 21, 2026
ab287f0
Merge branch 'test' of https://github.com/entrius/gittensor-ui into f…
carlh7777 Apr 21, 2026
9395673
fix: add external-link icon to bounties docs hint (#559)
edwin-rivera-dev Apr 21, 2026
b95fb24
refactor: remove redundant inline fontFamily strings (#588)
dataCenter430 Apr 21, 2026
66548e9
fix(mobile): improve onboarding card alignment and visual consistency…
carlh7777 Apr 21, 2026
27c7fbf
refactor: keep consistency for tables across all pages (#541)
dataCenter430 Apr 21, 2026
331e58c
fix(dashboard): track closed PRs/issues and use miner aggregates for …
statxc Apr 21, 2026
4e60cc1
change mobile layout of miner detail page (#581)
EndlessLucky Apr 21, 2026
dde7698
fix(mobile): restructure Miner Details header and profile card for be…
carlh7777 Apr 21, 2026
940472b
feat: add rightSideBar that shows new info for the miners in watchlis…
dataCenter430 Apr 21, 2026
ad816b9
fix(pr): improve mobile Files Changed layout and fix rendering/perf i…
carlh7777 Apr 21, 2026
0243df2
Merge branch 'test' of https://github.com/entrius/gittensor-ui into f…
carlh7777 Apr 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .github/workflows/pr-source-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: pr-source-check

on:
pull_request:
branches: [main]

jobs:
pr-source-check:
runs-on: ubuntu-latest
steps:
- name: Enforce source = test for PRs into main
run: |
if [ "${{ github.event.pull_request.head.ref }}" != "test" ]; then
echo "::error::PRs into main must originate from 'test'. Head is '${{ github.event.pull_request.head.ref }}'."
echo "::error::Open your PR against 'test' instead. main only advances via the Release workflow."
exit 1
fi
echo "PR source is 'test' — allowed."
80 changes: 80 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: Release (promote test → main)

on:
workflow_dispatch:
inputs:
dry_run:
description: 'Dry run — show what would happen, do not push'
type: boolean
default: false
workflow_call:
inputs:
dry_run:
type: boolean
default: false

permissions:
contents: write

concurrency:
group: release-${{ github.repository }}
cancel-in-progress: false

jobs:
promote:
runs-on: ubuntu-latest
steps:
- name: Checkout (full history)
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: test
token: ${{ secrets.RELEASE_TOKEN }}

- name: Verify main is ancestor of test
run: |
git fetch origin main:refs/remotes/origin/main
if ! git merge-base --is-ancestor origin/main origin/test; then
echo "::error::main is not an ancestor of test. Reconcile manually before promoting."
exit 1
fi
ahead=$(git rev-list --count origin/main..origin/test)
echo "main is behind test by $ahead commit(s). Ready to fast-forward."
echo "AHEAD=$ahead" >> $GITHUB_ENV

- name: Tag release
run: |
TAG="release-$(date -u +%Y%m%d-%H%M%S)"
git tag "$TAG" origin/test
echo "TAG=$TAG" >> $GITHUB_ENV

- name: Fast-forward main → test
if: ${{ !inputs.dry_run }}
run: |
git push origin "refs/remotes/origin/test:refs/heads/main"
git push origin "$TAG"
echo "::notice::Promoted $AHEAD commits to main. Tagged $TAG."

- name: Notify Discord
if: ${{ !inputs.dry_run && env.DISCORD_WEBHOOK != '' }}
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
run: |
repo="${{ github.repository }}"
sha=$(git rev-parse origin/test)
short_sha="${sha:0:7}"
compare_url="https://github.com/${repo}/compare/${TAG}...main"
tag_url="https://github.com/${repo}/releases/tag/${TAG}"
payload=$(jq -n \
--arg content "🚀 **${repo}** released \`${TAG}\` — promoted **${AHEAD}** commit(s) to \`main\` (\`${short_sha}\`)." \
--arg tag "$tag_url" \
--arg cmp "$compare_url" \
'{content: $content, embeds: [{title: "View tag", url: $tag}, {title: "Diff", url: $cmp}]}')
curl -sS -H "Content-Type: application/json" -X POST -d "$payload" "$DISCORD_WEBHOOK"

- name: Dry run summary
if: ${{ inputs.dry_run }}
run: |
echo "DRY RUN — would fast-forward main to $(git rev-parse origin/test)"
echo "Tag would be: $TAG"
git log --oneline origin/main..origin/test | head -50
1 change: 1 addition & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
npx lint-staged
28 changes: 28 additions & 0 deletions lint-staged.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import path from 'path';
import process from 'process';

function toRelativePaths(filenames) {
const cwd = process.cwd();
return filenames.map((f) => path.relative(cwd, f));
}

function buildEslintCommand(filenames) {
const files = toRelativePaths(filenames).join(' ');
return `eslint --fix --max-warnings 0 ${files}`;
}

function buildPrettierCommand(filenames) {
return `prettier --write ${filenames.join(' ')}`;
}

export default {
'*.{ts,tsx}': (filenames) => [
buildEslintCommand(filenames),
buildPrettierCommand(filenames),
],
'*.{js,jsx,mjs}': (filenames) => [
buildEslintCommand(filenames),
buildPrettierCommand(filenames),
],
'*.{json,css,html,md}': (filenames) => [buildPrettierCommand(filenames)],
};
Loading
Loading