Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
1904750
vendor: dioxus-primitives, dioxus-attributes, dioxus-sdk-time shim (0…
jkelleyrtp Sep 11, 2026
cb4f6a1
scaffold: workspace, dioxus-status crate, assets, init migration
jkelleyrtp Sep 11, 2026
601f53f
backend: github/crates.io collectors, scoring, sqlite layer, server fns
jkelleyrtp Sep 11, 2026
3bcf371
ui: layout, overview, PR table with filters, issues, repos, health, s…
jkelleyrtp Sep 11, 2026
1cb41b2
fix stars 7d delta, sync closed/merged PRs and closed issues, fix hyd…
jkelleyrtp Sep 12, 2026
380f155
github: labels on closed sync, targeted lifecycle updates, app auth
jkelleyrtp Sep 12, 2026
4b6a063
devin workbench backend: v3 client, actions, budget, poller, server fns
jkelleyrtp Sep 12, 2026
276622e
ui: /bots page, PR detail Devin section, settings budget, overview card
jkelleyrtp Sep 12, 2026
5aa406d
fix devin assess finish + budget ordering + hydration serialization
jkelleyrtp Sep 12, 2026
78f1bad
share dx cargo profiles; working+detail keeps polling; add budget_che…
jkelleyrtp Sep 12, 2026
ca5e882
Read credentials from DIOXUS_STATUS_-prefixed env vars as fallback
jkelleyrtp Sep 12, 2026
cac5b97
ui: top navbar, dark html, shared admin state, colored author
jkelleyrtp Sep 12, 2026
ecdc38c
prs: sticky rows, column picker, devin assess column; repos sort; ci
jkelleyrtp Sep 12, 2026
666d169
clippy: sort_by_key for repo sorting (unnecessary_sort_by on stable)
jkelleyrtp Sep 12, 2026
d8e4569
fix sort_by_key lifetime on pushed_at comparator
jkelleyrtp Sep 12, 2026
b98d882
releases backend: merged-pr backfill, milestones, release targets, ch…
jkelleyrtp Sep 12, 2026
8257e4e
releases ui: overview cards, per-repo detail with changelog, mileston…
jkelleyrtp Sep 12, 2026
9c8c1de
releases: shared changelog table; drop closed milestones on sync
jkelleyrtp Sep 12, 2026
54054c7
ui: use vendored components for filters and columns menu
jkelleyrtp Sep 12, 2026
816cbdb
theme: define dioxus-components tokens on our palette; right-align co…
jkelleyrtp Sep 12, 2026
82c1b6e
ui: fix checkbox sizing in columns menu
jkelleyrtp Sep 12, 2026
9bd4ddf
ui: stale-while-revalidate page cache
jkelleyrtp Sep 12, 2026
ccb6c49
ui: seed cached value on key change
jkelleyrtp Sep 12, 2026
16cafa1
ui: charts fit card width
jkelleyrtp Sep 12, 2026
f3d6d12
overview: repo filter
jkelleyrtp Sep 12, 2026
c958c3d
overview: explicit repo filter model
jkelleyrtp Sep 12, 2026
496c8bb
deslop: typed action/sync kinds
jkelleyrtp Sep 12, 2026
ed6318b
deslop: shared helpers, constants
jkelleyrtp Sep 12, 2026
f212d04
deslop: ui hooks
jkelleyrtp Sep 12, 2026
bfc1e4e
Start collectors when GitHub App auth is configured
jkelleyrtp Oct 15, 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
33 changes: 33 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Every credential below is also read from a DIOXUS_STATUS_-prefixed name
# (e.g. DIOXUS_STATUS_DEVIN_API_KEY), matching the org-level Devin secrets.

# GitHub token with read access to the DioxusLabs org (public repos is enough)
GITHUB_TOKEN=

# GitHub App auth (preferred over GITHUB_TOKEN when the app is installed).
# Provide the PEM either inline (literal \n allowed) or via path.
GITHUB_APP_ID=
GITHUB_APP_PRIVATE_KEY=
GITHUB_APP_PRIVATE_KEY_PATH=
# Optional: skip installation discovery (otherwise /app/installations is searched for the org)
GITHUB_APP_INSTALLATION_ID=

# Shared secret for admin mutations via /settings login
ADMIN_TOKEN=

# Devin API (v3, org-scoped)
DEVIN_API_KEY=
DEVIN_ORG_ID=
DEVIN_API_BASE=https://api.devin.ai

# Optional: Anthropic (later phases)
ANTHROPIC_API_KEY=

# SQLite data directory
DATA_DIR=./_data

# Port (also settable by dx serve --port)
PORT=8080

# Daily cap on LLM assessment calls
LLM_DAILY_BUDGET=50
21 changes: 21 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: ci

on:
push:
branches: [master]
pull_request:

jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
targets: wasm32-unknown-unknown
- uses: Swatinem/rust-cache@v2
- run: cargo fmt --all -- --check
- run: cargo clippy -p dioxus-status --features server --profile server-dev --target x86_64-unknown-linux-gnu -- -D warnings
- run: cargo clippy -p dioxus-status --features web --target wasm32-unknown-unknown --profile wasm-dev -- -D warnings
- run: cargo test -p dioxus-status --features server --profile server-dev --target x86_64-unknown-linux-gnu
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
/target
**/dist
_data/
.env
46 changes: 46 additions & 0 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Architecture (implementation notes)

Single Dioxus 0.8 fullstack crate, modelled on `skyvm-web` (see /home/ubuntu/repos/skyvm/packages/skyvm-web).

```
Cargo.toml workspace: packages/status, vendor/*
packages/status/
Cargo.toml name = "dioxus-status"; features web / server
Dioxus.toml
assets/ main.css, dx-components-theme.css (from dioxus-components 0.8 branch)
src/
main.rs Route enum, App, launch; server: init db + start collectors
components/ vendored styled components from dioxus-components (button, badge, card,
input, select, tabs, dialog, tooltip, checkbox, switch, progress, separator,
dropdown_menu, toast, table-ish) — copied from preview/src/components
model/ shared serde types (Pr, Issue, Repo, Score, Assessment, CrateStats, ...)
api/ server fns: #[get]/#[post]; the only client<->server boundary
backend/ (cfg server) db.rs (sqlx sqlite + migrations/), github.rs (octocrab GraphQL/REST),
crates_io.rs, scoring.rs, collector.rs (scheduler), devin.rs, anthropic.rs,
auth.rs (admin session cookie / github oauth)
ui/ pages + shared layout
vendor/
dioxus-primitives/ copied from DioxusLabs/dioxus-components branch 0.8 (primitives/)
dioxus-attributes/ same repo (dioxus-attributes/)
migrations/ sqlx sql migrations
Dockerfile, fly.toml
```

Build notes: `dx` uses `--profile server-dev` (host, `--target x86_64-unknown-linux-gnu`) and
`--profile wasm-dev` (wasm32); both are declared in the workspace `Cargo.toml` (inherit `dev`) so
plain cargo shares dx's artifact dirs — see README "Development" for the canonical check/clippy/test
commands. `cargo test` is the exception: the `dioxus-ssr` dev-dep changes feature resolution, so it
builds its own dep tree once per profile dir.

Env vars: `GITHUB_TOKEN` (fallback), `GITHUB_APP_ID`, `GITHUB_APP_PRIVATE_KEY` or `GITHUB_APP_PRIVATE_KEY_PATH`,
`GITHUB_APP_INSTALLATION_ID` (optional; discovered via `/app/installations`), `DEVIN_API_KEY`, `DEVIN_ORG_ID`,
`DEVIN_API_BASE` (default https://api.devin.ai; calls go to `{base}/v3/organizations/{org}/sessions`), `ANTHROPIC_API_KEY`,
`LLM_DAILY_BUDGET` (default 50; overridable via `settings.llm_daily_budget`),
`ADMIN_TOKEN` (shared secret for mutation auth in v1), `DATA_DIR` (default `./_data`), `PORT`.

Auth model: all pages public. Mutations (settings changes, dispatch Devin, assess with LLM, roadmap admin) require an
admin session (cookie set by `/settings` login with `ADMIN_TOKEN`; GitHub OAuth org-member login is the follow-up).
Public voting on roadmap items needs no auth (anonymous voter id cookie + rate limit).

LLM policy: never called in background. Only the explicit "Assess" action calls Anthropic, result cached per
(pr, head_sha); daily cap `LLM_DAILY_BUDGET` (default 50 calls).
Loading
Loading