Apply updated Codex repository kit
This commit is contained in:
@@ -32,3 +32,10 @@ cargo clippy --package theseus
|
|||||||
```
|
```
|
||||||
|
|
||||||
Full app packaging may require platform-specific Tauri dependencies.
|
Full app packaging may require platform-specific Tauri dependencies.
|
||||||
|
|
||||||
|
## Kit Application Notes
|
||||||
|
|
||||||
|
- `AGENTS.md` intentionally preserves the upstream `CLAUDE.md` handoff while adding Modrinth Plus and Gitea workflow-loop rules.
|
||||||
|
- README blueprint generation is not enabled because the upstream Modrinth README should remain authoritative.
|
||||||
|
- Release dry-run automation is deferred until desktop packaging commands and artifact names are finalized.
|
||||||
|
- Template compliance is enabled on push to keep Codex context files present and placeholder-free.
|
||||||
|
|||||||
85
.gitea/workflows/template-compliance.yml
Normal file
85
.gitea/workflows/template-compliance.yml
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
name: Codex Template Compliance
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
pull_request:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
template-compliance:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Check required Codex files
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
missing=0
|
||||||
|
|
||||||
|
required_files=(
|
||||||
|
"AGENTS.md"
|
||||||
|
".codex/project.md"
|
||||||
|
"README.md"
|
||||||
|
)
|
||||||
|
|
||||||
|
recommended_files=(
|
||||||
|
"SECURITY.md"
|
||||||
|
"CHANGELOG.md"
|
||||||
|
"docs/agent-handoff.md"
|
||||||
|
)
|
||||||
|
|
||||||
|
for file in "${required_files[@]}"; do
|
||||||
|
if [ ! -f "$file" ]; then
|
||||||
|
echo "Missing required Codex file: $file"
|
||||||
|
missing=1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
for file in "${recommended_files[@]}"; do
|
||||||
|
if [ ! -f "$file" ]; then
|
||||||
|
echo "Recommended Codex file not found: $file"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$missing" -eq 1 ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Check unresolved placeholders
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
found=0
|
||||||
|
paths=(AGENTS.md README.md SECURITY.md CHANGELOG.md .codex docs blueprint.md blueprint.json)
|
||||||
|
pattern='PROJECT_NAME|PROJECT_DESCRIPTION|REPOSITORY_OWNER|REPOSITORY_NAME|PACKAGE_NAME|ARTIFACT_NAME|ARTIFACT_OUTPUT_DIRECTORY|AUTHOR_NAME|PROJECT_STACK|DOWNLOAD_URL|BUILD_COMMAND|TEST_COMMAND|LINT_COMMAND|AUDIT_COMMAND|README_COMMAND|INSTALL_COMMAND|DEV_COMMAND|PACKAGE_MANAGER|PROJECT_VERSION'
|
||||||
|
|
||||||
|
for path in "${paths[@]}"; do
|
||||||
|
[ -e "$path" ] || continue
|
||||||
|
if grep -RInE --exclude-dir=.git "$pattern" "$path"; then
|
||||||
|
found=1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$found" -eq 1 ]; then
|
||||||
|
echo "Unresolved template placeholders found. Replace real values or mark genuinely unknown values as PENDING."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Check workflow baseline
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
echo "Detected Gitea workflows:"
|
||||||
|
find .gitea/workflows -maxdepth 1 -type f -name '*.yml' -print 2>/dev/null || true
|
||||||
|
|
||||||
|
- name: Compliance guidance
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cat <<'EOF'
|
||||||
|
Codex template compliance check completed.
|
||||||
|
|
||||||
|
This workflow verifies agent context and template hygiene. It does
|
||||||
|
not change files automatically.
|
||||||
|
EOF
|
||||||
32
AGENTS.md
32
AGENTS.md
@@ -1 +1,31 @@
|
|||||||
CLAUDE.md
|
# Agent Instructions
|
||||||
|
|
||||||
|
Start by reading `CLAUDE.md`; it contains the upstream Modrinth monorepo rules.
|
||||||
|
This fork adds Modrinth Plus work on top of those rules.
|
||||||
|
|
||||||
|
## Repository Rules
|
||||||
|
|
||||||
|
- Preserve upstream Modrinth structure and style unless a Modrinth Plus feature requires a focused change.
|
||||||
|
- Keep desktop app work in the existing app boundaries: `apps/app-frontend`, `apps/app`, and `packages/app-lib`.
|
||||||
|
- Do not commit secrets, `.env` files with private values, private keys, certificates, or tokens.
|
||||||
|
- If `GITEA_TOKEN` is available locally, use it only for read-only Gitea API checks such as private repository metadata and Actions run status. Never print, commit, or store the token.
|
||||||
|
- After pushing commits that trigger a Gitea workflow, poll the workflow run until it succeeds. If it fails or is cancelled, inspect the failing job/logs, fix the issue when in scope, push again, and repeat the workflow check loop. Fixing and pushing a workflow failure is not a stopping point.
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
|
||||||
|
Use upstream commands where possible:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pnpm install
|
||||||
|
pnpm --filter @modrinth/app-frontend run lint
|
||||||
|
cargo fmt --check
|
||||||
|
cargo clippy --package theseus
|
||||||
|
```
|
||||||
|
|
||||||
|
If local Node/Rust toolchains are unavailable, use the Gitea runner as the authoritative verification loop.
|
||||||
|
|
||||||
|
## Security Notes
|
||||||
|
|
||||||
|
- Connected Library supports public HTTPS raw manifest URLs only in v1.
|
||||||
|
- Keep private Git repository authentication out of Connected Library until token storage is designed.
|
||||||
|
- Document new external network calls in `docs/security-review.md`.
|
||||||
|
|||||||
9
CHANGELOG.md
Normal file
9
CHANGELOG.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
All notable Modrinth Plus changes are documented here.
|
||||||
|
|
||||||
|
## Unreleased
|
||||||
|
|
||||||
|
- Added Connected Library for public Git-hosted `modrinth-plus.json` modpack manifests.
|
||||||
|
- Added Gitea Actions verification for the Modrinth Plus fork.
|
||||||
|
- Added Codex repository context and release/security documentation.
|
||||||
25
CONTRIBUTING.md
Normal file
25
CONTRIBUTING.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# Contributing
|
||||||
|
|
||||||
|
This repository is a Modrinth fork. Read upstream `CLAUDE.md` before changing code.
|
||||||
|
|
||||||
|
## Development
|
||||||
|
|
||||||
|
Use the existing monorepo commands and package boundaries. Prefer small, focused commits.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pnpm install
|
||||||
|
pnpm --filter @modrinth/app-frontend run lint
|
||||||
|
cargo fmt --check
|
||||||
|
cargo clippy --package theseus
|
||||||
|
```
|
||||||
|
|
||||||
|
## Pull Request Readiness
|
||||||
|
|
||||||
|
- Keep the working tree clean.
|
||||||
|
- Run the cheapest local checks available.
|
||||||
|
- Push and watch Gitea Actions until the workflow succeeds.
|
||||||
|
- Document skipped checks when local toolchains are unavailable.
|
||||||
|
|
||||||
|
## Security
|
||||||
|
|
||||||
|
Do not commit private tokens, credentials, signing keys, or local secrets. Use repository or organization secrets for CI.
|
||||||
22
SECURITY.md
Normal file
22
SECURITY.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# Security Policy
|
||||||
|
|
||||||
|
## Supported Versions
|
||||||
|
|
||||||
|
| Version | Supported |
|
||||||
|
| --- | --- |
|
||||||
|
| Latest `main` | Yes |
|
||||||
|
|
||||||
|
## Reporting A Vulnerability
|
||||||
|
|
||||||
|
Report security issues privately to the project owner.
|
||||||
|
|
||||||
|
Do not include secrets, production data, private repository URLs, or credentials in public issues.
|
||||||
|
|
||||||
|
## Project Security Principles
|
||||||
|
|
||||||
|
- Keep secrets out of the repository.
|
||||||
|
- Prefer local processing for user data.
|
||||||
|
- Document external network calls.
|
||||||
|
- Keep release artifacts reproducible through CI.
|
||||||
|
- Run dependency and workflow checks before releases.
|
||||||
|
- Connected Library v1 must use public HTTPS manifest and `.mrpack` URLs only.
|
||||||
36
docs/agent-handoff.md
Normal file
36
docs/agent-handoff.md
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# Agent Handoff
|
||||||
|
|
||||||
|
Use this file when a task spans multiple sessions, has unresolved follow-up work, or changes release behavior.
|
||||||
|
|
||||||
|
## Current State
|
||||||
|
|
||||||
|
Modrinth Plus is a fork of the upstream Modrinth monorepo with an initial Connected Library feature.
|
||||||
|
|
||||||
|
## Changes Made
|
||||||
|
|
||||||
|
- Added Connected Library backend, Tauri commands, UI, and SQLite migration.
|
||||||
|
- Added Gitea runner workflow for app frontend and Rust checks.
|
||||||
|
- Added Codex repository baseline documentation.
|
||||||
|
|
||||||
|
## Verification
|
||||||
|
|
||||||
|
| Check | Result |
|
||||||
|
| --- | --- |
|
||||||
|
| `git diff --check` | Passes locally |
|
||||||
|
| Gitea Actions | Must be polled after every workflow-triggering push |
|
||||||
|
| Local `pnpm` checks | Depends on local toolchain availability |
|
||||||
|
| Local `cargo` checks | Depends on local toolchain availability |
|
||||||
|
|
||||||
|
## Open Questions
|
||||||
|
|
||||||
|
- Final release artifact names and packaging flow are not fixed.
|
||||||
|
- Private Connected Library repository authentication is out of scope for v1.
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
- Keep the Gitea workflow loop running until the current pushed commit succeeds.
|
||||||
|
- Expand Connected Library tests after local or CI toolchain issues are resolved.
|
||||||
|
|
||||||
|
## Risks
|
||||||
|
|
||||||
|
- Connected Library update semantics currently preserve local user state and may leave removed pack files in place until stricter sync behavior is designed.
|
||||||
35
docs/release-checklist.md
Normal file
35
docs/release-checklist.md
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# Release Checklist
|
||||||
|
|
||||||
|
## Version
|
||||||
|
|
||||||
|
- [ ] Version number updated.
|
||||||
|
- [ ] Changelog updated.
|
||||||
|
- [ ] Release notes updated.
|
||||||
|
|
||||||
|
## Quality
|
||||||
|
|
||||||
|
- [ ] Working tree is clean.
|
||||||
|
- [ ] Gitea Actions build workflow succeeds.
|
||||||
|
- [ ] Frontend lint passes.
|
||||||
|
- [ ] Rust format and clippy pass.
|
||||||
|
- [ ] Known skipped checks are documented.
|
||||||
|
|
||||||
|
## Security
|
||||||
|
|
||||||
|
- [ ] Security review is current.
|
||||||
|
- [ ] No secrets are committed.
|
||||||
|
- [ ] Connected Library external URLs are documented.
|
||||||
|
- [ ] Private repo authentication remains disabled unless explicitly designed.
|
||||||
|
|
||||||
|
## Artifacts
|
||||||
|
|
||||||
|
- [ ] Desktop app artifact names are known.
|
||||||
|
- [ ] Installer or archive output paths are documented.
|
||||||
|
- [ ] Download links work if release artifacts are published.
|
||||||
|
|
||||||
|
## Release
|
||||||
|
|
||||||
|
- [ ] Git tag created only when explicitly requested.
|
||||||
|
- [ ] Release notes written.
|
||||||
|
- [ ] Release published only when explicitly requested.
|
||||||
|
- [ ] Post-release install/update smoke test completed.
|
||||||
30
docs/release-notes.md
Normal file
30
docs/release-notes.md
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
# Modrinth Plus Unreleased
|
||||||
|
|
||||||
|
## Downloads
|
||||||
|
|
||||||
|
Release artifacts are not published yet.
|
||||||
|
|
||||||
|
## Highlights
|
||||||
|
|
||||||
|
- Connected Library can track public Git-hosted modpack manifests.
|
||||||
|
- Per-pack auto-update can be enabled after a pack is connected.
|
||||||
|
- Gitea Actions are used as the verification runner.
|
||||||
|
|
||||||
|
## Security
|
||||||
|
|
||||||
|
- Dependency audit: pending runner/toolchain confirmation.
|
||||||
|
- Secret handling: no tokens are stored by Connected Library v1.
|
||||||
|
- External network calls: public HTTPS manifest and `.mrpack` downloads.
|
||||||
|
|
||||||
|
## Verification
|
||||||
|
|
||||||
|
| Check | Result |
|
||||||
|
| --- | --- |
|
||||||
|
| Gitea Actions build | Must pass before release |
|
||||||
|
| Frontend lint | Covered by Gitea build workflow |
|
||||||
|
| Rust clippy | Covered by Gitea build workflow |
|
||||||
|
| Artifact download | Pending release packaging |
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
This fork is not release-ready until packaging and artifact names are finalized.
|
||||||
55
docs/security-review.md
Normal file
55
docs/security-review.md
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
# Security Review
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
Project:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Modrinth Plus
|
||||||
|
```
|
||||||
|
|
||||||
|
Reviewed version or commit:
|
||||||
|
|
||||||
|
```text
|
||||||
|
main
|
||||||
|
```
|
||||||
|
|
||||||
|
## Code Patterns Checked
|
||||||
|
|
||||||
|
- [ ] No `eval`.
|
||||||
|
- [ ] No dynamic `Function` constructor.
|
||||||
|
- [ ] No unsafe HTML injection.
|
||||||
|
- [ ] No unexpected shell execution.
|
||||||
|
- [x] External network calls documented for Connected Library.
|
||||||
|
- [x] No private Connected Library credentials are persisted in v1.
|
||||||
|
- [x] Connected Library requires HTTPS manifest and `.mrpack` URLs.
|
||||||
|
|
||||||
|
## Dependency Review
|
||||||
|
|
||||||
|
Command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pnpm --filter @modrinth/app-frontend run lint
|
||||||
|
cargo clippy --package theseus
|
||||||
|
```
|
||||||
|
|
||||||
|
Result:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Pending successful Gitea Actions run.
|
||||||
|
```
|
||||||
|
|
||||||
|
## Runtime Review
|
||||||
|
|
||||||
|
- [x] Connected Library manifests are stored locally in SQLite.
|
||||||
|
- [x] Connected Library auto-update is disabled by default.
|
||||||
|
- [x] `GITEA_TOKEN` is only for local agent API checks, not runtime app use.
|
||||||
|
- [ ] Full Tauri runtime permission review pending.
|
||||||
|
|
||||||
|
## Release Notes
|
||||||
|
|
||||||
|
Known residual risks:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Connected Library update behavior is conservative and does not yet implement strict removed-file sync.
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user