No description
- Lua 85.1%
- Shell 13.4%
- Rust 1.5%
|
Some checks failed
Validate Manifests / validate (push) Failing after 1s
Adds lib/github_graphql.lua wrapping the contributionsCollection GraphQL query. When a token is supplied, lib/github.lua now populates the two ProGitProfile/v1 contribution fields: - last_12mo_count: from contributionCalendar.totalContributions - longest_streak_days: walks the daily array and counts the longest consecutive run of days with contributionCount > 0 Anonymous calls leave both fields at 0 — GitHub's GraphQL endpoint is auth-only, and a failed-but-required call would block the REST half of the pull. When a token is present but the GraphQL call fails (scope issue, rate limit, network), the failure is logged and the REST profile data still goes through. The query window is "last 365 days ending now" — semantically "the last year of activity", not a calendar year boundary. The contributionsCollection API caps the window at 1 year regardless. tests/test_streak.lua covers compute_longest_streak (gaps, leading and trailing zeros, missing counts, empty input, single-day), flatten_calendar (week->day flattening, empty cases), _window_now ISO 8601 shape, and _build_request bearer-auth header / body shape. All run under plain LuaJIT — no SDK runtime needed. |
||
|---|---|---|
| .github/workflows | ||
| csv-export | ||
| forgejo-notify | ||
| git-hooks | ||
| gitlab-ci | ||
| jira-sync | ||
| plugins | ||
| progit-ci-runner | ||
| progit-codestorage-bridge | ||
| progit-copilot-hook | ||
| progit-forge-bridge | ||
| progit-pr-stacker | ||
| progit-release-master | ||
| progit-syntax-diff | ||
| schema | ||
| slack-notify | ||
| symbio-expert | ||
| syntax-highlight | ||
| syntax-highlight-wasm | ||
| .gitignore | ||
| categories.json | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| README.md | ||
ProGit Plugin Registry
The official plugin index for ProGit — the git-first, terminal-native project management suite.
Browse and install from plugins.progit.dev · Build your own with the Plugin SDK
Installing Plugins
# Search the registry
prog plugin search forgejo
# Install a plugin
prog plugin install forgejo-notify
# Install a specific version
prog plugin install git-hooks@1.0.0
# Install directly from a git URL
prog plugin install --git https://git.example.org/you/my-plugin.git
# List installed plugins
prog plugin list
Official Plugins
| Plugin | Category | Description |
|---|---|---|
| git-hooks | Utility | Commit hygiene enforcement + issue auto-close via closing keywords |
| forgejo-notify | Integration | Post status changes and sync events as Forgejo/Gitea MR comments |
| gitlab-ci | Integration | GitLab CI/CD pipeline status in the ProGit TUI |
Registry Structure
plugins/
├── integrations/ # External system sync (Forgejo, GitLab, GitHub, Jira …)
├── analytics/ # Metrics, reports, dashboards
└── utilities/ # Automation, quality checks, notifications
<plugin-name>/ # Source for ProGit Team plugins (Lua)
│ └── main.lua
schema/ # JSON Schema for plugin manifests
categories.json # Category definitions
Publishing Your Plugin
1. Write the plugin
Plugins are Lua scripts (LuaJIT). The sandbox provides:
-- HTTP client
local resp = http.get("https://api.example.org/data", { ["Authorization"] = "Bearer " .. token })
local resp = http.post(url, json.encode(payload), { ["Content-Type"] = "application/json" })
-- resp = { status = 200, body = "...", ok = true }
-- JSON codec
local encoded = json.encode({ key = "value" })
local decoded = json.decode(resp.body)
Every plugin declares a plugin table:
plugin = {
name = "my-plugin",
version = "1.0.0",
author = "Your Name",
description = "What it does",
hooks = {
on_status_changed = true,
on_sync_push = true,
},
}
function on_status_changed(data)
-- data.id, data.title, data.old_status, data.new_status
return { notified = true }
end
Full SDK docs: sdk.progit.dev
2. Create a manifest
Add a JSON file to plugins/<category>/<your-plugin>.json:
{
"name": "my-plugin",
"version": "1.0.0",
"description": "What your plugin does (10–256 chars)",
"author": "Your Name",
"license": "MIT",
"plugin_type": "integration",
"runtime": "lua",
"source_url": "https://git.example.org/you/my-plugin.git",
"source_tag": "v1.0.0",
"sdk_version": ">=0.1.0",
"hooks": ["on_status_changed"]
}
Validate against the schema.
3. Submit a pull request
Fork → add manifest → open PR. We review for:
- Manifest completeness and schema validity
- No obvious malicious behaviour in the Lua source
- Working
source_urlpointing to a public repo
That's it. No fees, no gatekeeping.
Licensing
The registry index and all ProGit Team plugins are released under the Libertaria Unbound License (LUL) v1.0 — essentially public domain with attribution. Do anything with it.
Your own plugins may use any license you choose.
See LICENSE for the full text.