diff --git a/.github/workflows/run_fetch_issues_on_pr.yml b/.github/workflows/run_fetch_issues_on_pr.yml new file mode 100644 index 00000000..9861ce9c --- /dev/null +++ b/.github/workflows/run_fetch_issues_on_pr.yml @@ -0,0 +1,35 @@ +name: Run Fetch Issues on Pull Request + +on: + pull_request: + branches: + - main + +jobs: + fetch_issues: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: "18" + + - name: Install Node.js dependencies + run: npm install + + - name: Run fetch_issues.js script + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: node fetch_issues.mjs + + - name: Commit and push changes + if: success() && steps.check-for-changes.outputs.changed == 'true' + run: | + git commit -m "Update good first issues list from GitHub Actions" + git push origin ${{ github.head_ref }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/content/good-first-issues.md b/content/good-first-issues.md new file mode 100644 index 00000000..81cd1462 --- /dev/null +++ b/content/good-first-issues.md @@ -0,0 +1,8 @@ +--- +title: "Good First Issues" +date: 2024-08-27 +--- + +Here are some "Good First Issues" from the specified GitHub repositories: + +{{< issues >}} diff --git a/data/issues.json b/data/issues.json new file mode 100644 index 00000000..68d31c6c --- /dev/null +++ b/data/issues.json @@ -0,0 +1,356 @@ +[ + { + "title": "Implement MirrorNodeClient.queryTransaction", + "url": "https://github.com/OpenElements/hedera-enterprise/issues/26", + "created_at": "2024-08-24T12:54:20Z", + "repo": "OpenElements/hedera-enterprise" + }, + { + "title": "Define enum for all supported native types of native smart contract data types", + "url": "https://github.com/OpenElements/hedera-enterprise/issues/24", + "created_at": "2024-08-23T07:01:10Z", + "repo": "OpenElements/hedera-enterprise" + }, + { + "title": "Sub-Menu boxes have a too big width", + "url": "https://github.com/OpenElements/open-elements-website/issues/111", + "created_at": "2024-07-20T14:19:41Z", + "repo": "OpenElements/open-elements-website" + }, + { + "title": "Preview images of post should provide link on click", + "url": "https://github.com/OpenElements/open-elements-website/issues/109", + "created_at": "2024-07-20T14:07:34Z", + "repo": "OpenElements/open-elements-website" + }, + { + "title": "Implement MirrorNodeClient.queryTransaction", + "url": "https://github.com/OpenElements/hedera-enterprise/issues/26", + "created_at": "2024-08-24T12:54:20Z", + "repo": "OpenElements/hedera-enterprise" + }, + { + "title": "Define enum for all supported native types of native smart contract data types", + "url": "https://github.com/OpenElements/hedera-enterprise/issues/24", + "created_at": "2024-08-23T07:01:10Z", + "repo": "OpenElements/hedera-enterprise" + }, + { + "title": "Create a youtube video that shows how the action can be used", + "url": "https://github.com/OpenElements/hedera-solo-action/issues/3", + "created_at": "2024-08-24T13:05:45Z", + "repo": "OpenElements/hedera-solo-action" + }, + { + "title": "Rewrite CustomFractionalFeeAssessor.reclaim() to use safe math operations", + "url": "https://github.com/hashgraph/hedera-services/issues/15376", + "created_at": "2024-09-06T10:49:24Z", + "repo": "hashgraph/hedera-services" + }, + { + "title": "Cleanup remaining usage of NonNull and Nullable", + "url": "https://github.com/hashgraph/hedera-services/issues/15375", + "created_at": "2024-09-06T10:02:04Z", + "repo": "hashgraph/hedera-services" + }, + { + "title": "Remove unused interface `SignedStateInfo.java`", + "url": "https://github.com/hashgraph/hedera-services/issues/15304", + "created_at": "2024-09-03T14:47:00Z", + "repo": "hashgraph/hedera-services" + }, + { + "title": "Provide SLF4J bridge for logging", + "url": "https://github.com/hashgraph/hedera-services/issues/15122", + "created_at": "2024-08-27T06:55:12Z", + "repo": "hashgraph/hedera-services" + }, + { + "title": "Chore: Replace `modrun` with `run`", + "url": "https://github.com/hashgraph/hedera-services/issues/13836", + "created_at": "2024-06-13T15:19:11Z", + "repo": "hashgraph/hedera-services" + }, + { + "title": "Some MerkleDb unit tests take too long to run", + "url": "https://github.com/hashgraph/hedera-services/issues/10405", + "created_at": "2023-12-09T02:37:42Z", + "repo": "hashgraph/hedera-services" + }, + { + "title": "Rename `SignedState` to `SignableState`", + "url": "https://github.com/hashgraph/hedera-services/issues/6216", + "created_at": "2023-04-21T14:25:57Z", + "repo": "hashgraph/hedera-services" + }, + { + "title": "Rename Versioned.getVersion() to getClassVersion()", + "url": "https://github.com/hashgraph/hedera-services/issues/5226", + "created_at": "2023-03-03T20:04:52Z", + "repo": "hashgraph/hedera-services" + }, + { + "title": "For consistency with `TOKEN_ALREADY_ASSOCIATED_TO_ACCOUNT`, return `ACCOUNT_ALREADY_FROZEN_FOR_TOKEN`", + "url": "https://github.com/hashgraph/hedera-services/issues/5110", + "created_at": "2023-03-01T15:45:29Z", + "repo": "hashgraph/hedera-services" + }, + { + "title": "Let `ReadableKVState` and `WriteableKVState` require Records as values", + "url": "https://github.com/hashgraph/hedera-services/issues/4614", + "created_at": "2023-01-12T03:24:46Z", + "repo": "hashgraph/hedera-services" + }, + { + "title": "Limit fungible token decimals to 18", + "url": "https://github.com/hashgraph/hedera-services/issues/3178", + "created_at": "2022-04-12T19:35:19Z", + "repo": "hashgraph/hedera-services" + }, + { + "title": "Make the test timeout a configurable value", + "url": "https://github.com/hiero-ledger/hiero-sdk-tck/issues/237", + "created_at": "2024-09-05T17:17:37Z", + "repo": "hashgraph/hedera-sdk-tck" + }, + { + "title": "fix: updated .github/release.yaml to include `internal` and `github_action` labeled PRs", + "url": "https://github.com/hashgraph/hedera-json-rpc-relay/pull/3175", + "created_at": "2024-10-29T17:50:17Z", + "repo": "hashgraph/hedera-json-rpc-relay" + }, + { + "title": "Update release.yml to include `internal` and `github_action` labeled PRs", + "url": "https://github.com/hashgraph/hedera-json-rpc-relay/issues/3172", + "created_at": "2024-10-29T14:27:38Z", + "repo": "hashgraph/hedera-json-rpc-relay" + }, + { + "title": "Shorten the logged names of HBar Rate Limiting repositories.", + "url": "https://github.com/hashgraph/hedera-json-rpc-relay/issues/3134", + "created_at": "2024-10-21T15:42:23Z", + "repo": "hashgraph/hedera-json-rpc-relay" + }, + { + "title": "Swap eth address for evm address everywhere in the hbar limiter code", + "url": "https://github.com/hashgraph/hedera-json-rpc-relay/issues/3125", + "created_at": "2024-10-18T13:53:31Z", + "repo": "hashgraph/hedera-json-rpc-relay" + }, + { + "title": "feat: added redis in docker-compose", + "url": "https://github.com/hashgraph/hedera-json-rpc-relay/pull/3107", + "created_at": "2024-10-16T10:57:32Z", + "repo": "hashgraph/hedera-json-rpc-relay" + }, + { + "title": "Add redis to relay helm chart as a dependency", + "url": "https://github.com/hashgraph/hedera-json-rpc-relay/issues/1870", + "created_at": "2023-11-01T16:22:58Z", + "repo": "hashgraph/hedera-json-rpc-relay" + }, + { + "title": "Add a redis instance to relay docker-compose", + "url": "https://github.com/hashgraph/hedera-json-rpc-relay/issues/1869", + "created_at": "2023-11-01T16:22:54Z", + "repo": "hashgraph/hedera-json-rpc-relay" + }, + { + "title": "Create a proper clientSDK for the mirror node using the openAPI Spec provided", + "url": "https://github.com/hashgraph/hedera-json-rpc-relay/issues/1416", + "created_at": "2023-06-30T00:17:38Z", + "repo": "hashgraph/hedera-json-rpc-relay" + }, + { + "title": "Save output of K6 Results into InfluxDb + Grafana", + "url": "https://github.com/hashgraph/hedera-json-rpc-relay/issues/948", + "created_at": "2023-02-27T17:22:37Z", + "repo": "hashgraph/hedera-json-rpc-relay" + }, + { + "title": "Override default max gas refund property for some environments", + "url": "https://github.com/hashgraph/hedera-local-node/issues/408", + "created_at": "2023-10-16T09:33:52Z", + "repo": "hashgraph/hedera-local-node" + }, + { + "title": "Nonce Filter Is Ignored on /api/v1/transactions/{hash}", + "url": "https://github.com/hashgraph/hedera-mirror-node/issues/9715", + "created_at": "2024-11-07T00:31:34Z", + "repo": "hashgraph/hedera-mirror-node" + }, + { + "title": "Transactions API Should Return All Relevant Transactions", + "url": "https://github.com/hashgraph/hedera-mirror-node/issues/9606", + "created_at": "2024-10-18T16:10:09Z", + "repo": "hashgraph/hedera-mirror-node" + }, + { + "title": "HIP-869 Add admin_key to the /network/nodes REST API", + "url": "https://github.com/hashgraph/hedera-mirror-node/issues/8757", + "created_at": "2024-07-12T14:48:11Z", + "repo": "hashgraph/hedera-mirror-node" + }, + { + "title": "Replace use of deprecated DirectProcessor", + "url": "https://github.com/hashgraph/hedera-mirror-node/issues/5187", + "created_at": "2023-01-09T16:07:44Z", + "repo": "hashgraph/hedera-mirror-node" + }, + { + "title": "Rewrite CustomFractionalFeeAssessor.reclaim() to use safe math operations", + "url": "https://github.com/hashgraph/hedera-services/issues/15376", + "created_at": "2024-09-06T10:49:24Z", + "repo": "hashgraph/hedera-services" + }, + { + "title": "Cleanup remaining usage of NonNull and Nullable", + "url": "https://github.com/hashgraph/hedera-services/issues/15375", + "created_at": "2024-09-06T10:02:04Z", + "repo": "hashgraph/hedera-services" + }, + { + "title": "Remove unused interface `SignedStateInfo.java`", + "url": "https://github.com/hashgraph/hedera-services/issues/15304", + "created_at": "2024-09-03T14:47:00Z", + "repo": "hashgraph/hedera-services" + }, + { + "title": "Provide SLF4J bridge for logging", + "url": "https://github.com/hashgraph/hedera-services/issues/15122", + "created_at": "2024-08-27T06:55:12Z", + "repo": "hashgraph/hedera-services" + }, + { + "title": "Chore: Replace `modrun` with `run`", + "url": "https://github.com/hashgraph/hedera-services/issues/13836", + "created_at": "2024-06-13T15:19:11Z", + "repo": "hashgraph/hedera-services" + }, + { + "title": "Some MerkleDb unit tests take too long to run", + "url": "https://github.com/hashgraph/hedera-services/issues/10405", + "created_at": "2023-12-09T02:37:42Z", + "repo": "hashgraph/hedera-services" + }, + { + "title": "Rename `SignedState` to `SignableState`", + "url": "https://github.com/hashgraph/hedera-services/issues/6216", + "created_at": "2023-04-21T14:25:57Z", + "repo": "hashgraph/hedera-services" + }, + { + "title": "Rename Versioned.getVersion() to getClassVersion()", + "url": "https://github.com/hashgraph/hedera-services/issues/5226", + "created_at": "2023-03-03T20:04:52Z", + "repo": "hashgraph/hedera-services" + }, + { + "title": "For consistency with `TOKEN_ALREADY_ASSOCIATED_TO_ACCOUNT`, return `ACCOUNT_ALREADY_FROZEN_FOR_TOKEN`", + "url": "https://github.com/hashgraph/hedera-services/issues/5110", + "created_at": "2023-03-01T15:45:29Z", + "repo": "hashgraph/hedera-services" + }, + { + "title": "Let `ReadableKVState` and `WriteableKVState` require Records as values", + "url": "https://github.com/hashgraph/hedera-services/issues/4614", + "created_at": "2023-01-12T03:24:46Z", + "repo": "hashgraph/hedera-services" + }, + { + "title": "Limit fungible token decimals to 18", + "url": "https://github.com/hashgraph/hedera-services/issues/3178", + "created_at": "2022-04-12T19:35:19Z", + "repo": "hashgraph/hedera-services" + }, + { + "title": "Create an Example for \"Create File\" functionality", + "url": "https://github.com/hashgraph/hedera-sdk-js/issues/2512", + "created_at": "2024-09-11T12:57:27Z", + "repo": "hashgraph/hedera-sdk-js" + }, + { + "title": ".toString() is not implemented ", + "url": "https://github.com/hashgraph/hedera-sdk-js/issues/2301", + "created_at": "2024-05-28T14:22:31Z", + "repo": "hashgraph/hedera-sdk-js" + }, + { + "title": "Topic Subscription exponential backoff not working properly (too many retries)", + "url": "https://github.com/hashgraph/hedera-sdk-js/issues/2235", + "created_at": "2024-04-01T09:59:41Z", + "repo": "hashgraph/hedera-sdk-js" + }, + { + "title": "Improve the chunk size of FileAppend transaction.", + "url": "https://github.com/hashgraph/hedera-sdk-js/issues/2060", + "created_at": "2023-12-12T14:22:21Z", + "repo": "hashgraph/hedera-sdk-js" + }, + { + "title": "Automatically generate/update `Status.js` and `RequestType.js`", + "url": "https://github.com/hashgraph/hedera-sdk-js/issues/1145", + "created_at": "2022-06-01T02:33:05Z", + "repo": "hashgraph/hedera-sdk-js" + }, + { + "title": "FileCreate/FileUpdate automatic chunking", + "url": "https://github.com/hashgraph/hedera-sdk-swift/issues/381", + "created_at": "2024-09-03T21:47:38Z", + "repo": "hashgraph/hedera-sdk-swift" + }, + { + "title": "Getting AccountId from Mnemonic", + "url": "https://github.com/hashgraph/hedera-sdk-swift/issues/328", + "created_at": "2024-02-16T04:58:45Z", + "repo": "hashgraph/hedera-sdk-swift" + }, + { + "title": "Add E2E: AccountAllowanceDeleteTransaction", + "url": "https://github.com/hashgraph/hedera-sdk-swift/issues/90", + "created_at": "2023-05-24T19:06:37Z", + "repo": "hashgraph/hedera-sdk-swift" + }, + { + "title": "Add example: Add and remove NFT Allowances", + "url": "https://github.com/hashgraph/hedera-sdk-rust/issues/846", + "created_at": "2024-09-12T00:40:35Z", + "repo": "hashgraph/hedera-sdk-rust" + }, + { + "title": "Add missing network configurations with `Client`", + "url": "https://github.com/hashgraph/hedera-sdk-rust/issues/845", + "created_at": "2024-09-11T22:53:51Z", + "repo": "hashgraph/hedera-sdk-rust" + }, + { + "title": "FileCreate/FileUpdate automatic chunking", + "url": "https://github.com/hashgraph/hedera-sdk-rust/issues/835", + "created_at": "2024-09-03T21:48:42Z", + "repo": "hashgraph/hedera-sdk-rust" + }, + { + "title": "Multi node, multi signature offline signing support", + "url": "https://github.com/hiero-ledger/hiero-sdk-cpp/issues/772", + "created_at": "2024-09-03T23:00:36Z", + "repo": "hashgraph/hedera-sdk-cpp" + }, + { + "title": "FileCreate/FileUpdate automatic chunking", + "url": "https://github.com/hiero-ledger/hiero-sdk-cpp/issues/770", + "created_at": "2024-09-03T21:49:52Z", + "repo": "hashgraph/hedera-sdk-cpp" + }, + { + "title": "`TransactionId` should not be regenerated if set manually by a user", + "url": "https://github.com/hiero-ledger/hiero-sdk-cpp/issues/652", + "created_at": "2024-01-31T20:39:20Z", + "repo": "hashgraph/hedera-sdk-cpp" + }, + { + "title": "Create a youtube video that shows how the action can be used", + "url": "https://github.com/OpenElements/hedera-solo-action/issues/3", + "created_at": "2024-08-24T13:05:45Z", + "repo": "OpenElements/hedera-solo-action" + } +] \ No newline at end of file diff --git a/data/mainMenu.json b/data/mainMenu.json index d9005b91..0bd8aa10 100644 --- a/data/mainMenu.json +++ b/data/mainMenu.json @@ -80,5 +80,13 @@ "link": "/contact/", "visibleInNavigation": true, "visibleInFooter": true + }, + { + "name": "Good First Issues", + "link": "/good-first-issues/", + "i18nKey": "goodFirstIssues", + "altI18nKey": "goodFirstIssuesDescription", + "visibleInNavigation": false, + "visibleInFooter": true } -] \ No newline at end of file +] diff --git a/fetch_issues.mjs b/fetch_issues.mjs new file mode 100644 index 00000000..e7d9eb11 --- /dev/null +++ b/fetch_issues.mjs @@ -0,0 +1,68 @@ +import fetch from "node-fetch"; +import fs from "fs"; + +const GITHUB_TOKEN = process.env.GITHUB_TOKEN; +const REPOS = [ + "OpenElements/BenchScape", + "OpenElements/hedera-enterprise", + "OpenElements/open-elements-website", + "OpenElements/hedera-enterprise", + "OpenElements/hedera-solo-action", + "hashgraph/hedera-services", + "hashgraph/hedera-grpcWeb-proxy", + "hashgraph/hedera-exchange-rate-tool", + "hashgraph/hedera-sdk-tck", + "hashgraph/hedera-json-rpc-relay", + "hashgraph/hedera-local-node", + "hashgraph/hedera-mirror-node", + "hashgraph/hedera-services", + "hashgraph/hedera-sdk-js", + "hashgraph/hedera-sdk-swift", + "hashgraph/hedera-sdk-rust", + "hashgraph/hedera-sdk-java", + "hashgraph/hedera-sdk-go", + "hashgraph/hedera-sdk-cpp", + "hashgraph/solo", + "OpenElements/hedera-solo-action", +]; + +const HEADERS = { + Accept: "application/vnd.github.v3+json", + Authorization: `token ${GITHUB_TOKEN}`, +}; + +async function fetchGoodFirstIssues(repo) { + const url = `https://api.github.com/repos/${repo}/issues?labels=good%20first%20issue&state=open`; + + try { + const response = await fetch(url, { headers: HEADERS }); + if (!response.ok) { + throw new Error( + `Error fetching data from ${repo}: ${response.statusText}` + ); + } + + const issues = await response.json(); + return issues.map((issue) => ({ + title: issue.title, + url: issue.html_url, + created_at: issue.created_at, + repo: repo, + })); + } catch (error) { + console.error(`Error fetching from ${repo}:`, error); + return []; + } +} + +async function main() { + const allIssues = []; + for (const repo of REPOS) { + const issues = await fetchGoodFirstIssues(repo); + allIssues.push(...issues); + } + fs.writeFileSync("./data/issues.json", JSON.stringify(allIssues, null, 2)); + console.log("Issues successfully saved!"); +} + +main(); diff --git a/i18n/de.toml b/i18n/de.toml index 785f0752..302fdc1f 100644 --- a/i18n/de.toml +++ b/i18n/de.toml @@ -42,3 +42,5 @@ notFound = "Seite nicht gefunden!!" underline = "Grafisches Element zum Unterstreichen des Textes" [digitalTrustLecture] other = "Vorlesung zu Digital Trust" +[goodFirstIssues] +other = "Gute Erstausgaben" diff --git a/i18n/en.toml b/i18n/en.toml index ac981c51..f9690e82 100644 --- a/i18n/en.toml +++ b/i18n/en.toml @@ -41,4 +41,6 @@ notFound = "Page Not Found!!" [altTexts] underline = "Graphical element that underlines the text" [digitalTrustLecture] -other = "Digital Trust Lecture" \ No newline at end of file +other = "Digital Trust Lecture" +[goodFirstIssues] +other = "Good First Issues" \ No newline at end of file diff --git a/layouts/shortcodes/issues.html b/layouts/shortcodes/issues.html new file mode 100644 index 00000000..97b9f9ea --- /dev/null +++ b/layouts/shortcodes/issues.html @@ -0,0 +1,10 @@ +{{ $issues := .Site.Data.issues }} +