From 4a825ba59f9ca365d742eed323e3226f57606fc4 Mon Sep 17 00:00:00 2001
From: "devpool-directory-superintendent[bot]"
<179499210+devpool-directory-superintendent[bot]@users.noreply.github.com>
Date: Wed, 16 Oct 2024 01:52:45 +0000
Subject: [PATCH] chore: update files
---
devpool-issues.json | 2 +-
devpool-statistics.json | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/devpool-issues.json b/devpool-issues.json
index 644b6b46e..20de2329e 100644
--- a/devpool-issues.json
+++ b/devpool-issues.json
@@ -1 +1 @@
-[{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/972","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/972/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/972/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/972/events","html_url":"https://github.com/ubiquity/ubiquity-dollar/issues/972","id":2563432779,"node_id":"I_kwDOF4fVBs6YyuFL","number":972,"title":"CI: fix `check_storage_layout` for new contracts","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":5898797887,"node_id":"LA_kwDOF4fVBs8AAAABX5iDPw","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":5898805638,"node_id":"LA_kwDOF4fVBs8AAAABX5ihhg","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":7516302001,"node_id":"LA_kwDOF4fVBs8AAAABwAGqsQ","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2024-10-03T08:26:32Z","updated_at":"2024-10-15T05:45:01Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"There's the [core-contracts-storage-check](https://github.com/ubiquity/ubiquity-dollar/blob/20799bedf5ee4d40d2863653f7bc2fe68a2ce3fa/.github/workflows/core-contracts-storage-check.yml) workflow which checks that contracts' storage is not messed on contract upgrades.\r\n\r\nCheck these CI runs which fails with the `No workflow run found with an artifact named...` error:\r\n- https://github.com/ubiquity/ubiquity-dollar/actions/runs/11125075713/job/30912062971?pr=959\r\n- https://github.com/ubiquity/ubiquity-dollar/actions/runs/11145695030/job/30975996318?pr=971\r\n\r\nThe issue is that when a **new contract** is added the [core-contracts-storage-check](https://github.com/ubiquity/ubiquity-dollar/blob/20799bedf5ee4d40d2863653f7bc2fe68a2ce3fa/.github/workflows/core-contracts-storage-check.yml) starts to fail while the expected behavior for the CI workflow to pass because we don't need to check storage layout for newly added contracts (because storage of the newly added contract hasn't been updated hence storage collision could not occur).\r\n\r\nSo as a part of this issue we should make sure that [core-contracts-storage-check](https://github.com/ubiquity/ubiquity-dollar/blob/20799bedf5ee4d40d2863653f7bc2fe68a2ce3fa/.github/workflows/core-contracts-storage-check.yml) is not failing for newly added contracts.\r\n\r\nP.S. Pls provide a QA in the related PR with these scenarios:\r\n1) No storage updates, CI passing\r\n2) Storage update, no collision, CI passing\r\n3) Storage update, collision, CI failing\r\n4) New contract added, CI passing","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/972/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/972/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/968","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/968/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/968/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/968/events","html_url":"https://github.com/ubiquity/ubiquity-dollar/issues/968","id":2558678117,"node_id":"I_kwDOF4fVBs6YglRl","number":968,"title":"Aave AMO v2","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2024-10-01T09:28:07Z","updated_at":"2024-10-14T13:29:21Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"[This](https://github.com/ubiquity/ubiquity-dollar/pull/956) PR intoduced AMO minter and aave AMO which should help to receive yield on the collateral provided in the Ubiquity pool.\r\n\r\nOriginal contracts:\r\n- [FraxAMOMinter](https://github.com/FraxFinance/frax-solidity/blob/85039d4dff2fb24d8a1ba6efc1ebf7e464df9dcf/src/hardhat/contracts/Frax/FraxAMOMinter.sol)\r\n- [AaveAMO_V2](https://github.com/FraxFinance/frax-solidity/blob/master/src/hardhat/contracts/Misc_AMOs/Lending_AMOs/AaveAMO_V2.sol)\r\n\r\nWhat should be done:\r\n1. Make contracts upgradeable\r\n2. Refactor unit tests to use locally deployed aave contracts instead of forked testing\r\n3. Prepare deployment migration\r\n4. Prepare tests for the deployment migration \r\n5. Fix semgrep CI [errors](https://github.com/ubiquity/ubiquity-dollar/actions/runs/11158301208)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/968/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/968/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/958","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/958/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/958/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/958/events","html_url":"https://github.com/ubiquity/ubiquity-dollar/issues/958","id":2520765704,"node_id":"I_kwDOF4fVBs6WP9UI","number":958,"title":"Arbitrage bot","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":5898797883,"node_id":"LA_kwDOF4fVBs8AAAABX5iDOw","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":5898805715,"node_id":"LA_kwDOF4fVBs8AAAABX5ih0w","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":5898814734,"node_id":"LA_kwDOF4fVBs8AAAABX5jFDg","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Price:%20400%20USD","name":"Price: 400 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":10,"created_at":"2024-09-11T21:02:06Z","updated_at":"2024-10-14T13:29:24Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"In order to maintain [Dollar token](https://github.com/ubiquity/ubiquity-dollar/blob/0a230f977ad91bbfb01dd28bc1d2ea77faed5237/packages/contracts/src/dollar/core/UbiquityDollarToken.sol) USD peg [LibUbiquityPool](https://github.com/ubiquity/ubiquity-dollar/blob/0a230f977ad91bbfb01dd28bc1d2ea77faed5237/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol) provides the following arbitrage mechanic:\r\n1. If Dollar token USD price >1$ (on a secondary market) then arbitragers are incentivised to \r\na) Mint 1 Dollar token for 1 USD of collateral in the [LibUbiquityPool](https://github.com/ubiquity/ubiquity-dollar/blob/0a230f977ad91bbfb01dd28bc1d2ea77faed5237/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol)\r\nb) Sell 1 Dollar token on a secondary market\r\n2. On the contrary, If Dollar token USD price <1$ (on a secondary market) then arbitragers are incentivised to:\r\na) Buy cheap Dollar token on a secondary market\r\nb) Redeem Dollar token for collateral worth 1 USD in the [LibUbiquityPool](https://github.com/ubiquity/ubiquity-dollar/blob/0a230f977ad91bbfb01dd28bc1d2ea77faed5237/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol)\r\n\r\nOn early project stage any large swap may affect the Dollar token price greatly and the pool (where the swap occurred) may remain unbalanced for a long time which in turn depegs the Dollar token.\r\n\r\nAs a part of this issue we should create an arbitrage bot (i.e. `nodejs` app) which could be run on VPS or any suitable PAAS (heroku, cloudflare, etc...) to catch arbitrage opportunities in order to keep the Dollar token USD pegged on early project stage.\r\n\r\nWhat should be done:\r\n1. Create a new `nodejs` app that will catch arbitrage opportunities for the Dollar token\r\n2. Add unit tests for basic functionality\r\n3. Prepare a clear README of how to run the bot\r\n\r\nNotes:\r\n- It makes sense to create the arbitrage bot in a separate repository.\r\n- Deployed contract addresses (mainnet): [here](https://github.com/ubiquity/ubiquity-dollar/blob/0a230f977ad91bbfb01dd28bc1d2ea77faed5237/packages/contracts/broadcast/Deploy001_Diamond_Dollar_Governance.s.sol/1/run-latest.json)\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/958/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/958/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/939","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/939/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/939/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/939/events","html_url":"https://github.com/ubiquity/ubiquity-dollar/issues/939","id":2309724903,"node_id":"I_kwDOF4fVBs6Jq5rn","number":939,"title":"Investigate and confirm the behaviour for new staking users for uad-contracts and diamond","user":{"login":"gitcoindev","id":88761781,"node_id":"MDQ6VXNlcjg4NzYxNzgx","avatar_url":"https://avatars.githubusercontent.com/u/88761781?v=4","gravatar_id":"","url":"https://api.github.com/users/gitcoindev","html_url":"https://github.com/gitcoindev","followers_url":"https://api.github.com/users/gitcoindev/followers","following_url":"https://api.github.com/users/gitcoindev/following{/other_user}","gists_url":"https://api.github.com/users/gitcoindev/gists{/gist_id}","starred_url":"https://api.github.com/users/gitcoindev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gitcoindev/subscriptions","organizations_url":"https://api.github.com/users/gitcoindev/orgs","repos_url":"https://api.github.com/users/gitcoindev/repos","events_url":"https://api.github.com/users/gitcoindev/events{/privacy}","received_events_url":"https://api.github.com/users/gitcoindev/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":10,"created_at":"2024-05-22T06:55:19Z","updated_at":"2024-09-27T20:05:30Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Right now the behaviour for new staking users is this one:\r\n1) User deposits 1000 `UAD3CRV LP` to https://etherscan.io/address/0xc251ecd9f1bd5230823f9a0f99a44a87ddd4ca38 for 1 week\r\n2) User waits for 1 week\r\n3) User withdraws 1000 `UAD3CRV LP` and gets 178 `UAD3CRV LP` + 72 `UBQ`. User would expect to get 1000 `UAD3CRV LP` instead of 178.\r\n\r\n_Originally posted by @rndquu in https://github.com/ubiquity/ubiquity-dollar/issues/752#issuecomment-2078849441_\r\n ","closed_by":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/939/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/939/timeline","performed_via_github_app":null,"state_reason":"reopened"},{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/937","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/937/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/937/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/937/events","html_url":"https://github.com/ubiquity/ubiquity-dollar/issues/937","id":2284873479,"node_id":"I_kwDOF4fVBs6IMGcH","number":937,"title":"Final Pre-Seed/Seed Investor Debt UBQ","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":5898797927,"node_id":"LA_kwDOF4fVBs8AAAABX5iDZw","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Time:%20%3C4%20Hours","name":"Time: <4 Hours","color":"ededed","default":false,"description":null},{"id":5898805810,"node_id":"LA_kwDOF4fVBs8AAAABX5iiMg","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":6922903766,"node_id":"LA_kwDOF4fVBs8AAAABnKMg1g","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Price:%20450%20USD","name":"Price: 450 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":27,"created_at":"2024-05-08T07:20:20Z","updated_at":"2024-10-07T07:19:19Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"> So what's next steps to watch out for? Do we need to fix the amounts again when the stakes are withdrawn?\r\n\r\nFinally!\r\n\r\nThe next 'final' batch should be done after bonds expiry. Only then the remaining exact payout amounts will be available.\r\n\r\nThe algorithm will be:\r\n\r\n1) Update network block number in https://github.com/gitcoindev/uad-contracts/blob/staking-mutliplier-fix/tasks/simulateBondingDebt.ts and execute the script again using the following command:\r\n\r\n`$ npx hardhat simulateBondingDebt`\r\n\r\nThis will fork the blockchain, get the current inflation rate and output missing stake values for the same set of bonds. What was paid / disbursed today, should be subtracted from the amount that will be shown.\r\n\r\n2) The BondingDebtV2 / BondingDebtFinal contract will be deployed in the same way BondingDebt, but with remaining UBQ values for the bond holders.\r\n\r\n\r\n\r\n\n\n_Originally posted by @gitcoindev in https://github.com/ubiquity/ubiquity-dollar/issues/752#issuecomment-2098994982_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/937/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/937/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/930","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/930/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/930/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/930/events","html_url":"https://github.com/ubiquity/ubiquity-dollar/issues/930","id":2253321255,"node_id":"I_kwDOF4fVBs6GTvQn","number":930,"title":"Adding collateral enabled checks for redemption collections might make users uncapable of redeming their funds.","user":{"login":"0xadrii","id":56537955,"node_id":"MDQ6VXNlcjU2NTM3OTU1","avatar_url":"https://avatars.githubusercontent.com/u/56537955?v=4","gravatar_id":"","url":"https://api.github.com/users/0xadrii","html_url":"https://github.com/0xadrii","followers_url":"https://api.github.com/users/0xadrii/followers","following_url":"https://api.github.com/users/0xadrii/following{/other_user}","gists_url":"https://api.github.com/users/0xadrii/gists{/gist_id}","starred_url":"https://api.github.com/users/0xadrii/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0xadrii/subscriptions","organizations_url":"https://api.github.com/users/0xadrii/orgs","repos_url":"https://api.github.com/users/0xadrii/repos","events_url":"https://api.github.com/users/0xadrii/events{/privacy}","received_events_url":"https://api.github.com/users/0xadrii/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-04-19T15:43:58Z","updated_at":"2024-04-19T16:30:36Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"[MEDIUM] - Adding collateral enabled checks for redemption collections might make users uncapable of redeming their funds.\r\n\r\nThis PR is intended to fix [the bug described in this Sherlock issue](https://github.com/sherlock-audit/2023-12-ubiquity-judging/issues/29). However, the Sherlock report is actually wrong and the vulnerability described must not be considered as an issue in the first place, so the collateralEnabled check should not be added on collecting redemptions.\r\n\r\nEnabling/disabling collaterals allows the protocol to add or remove supported collaterals, not to be used under uncertain situations, such as a hack. In such type of situations, the `isRedeemPaused` check can be enabled to prevent users from redeeming if something wrong is currently happening.\r\n\r\nThe problem with adding the `collateralEnabled` check here is that if Ubiquity decides to disable a collateral in the future, some redemptions might be already queued, so users won't be able to withdraw their funds.\r\n\r\n\r\nRecommendation: Remove the `collateralEnabled` check for collecting redemptions.\r\n\r\n_Originally posted by @0xadrii in https://github.com/ubiquity/ubiquity-dollar/pull/894#discussion_r1572571068_\r\n ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/930/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/930/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/928","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/928/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/928/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/928/events","html_url":"https://github.com/ubiquity/ubiquity-dollar/issues/928","id":2246043014,"node_id":"I_kwDOF4fVBs6F3-WG","number":928,"title":"Better security","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2024-04-16T13:19:04Z","updated_at":"2024-10-04T16:02:22Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"After the deployment we'll have most of the liquidity resided in the [LibUbiquityPool](https://github.com/ubiquity/ubiquity-dollar/blob/a1b11e1b944227144d7cc19ab320220d9fce8b69/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol) so it makes sense to make its security better by imlementing more fuzzing and invariant tests, adding formal verification and monitoring solution.\r\n\r\n- [x] https://github.com/ubiquity/ubiquity-dollar/issues/925\r\n- [x] https://github.com/ubiquity/ubiquity-dollar/issues/563\r\n- [ ] https://github.com/ubiquity/ubiquity-dollar/issues/926\r\n- [ ] https://github.com/ubiquity/ubiquity-dollar/issues/927\r\n\r\n@0x4007 FYI","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/928/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/928/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/927","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/927/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/927/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/927/events","html_url":"https://github.com/ubiquity/ubiquity-dollar/issues/927","id":2246035577,"node_id":"I_kwDOF4fVBs6F38h5","number":927,"title":"Security monitoring","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":5898797883,"node_id":"LA_kwDOF4fVBs8AAAABX5iDOw","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":5898805715,"node_id":"LA_kwDOF4fVBs8AAAABX5ih0w","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":5898830518,"node_id":"LA_kwDOF4fVBs8AAAABX5kCtg","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Price:%20600%20USD","name":"Price: 600 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":40,"created_at":"2024-04-16T13:16:42Z","updated_at":"2024-10-14T13:29:29Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"In case of a security incident we should:\r\n1. Pause all of the contracts\r\n2. Notify the core team that something went wrong\r\n\r\nPossible solutions for monitoring:\r\n- https://docs.chain.link/chainlink-automation\r\n- https://www.openzeppelin.com/defender\r\n- https://cyvers.ai/\r\n\r\nWhat should be done:\r\n1. Setup monitoring for [LibUbiquityPool](https://github.com/ubiquity/ubiquity-dollar/blob/a1b11e1b944227144d7cc19ab320220d9fce8b69/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol). In case of a possible security incident (let's say >30% of liquidity is withdrawn) we should:\r\na) Pause the [UbiquityDollarToken](https://github.com/ubiquity/ubiquity-dollar/blob/a1b11e1b944227144d7cc19ab320220d9fce8b69/packages/contracts/src/dollar/core/UbiquityDollarToken.sol)\r\nb) Pause [LibUbiquityPool](https://github.com/ubiquity/ubiquity-dollar/blob/a1b11e1b944227144d7cc19ab320220d9fce8b69/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol) by [disabling collateral](https://github.com/ubiquity/ubiquity-dollar/blob/a1b11e1b944227144d7cc19ab320220d9fce8b69/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol#L1129)\r\n2. Send notification to https://t.me/UbiquityDAO (you may create a new topic there like `Dollar monitoring`)\r\n\r\nP.S. Mainnet contract addresses can be found [here](https://github.com/ubiquity/ubiquity-dollar/blob/e4c1fae5ef5e9ba40bcb84c671f2ba39f0ab5208/packages/contracts/broadcast/Deploy001_Diamond_Dollar_Governance.s.sol/1/run-latest.json)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/927/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/927/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/926","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/926/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/926/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/926/events","html_url":"https://github.com/ubiquity/ubiquity-dollar/issues/926","id":2246031922,"node_id":"I_kwDOF4fVBs6F37oy","number":926,"title":"Formal verification","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":5898797883,"node_id":"LA_kwDOF4fVBs8AAAABX5iDOw","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":5898805638,"node_id":"LA_kwDOF4fVBs8AAAABX5ihhg","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":5898837553,"node_id":"LA_kwDOF4fVBs8AAAABX5keMQ","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Price:%20300%20USD","name":"Price: 300 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":17,"created_at":"2024-04-16T13:15:22Z","updated_at":"2024-10-14T13:29:30Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We should implement formal verification for [LibUbiquityPool](https://github.com/ubiquity/ubiquity-dollar/blob/a1b11e1b944227144d7cc19ab320220d9fce8b69/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol). \r\n\r\nSo collaborator who's going to take this issue should carefully study the [LibUbiquityPool](https://github.com/ubiquity/ubiquity-dollar/blob/a1b11e1b944227144d7cc19ab320220d9fce8b69/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol) and think of the invariants that should be tested.\r\n\r\nInvariants could be:\r\n- user can not mint more Dollars in USD than provided collateral\r\n- user can not redeem more collateral in USD than provided Dollar tokens\r\n\r\nPossible solutions for formal verification:\r\n- https://github.com/a16z/halmos\r\n- https://docs.runtimeverification.com/kontrol\r\n\r\nWe already had a try with formal verification, you may find related scripts [here](https://github.com/ubiquity/ubiquity-dollar/tree/a1b11e1b944227144d7cc19ab320220d9fce8b69/packages/contracts/scripts/smt-checker).\r\n\r\nWhat should be done:\r\n1. Impelent formal verification for the [LibUbiquityPool](https://github.com/ubiquity/ubiquity-dollar/blob/a1b11e1b944227144d7cc19ab320220d9fce8b69/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol) contract (you may create tests in a separate test file like `UbiquityPoolFacet.formal.t.sol` so we could distinguish unit, fuzz, invariant and formal verification tests)\r\n2. Setup testing CI to run formal verification tests on merge to the `development` branch (keep in mind that github action runnners can run for 6 hours). We don't need to run formal verification tests on eash PR since they're really time consuming.\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/926/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/926/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/908","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/908/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/908/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/908/events","html_url":"https://github.com/ubiquity/ubiquity-dollar/issues/908","id":2162993767,"node_id":"I_kwDOF4fVBs6A7Kpn","number":908,"title":"Research: overcollateralization mechanic","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":5898805715,"node_id":"LA_kwDOF4fVBs8AAAABX5ih0w","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":22,"created_at":"2024-03-01T09:36:57Z","updated_at":"2024-10-08T06:02:37Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"There is only one audit's issue that we haven't fixed yet: https://github.com/sherlock-audit/2023-12-ubiquity-judging/issues/60\r\n\r\nThis is not critical but during a black swan event it will make the pool insolvent to some extent. We should add the overcollateralization mechanic (similar to `DAI`, `CRVUSD` or `LUSD`) which is much more resistant to sudden collateral depegs.\r\n\r\nThis is a research issue, as a result we should get a detailed step by step guide of what audited contracts we should fork/revamp and how they fit (i.e. how we should use them) in the overall Dollar protocol architecture.\r\n\r\nWhen the overcollateralization mechanic is implemented we could:\r\n1. Pause the Ubiquity pool used by arbitrageurs (and allow operations with `Dollar` tokens only on secondary markets)\r\n2. Rely only on the overcollateralization mechanic for the `Dollar` token USD peg which is much more resistant to sudden collateral depegs\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/908/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/908/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/2","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/2/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/2/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/2/events","html_url":"https://github.com/ubiquity/ubiquity-instadapp/issues/2","id":1042595914,"node_id":"I_kwDOGKs3-84-JMBK","number":2,"title":"Instadapp UI on PR Finish","user":{"login":"marcomow","id":4977000,"node_id":"MDQ6VXNlcjQ5NzcwMDA=","avatar_url":"https://avatars.githubusercontent.com/u/4977000?v=4","gravatar_id":"","url":"https://api.github.com/users/marcomow","html_url":"https://github.com/marcomow","followers_url":"https://api.github.com/users/marcomow/followers","following_url":"https://api.github.com/users/marcomow/following{/other_user}","gists_url":"https://api.github.com/users/marcomow/gists{/gist_id}","starred_url":"https://api.github.com/users/marcomow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/marcomow/subscriptions","organizations_url":"https://api.github.com/users/marcomow/orgs","repos_url":"https://api.github.com/users/marcomow/repos","events_url":"https://api.github.com/users/marcomow/events{/privacy}","received_events_url":"https://api.github.com/users/marcomow/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2021-11-02T16:48:57Z","updated_at":"2024-09-12T17:47:40Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":null,"closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/2/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/2/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/1","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/1/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/1/events","html_url":"https://github.com/ubiquity/ubiquity-instadapp/issues/1","id":1041359800,"node_id":"I_kwDOGKs3-84-EeO4","number":1,"title":"implement Assembly Snowball integration","user":{"login":"marcomow","id":4977000,"node_id":"MDQ6VXNlcjQ5NzcwMDA=","avatar_url":"https://avatars.githubusercontent.com/u/4977000?v=4","gravatar_id":"","url":"https://api.github.com/users/marcomow","html_url":"https://github.com/marcomow","followers_url":"https://api.github.com/users/marcomow/followers","following_url":"https://api.github.com/users/marcomow/following{/other_user}","gists_url":"https://api.github.com/users/marcomow/gists{/gist_id}","starred_url":"https://api.github.com/users/marcomow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/marcomow/subscriptions","organizations_url":"https://api.github.com/users/marcomow/orgs","repos_url":"https://api.github.com/users/marcomow/repos","events_url":"https://api.github.com/users/marcomow/events{/privacy}","received_events_url":"https://api.github.com/users/marcomow/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2021-11-01T16:27:58Z","updated_at":"2024-09-12T17:47:42Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":null,"closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/1/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/1/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/launch-party/issues/4","repository_url":"https://api.github.com/repos/ubiquity/launch-party","labels_url":"https://api.github.com/repos/ubiquity/launch-party/issues/4/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/launch-party/issues/4/comments","events_url":"https://api.github.com/repos/ubiquity/launch-party/issues/4/events","html_url":"https://github.com/ubiquity/launch-party/issues/4","id":1062838846,"node_id":"I_kwDOGYrTic4_WaI-","number":4,"title":"NFT sale strategy","user":{"login":"marcomow","id":4977000,"node_id":"MDQ6VXNlcjQ5NzcwMDA=","avatar_url":"https://avatars.githubusercontent.com/u/4977000?v=4","gravatar_id":"","url":"https://api.github.com/users/marcomow","html_url":"https://github.com/marcomow","followers_url":"https://api.github.com/users/marcomow/followers","following_url":"https://api.github.com/users/marcomow/following{/other_user}","gists_url":"https://api.github.com/users/marcomow/gists{/gist_id}","starred_url":"https://api.github.com/users/marcomow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/marcomow/subscriptions","organizations_url":"https://api.github.com/users/marcomow/orgs","repos_url":"https://api.github.com/users/marcomow/repos","events_url":"https://api.github.com/users/marcomow/events{/privacy}","received_events_url":"https://api.github.com/users/marcomow/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":true,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2021-11-24T19:49:06Z","updated_at":"2021-11-24T19:49:06Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"- sell on a legit platform (Opensea, showyunft)\r\n- pricing -> bonding curve","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/launch-party/issues/4/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/launch-party/issues/4/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/34","repository_url":"https://api.github.com/repos/ubiquity/ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/34/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/34/comments","events_url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/34/events","html_url":"https://github.com/ubiquity/ubq.fi/issues/34","id":2580722252,"node_id":"I_kwDOIBgTD86Z0rJM","number":34,"title":"More Logos","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6498679050,"node_id":"LA_kwDOIBgTD88AAAABg1n5Cg","url":"https://api.github.com/repos/ubiquity/ubq.fi/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-11T07:59:24Z","updated_at":"2024-10-11T08:00:11Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We need more logos on our site for social credibility. \nWe should have logos of all 12 EVMs we support payouts on\nUniswap to mention its permit2\nPartners like MakerDAO\nand more. TBC","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/34/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/34/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/29","repository_url":"https://api.github.com/repos/ubiquity/ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/29/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/29/comments","events_url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/29/events","html_url":"https://github.com/ubiquity/ubq.fi/issues/29","id":2376041678,"node_id":"I_kwDOIBgTD86Nn4TO","number":29,"title":"Toy \"Demo\" Illustrating the Flow","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":5348034116,"node_id":"LA_kwDOIBgTD88AAAABPsSGRA","url":"https://api.github.com/repos/ubiquity/ubq.fi/labels/Time:%20%3C1%20Week","name":"Time: <1 Week","color":"ededed","default":false,"description":null},{"id":6498679050,"node_id":"LA_kwDOIBgTD88AAAABg1n5Cg","url":"https://api.github.com/repos/ubiquity/ubq.fi/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":7130901582,"node_id":"LA_kwDOIBgTD88AAAABqQjsTg","url":"https://api.github.com/repos/ubiquity/ubq.fi/labels/Price:%201200%20USD","name":"Price: 1200 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":46,"created_at":"2024-06-26T18:45:30Z","updated_at":"2024-10-16T00:13:29Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"![dxos org_](https://github.com/ubiquity/ubq.fi/assets/4975670/3d7044f1-ee8f-45c1-a933-53028fa904bc)\r\n\r\n[DXOS](https://dxos.org/) demonstrates their tech above-the-fold, which is the most concise way to explain their offering.\r\n\r\nWe should make a simple example like this that is a simplified model of our flow. \r\n\r\nFor example:\r\n\r\n- There is a simple description \"Move the box\" \r\n- There already is a priority level set\r\n- User is prompted to set a time estimate\r\n- It shows the price label\r\n- It prompts the user to \"start\" the task\r\n- It renders a box that you can drag and drop to a goal box. \r\n- As soon as its complete, a payment permit is shown with the reward\r\n- The user can actually claim an NFT etc. \r\n\r\nThis can be handled in a separate repo and we can iframe it in since this seems a bit involved. Also I think we need to create an NFT contract for this demo. \r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/29/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/29/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/.github/issues/119","repository_url":"https://api.github.com/repos/ubiquity/.github","labels_url":"https://api.github.com/repos/ubiquity/.github/issues/119/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/.github/issues/119/comments","events_url":"https://api.github.com/repos/ubiquity/.github/issues/119/events","html_url":"https://github.com/ubiquity/.github/issues/119","id":2443440763,"node_id":"I_kwDOIaGAy86Ro_J7","number":119,"title":"Recruitment: leverage reddit ","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[{"id":5295864391,"node_id":"LA_kwDOIaGAy88AAAABO6h6Rw","url":"https://api.github.com/repos/ubiquity/.github/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":6006396257,"node_id":"LA_kwDOIaGAy88AAAABZgJVYQ","url":"https://api.github.com/repos/ubiquity/.github/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":6772883661,"node_id":"LA_kwDOIaGAy88AAAABk7IAzQ","url":"https://api.github.com/repos/ubiquity/.github/labels/Price:%20600%20USD","name":"Price: 600 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":10,"created_at":"2024-08-01T21:05:29Z","updated_at":"2024-09-10T05:15:41Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"This is borderline I'm unsure about this one but it would be very effective if done well and in reality causes no harm to anyone and in fact the types of people that generally respond well to these types of posts are the types of people we want to target\r\n\r\n## What is it?\r\nSimply put: We clickbait some of our tasks in subreddits like r/typescript for example\r\n\r\nI'm not sure of the term for it in advertising you see it a lot these days. Basically you'll see gameplay of the app and they will either deliberately fail an easy task so the viewer goes \"I could have completed that\" or they intentionally move into the path of the lesser upgrade power (smg vs tank eg) so they go \"I want to see the tank, I'd have chosen the tank\"\r\n\r\n## What it requires?\r\nWe pick a couple of our open tasks and then open posts into these particular subreddits from a new/noob account and we lay it out as if we are struggling with the problem and post links to the code/the issue whatever.\r\n\r\nThe people on these subs with real knowledge and are keen to help out are the target demographic here, they are quick to peruse links and random code to help a stranger \"just because\" or maybe it's to test their own knowledge or they are curious that way, we want them.\r\n\r\n## Why do it?\r\nWell we have ways to target solidity and web3 minded folks but not so much Web2 folks that would excel in TS related projects for example.\r\n\r\nThis approach can be applied to any language or skillset our tasks contain, AI, Web3, TS etc.\r\n\r\n## Is it a poor show from us?\r\nI don't think so. While we are not interested in the help we are asking for exactly, we are interested in those who can see the problem and resolve it on the spot like many do on these subs, just for fun so no one is losing anything here. They do as they also do and potentially we catch their interest enough to pick up a task or two \r\n\r\n## Pros vs other socials like X\r\n\r\n- Way less effort, set and forget.\r\n- effectiveness is not tied to followers-count\r\n- very quick turnover we'll see most traffic in the first 24-48hrs on these posts (as far as I have noticed)\r\n- we will become better at this with each post\r\n- each post is also a great SEO anchor ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/.github/issues/119/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/.github/issues/119/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/.github/issues/118","repository_url":"https://api.github.com/repos/ubiquity/.github","labels_url":"https://api.github.com/repos/ubiquity/.github/issues/118/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/.github/issues/118/comments","events_url":"https://api.github.com/repos/ubiquity/.github/issues/118/events","html_url":"https://github.com/ubiquity/.github/issues/118","id":2443341080,"node_id":"I_kwDOIaGAy86Rom0Y","number":118,"title":"Recruitment: 3rd Party Bounty Postings","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2024-08-01T20:19:31Z","updated_at":"2024-08-02T00:27:03Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"## What is it?\r\n\r\nSimilar to [our DoraHacks bounty post](https://github.com/ubiquity/.github/issues/116) we should leverage similar channels and create a similar post/structure. Primarily it acts as just advertising space they are not considered full hackathons or anything remotely close. \r\n\r\nWe should stick to the same format and just call them something like `Newcomers Bonus` and have it follow the same pattern where it's a bonus on top of your first task.\r\n\r\n## Where would we post?\r\n\r\n- https://earn.superteam.fun/\r\n- https://bounties.network/\r\n- add more here\r\n\r\n## Analytics\r\n\r\n- we can perform the same test conditions across all of them then consider dropping poor performing ones from any future usage of this strategy\r\n\r\n## What's required?\r\n\r\n- No uniform or automated way of handling submissions (as of yet) as each platform handles things in their own way so would require manually handling things until we can automate/improve our end. \r\n- It likely requires minimal effort probably a quick check of the site(s) once per week and validating submissions\r\n\r\n#### STILL TO-DOS:\r\n\r\n- find more places to post/validate their usefulness i.e userbase, social proofs etc\r\n- either improve the current DoraHacks bounty post and we'll replicate it across all postings, use it as-is or create a varied post for each platform.\r\n\r\nCreating a slightly different post for each platform might be a great idea for SEO","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/.github/issues/118/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/.github/issues/118/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/.github/issues/111","repository_url":"https://api.github.com/repos/ubiquity/.github","labels_url":"https://api.github.com/repos/ubiquity/.github/issues/111/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/.github/issues/111/comments","events_url":"https://api.github.com/repos/ubiquity/.github/issues/111/events","html_url":"https://github.com/ubiquity/.github/issues/111","id":2330410014,"node_id":"I_kwDOIaGAy86K5zwe","number":111,"title":"Cloudflare as a Risk","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6006396257,"node_id":"LA_kwDOIaGAy88AAAABZgJVYQ","url":"https://api.github.com/repos/ubiquity/.github/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2024-06-03T07:42:27Z","updated_at":"2024-06-11T16:14:09Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I've received a few emails from Cloudflare sales but didn't make time to speak with them. Turns out they are developing a reputation for extortion. It's something we should have a plan for/think about. I'm expecting them to pull the plug just when we start onboarding partners. \r\n\r\n- https://robindev.substack.com/p/cloudflare-took-down-our-website\r\n- https://www.youtube.com/watch?v=8zj7ei5Egk8","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/.github/issues/111/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/.github/issues/111/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/.github/issues/110","repository_url":"https://api.github.com/repos/ubiquity/.github","labels_url":"https://api.github.com/repos/ubiquity/.github/issues/110/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/.github/issues/110/comments","events_url":"https://api.github.com/repos/ubiquity/.github/issues/110/events","html_url":"https://github.com/ubiquity/.github/issues/110","id":2319919681,"node_id":"I_kwDOIaGAy86KRypB","number":110,"title":"Ubiquity Credit","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":16,"created_at":"2024-05-28T00:25:18Z","updated_at":"2024-06-29T12:35:18Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I think we have a shot at making the crypto industry's first under collateralized credit program. \n\nNormally you need to be over collateralized to borrow, but, we have two key points of leverage in our infrastructure that can make under collateralized credit work. \n\n1. Contributor reputation: we can track a contributor's earnings over time and extend credit based on their monthly average earnings. For example, a user earns on average $5000 a month for the last three months, so they can borrow $5000 from us at X% APR if they need liquidity. Not sure what a good minimum threshold is but obviously the shorter the riskier. We could start a pilot with a whitelist of OG contributors first. We can consider only allowing card minting to disincentivize the use of leverage/trading with the funds. \n\n2. Permits: wages are distributed through our system and could be used for automatic payback (or garnishing wages) which could help make financing easier to payback. \n\nI think the biggest piece of advantage is the reputation system though. Contributors who have old GitHub profiles can be more inclined to pay back debts to continue using the system if they have an old GitHub profile and worked for a long time in the system.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/.github/issues/110/reactions","total_count":3,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":2,"eyes":1},"timeline_url":"https://api.github.com/repos/ubiquity/.github/issues/110/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/.github/issues/109","repository_url":"https://api.github.com/repos/ubiquity/.github","labels_url":"https://api.github.com/repos/ubiquity/.github/issues/109/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/.github/issues/109/comments","events_url":"https://api.github.com/repos/ubiquity/.github/issues/109/events","html_url":"https://github.com/ubiquity/.github/issues/109","id":2303921430,"node_id":"I_kwDOIaGAy86JUw0W","number":109,"title":"Backfill DB with legacy permits","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[{"id":5295864391,"node_id":"LA_kwDOIaGAy88AAAABO6h6Rw","url":"https://api.github.com/repos/ubiquity/.github/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":5502940439,"node_id":"LA_kwDOIaGAy88AAAABSAA1Fw","url":"https://api.github.com/repos/ubiquity/.github/labels/Price:%20200%20USD","name":"Price: 200 USD","color":"1f883d","default":false,"description":null},{"id":6006396164,"node_id":"LA_kwDOIaGAy88AAAABZgJVBA","url":"https://api.github.com/repos/ubiquity/.github/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":9,"created_at":"2024-05-18T08:16:32Z","updated_at":"2024-09-12T17:47:45Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Required by https://github.com/ubiquity/work.ubq.fi/pull/46\r\n\r\nUsing the CLI as-is or with required changes: \r\n\r\na) Collect permit data across ubiquity and ubiquibot orgs\r\nb) Insert this data in the permits table (idempotently)\r\n\r\n_original comment https://github.com/ubiquity/work.ubq.fi/pull/46#issuecomment-2115014677_\r\n\r\n##### time estimate: < 4 hrs\r\n\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/.github/issues/109/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/.github/issues/109/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/.github/issues/106","repository_url":"https://api.github.com/repos/ubiquity/.github","labels_url":"https://api.github.com/repos/ubiquity/.github/issues/106/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/.github/issues/106/comments","events_url":"https://api.github.com/repos/ubiquity/.github/issues/106/events","html_url":"https://github.com/ubiquity/.github/issues/106","id":2272446115,"node_id":"I_kwDOIaGAy86Hcsaj","number":106,"title":"[Airdrop CLI] - parse multiple orgs","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-04-30T21:03:06Z","updated_at":"2024-09-12T17:47:47Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Requirement for https://github.com/ubiquity/work.ubq.fi/pull/46\r\n\r\nThe CLI is only parsing the `Ubiquity` org for payments and needs to include at least:\r\n\r\n- `ubiquibot`\r\n\r\nPotentially User(s) too (I doubt it but needs clarity):\r\n\r\n- `0x4007`\r\n- `pavlovcik`\r\n\r\n> Also the numbers don't look right. I'm pretty sure the core team members collected more that what is shown on your screenshot.\r\n\r\n_Original comment https://github.com/ubiquity/work.ubq.fi/pull/46#issuecomment-2076581576_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/.github/issues/106/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/.github/issues/106/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/.github/issues/105","repository_url":"https://api.github.com/repos/ubiquity/.github","labels_url":"https://api.github.com/repos/ubiquity/.github/issues/105/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/.github/issues/105/comments","events_url":"https://api.github.com/repos/ubiquity/.github/issues/105/events","html_url":"https://github.com/ubiquity/.github/issues/105","id":2221044579,"node_id":"I_kwDOIaGAy86EYnNj","number":105,"title":"Autonomous Coding Agent","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":5295864391,"node_id":"LA_kwDOIaGAy88AAAABO6h6Rw","url":"https://api.github.com/repos/ubiquity/.github/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":6006396257,"node_id":"LA_kwDOIaGAy88AAAABZgJVYQ","url":"https://api.github.com/repos/ubiquity/.github/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":6772883661,"node_id":"LA_kwDOIaGAy88AAAABk7IAzQ","url":"https://api.github.com/repos/ubiquity/.github/labels/Price:%20600%20USD","name":"Price: 600 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":32,"created_at":"2024-04-02T17:20:14Z","updated_at":"2024-09-09T14:25:12Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"https://github.com/nus-apr/auto-code-rover\n\nhttps://x.com/abhikroychoudh1/status/1777494000611852515\n\nThis might be worth setting up as an experiment first, and then a github action that responds to new issues being opened, with an event dispatcher so that we can run when specifications are modified and finalized. \n\nFinally we can make it a plugin for our kernel as part of a future task. \n\nI imagine it will do well with the simpler, and tighter scoped tasks!","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/.github/issues/105/reactions","total_count":2,"+1":2,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/.github/issues/105/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/.github/issues/104","repository_url":"https://api.github.com/repos/ubiquity/.github","labels_url":"https://api.github.com/repos/ubiquity/.github/issues/104/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/.github/issues/104/comments","events_url":"https://api.github.com/repos/ubiquity/.github/issues/104/events","html_url":"https://github.com/ubiquity/.github/issues/104","id":2217770915,"node_id":"I_kwDOIaGAy86EMH-j","number":104,"title":"`ethcon.ubq.fi` and `ethcon-banner.ubq.fi`","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6006396118,"node_id":"LA_kwDOIaGAy88AAAABZgJU1g","url":"https://api.github.com/repos/ubiquity/.github/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":6006396164,"node_id":"LA_kwDOIaGAy88AAAABZgJVBA","url":"https://api.github.com/repos/ubiquity/.github/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":6766133725,"node_id":"LA_kwDOIaGAy88AAAABk0sB3Q","url":"https://api.github.com/repos/ubiquity/.github/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":14,"created_at":"2024-04-01T08:05:45Z","updated_at":"2024-05-02T08:19:30Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We have some swag bags we gave out with QR codes that go to those URLs. The banner is not on display these days but I figured we would fix it at the same time. Currently the QR codes are broken (they go to [ethcon.ubq.fi](https://dao.ubq.fi/ethcon))\r\n\r\nWe have a system that dynamically will link to our subdomains based on the repository name. For example, if I create a new repository called `test.ubq.fi` our continuous deploys script will automatically 1. create `test-ubq-fi.pages.dev` and 2. link our subdomain to it so that its immediately accessible on the internet from our subdomain. \r\n\r\nThe core magic is inside of this Cloudflare Worker logic:\r\n\r\n```js\r\naddEventListener('fetch', event => {\r\n event.respondWith(handleRequest(event.request))\r\n})\r\n\r\nasync function handleRequest(request) {\r\n const url = new URL(request.url)\r\n let address\r\n \r\n if (url.hostname === 'ubq.fi') {\r\n // Route root domain\r\n address = 'https://ubq-fi.pages.dev' + url.pathname\r\n } else {\r\n // Route subdomains\r\n const subdomain = url.hostname.split('.')[0]\r\n address = `https://${subdomain}-ubq-fi.pages.dev` + url.pathname\r\n }\r\n\r\n return fetch(address, request)\r\n}\r\n\r\n```\r\n\r\nWe should have some type of exceptions capability for simple forwarding. Perhaps a key/value map. \r\n\r\n```js\r\n{\r\n \"ethcon.ubq.fi\": \"https://dao.ubq.fi/ethcon\",\r\n \"ethcon-banner.ubq.fi\": \"https://dao.ubq.fi/ethcon-banner\",\r\n}\r\n```\r\n\r\nThis might be simple enough to just post the code as a comment here or something. I can manually test it and then we can complete the task. You really should attempt to test the code though, even if its substitute code that does the same thing.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/.github/issues/104/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":1,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/.github/issues/104/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/2","repository_url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator","labels_url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/2/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/2/comments","events_url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/2/events","html_url":"https://github.com/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/2","id":1454375703,"node_id":"I_kwDOIbdbd85WsAMX","number":2,"title":"Graph Compounding","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2022-11-18T03:28:59Z","updated_at":"2022-11-18T03:38:33Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I'm focusing on the \"breakeven line\" idea and its ability to accurately express when a position is compounded (yield is withdrawn, and redeposited.) Instead of graphing it as a ray (a line with one \"extended\" point) we can instead graph it as a line segment (no extended points) from the position deposit time, to when a position's size is modified. \r\n\r\nIf we add to the position size, then the breakeven line should be steeper (more fees should be accrued due to a larger position size.) I made a quick mockup using TradingView to illustrate this idea.\r\n\r\n![ETHUSDT_2022-11-18_11-36-13](https://user-images.githubusercontent.com/4975670/202611303-0420fcc3-b379-46c0-a8d8-fba435562108.png)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/2/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/2/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/1","repository_url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator","labels_url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/1/comments","events_url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/1/events","html_url":"https://github.com/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/1","id":1447349075,"node_id":"I_kwDOIbdbd85WRMtT","number":1,"title":"Dynamic Data Input","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2022-11-14T04:08:55Z","updated_at":"2022-11-14T04:23:59Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"# Dynamic Data Input on TradingView Indicator\r\n\r\nThe first major engineering challenge in order for this to be useful in realtime decision making is to allow for the script to have the capability to dynamically read position data from external data sources. I did quite a bit of research on this, and it appears that TradingView's PineScript does not currently have this capability. \r\n\r\nCurrently the variables must be manually input on the indicator. This can be done by double clicking the indicator on TradingView.\r\n\r\n![tv](https://user-images.githubusercontent.com/4975670/201572439-f6443b3e-5f1c-4abc-bc15-e8a0be86a129.jpg)\r\n\r\nThose variables are manually imported off of the data presented by Revert's UI\r\n\r\nhttps://revert.finance/#/uniswap-position/mainnet/312741\r\n\r\nThe founder of Revert passed me along this draft documentation of their private API. This was current as of 12 July 2022, as such there may have been some changes introduced since. This will allow you to access the information in JSON format. \r\n\r\n[apidocs.md](https://github.com/ubiquity/uniswap-v3-liquidity-provider-indicator/files/9999366/apidocs.md)\r\n\r\n---\r\n\r\n# Research\r\n\r\nI would encourage you to explore workarounds.\r\n\r\n### Workaround Strategy A - API Reverse Engineering\r\n\r\nI would highly recommend API reverse engineering so that there is FAR LESS infrastructure to support for this capability. Then we could have a super simple node program that simply pings Revert (GET) and TradingView (POST) APIs every minute or so.\r\n\r\n### Workaround Strategy B - Scraper\r\n\r\nHave a remote invoked [scraper](http://github.com/ubiquity/scraper) to manually log in to your TradingView account, and\r\n\r\n1. pass in the updated parameters using the settings panel (this might be possible by directly making the API request to update the user's settings vs having to navigate through the UI) or \r\n2. to hardcode the parameters and update the PineScript code.\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/1/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/1/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/339","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/339/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/339/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/339/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/339","id":2589415772,"node_id":"I_kwDOI-EJSM6aV1lc","number":339,"title":"Restore Clobbered Header Styles","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":5347112003,"node_id":"LA_kwDOI-EJSM8AAAABPrZ0Qw","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":""},{"id":7607987623,"node_id":"LA_kwDOI-EJSM8AAAABxXitpw","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Price:%206%20USD","name":"Price: 6 USD","color":"1f883d","default":false,"description":null},{"id":7607987625,"node_id":"LA_kwDOI-EJSM8AAAABxXitqQ","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Time:%20%3C15%20Minutes","name":"Time: <15 Minutes","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-10-15T17:24:32Z","updated_at":"2024-10-15T17:30:36Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Needs to be restored as my fixes were clobbered in pay.css at https://github.com/ubiquity/pay.ubq.fi/commit/84c49d8#diff-ac07c029a5c9ea7b89c95149341910381772e0a5d90f6470ca24d96ec55f2748\r\n\r\nCurrent incorrect header:\r\n\r\n![pay ubq fi__claim=W3sidHlwZSI6ImVyYzIwLXBlcm1pdCIsInBlcm1pdCI6eyJwZXJtaXR0ZWQiOnsidG9rZW4iOiIweGU5MUQxNTNFMGI0MTUxOEEyQ2U4RGQzRDc5NDRGYTg2MzQ2M2E5N2QiLCJhbW91bnQiOiI4NDkwMDAwMDAwMDAwMDAwMDAwIn0sIm5vbmNlIjoiNzY5NjUzNjc0NDQwNTQ3MzkwNTYzOTgwMT](https://github.com/user-attachments/assets/de6d5346-0c24-4a86-b29f-db44d15c8fa1)\r\n\r\n\r\nCorrect header: \r\n\r\n![694833ca pay-ubq-fi pages dev__claim=W3sidHlwZSI6ImVyYzIwLXBlcm1pdCIsInBlcm1pdCI6eyJwZXJtaXR0ZWQiOnsidG9rZW4iOiIweGU5MUQxNTNFMGI0MTUxOEEyQ2U4RGQzRDc5NDRGYTg2MzQ2M2E5N2QiLCJhbW91bnQiOiIwIn0sIm5vbmNlIjoiNTA3MjU2MTcyNzI2MzU2MTU0OTk1NjU0NDE0ODE](https://github.com/user-attachments/assets/cc5a9bf1-241f-4872-a3a0-ac8398574f66)\r\n\r\n\r\nhttps://694833ca.pay-ubq-fi.pages.dev/?claim=W3sidHlwZSI6ImVyYzIwLXBlcm1pdCIsInBlcm1pdCI6eyJwZXJtaXR0ZWQiOnsidG9rZW4iOiIweGU5MUQxNTNFMGI0MTUxOEEyQ2U4RGQzRDc5NDRGYTg2MzQ2M2E5N2QiLCJhbW91bnQiOiIwIn0sIm5vbmNlIjoiNTA3MjU2MTcyNzI2MzU2MTU0OTk1NjU0NDE0ODE0MDg1MDk0OTY4MTUwODI4MTcxMjQwNDM1NTUyNDAxMzM2ODYyNTM4MTUyNDM3NTQiLCJkZWFkbGluZSI6IjExNTc5MjA4OTIzNzMxNjE5NTQyMzU3MDk4NTAwODY4NzkwNzg1MzI2OTk4NDY2NTY0MDU2NDAzOTQ1NzU4NDAwNzkxMzEyOTYzOTkzNSJ9LCJ0cmFuc2ZlckRldGFpbHMiOnsidG8iOiIweGVmQzBlNzAxQTgyNDk0M2I0NjlhNjk0YUM1NjRBYTFlZkY3QWI3ZGQiLCJyZXF1ZXN0ZWRBbW91bnQiOiIwIn0sIm93bmVyIjoiMHhmMzlGZDZlNTFhYWQ4OEY2RjRjZTZhQjg4MjcyNzljZmZGYjkyMjY2Iiwic2lnbmF0dXJlIjoiMHg2ODJiYmVlOGNlMDg3Y2M0NGJlNzdkMjk0MzUyZjFhZGEzNWRlZGNmZWM1Yzk4NDE3ODg1MmI0ZTU2MmY1ZGUxMzQ0ZDljNTJlNWQ5M2FiZTEyNjBkOWYzMjU2N2I4YTA5YzY5OTEwZTM4MzFhMTkwMmY5MTE5ZTZiN2Q2ZDBhYTFjIiwibmV0d29ya0lkIjoxMDB9LHsidHlwZSI6ImVyYzIwLXBlcm1pdCIsInBlcm1pdCI6eyJwZXJtaXR0ZWQiOnsidG9rZW4iOiIweGU5MUQxNTNFMGI0MTUxOEEyQ2U4RGQzRDc5NDRGYTg2MzQ2M2E5N2QiLCJhbW91bnQiOiI5MDAwMDAwMDAwMDAwMDAwMDAwIn0sIm5vbmNlIjoiNDE3OTg2MDI4ODA3MjE5NTU4MDQ0MjcxNjAzNDY3NDM5MjA1MDkyMTU5MDk2MzkwNTcyODEyNDE5MTAxNTQzNTcxMTYwMDQyOTIzNSIsImRlYWRsaW5lIjoiMTE1NzkyMDg5MjM3MzE2MTk1NDIzNTcwOTg1MDA4Njg3OTA3ODUzMjY5OTg0NjY1NjQwNTY0MDM5NDU3NTg0MDA3OTEzMTI5NjM5OTM1In0sInRyYW5zZmVyRGV0YWlscyI6eyJ0byI6IjB4ZWZDMGU3MDFBODI0OTQzYjQ2OWE2OTRhQzU2NEFhMWVmRjdBYjdkZCIsInJlcXVlc3RlZEFtb3VudCI6IjkwMDAwMDAwMDAwMDAwMDAwMDAifSwib3duZXIiOiIweGYzOUZkNmU1MWFhZDg4RjZGNGNlNmFCODgyNzI3OWNmZkZiOTIyNjYiLCJzaWduYXR1cmUiOiIweDY4MmJiZWU4Y2UwODdjYzQ0YmU3N2QyOTQzNTJmMWFkYTM1ZGVkY2ZlYzVjOTg0MTc4ODUyYjRlNTYyZjVkZTEzNDRkOWM1MmU1ZDkzYWJlMTI2MGQ5ZjMyNTY3YjhhMDljNjk5MTBlMzgzMWExOTAyZjkxMTllNmI3ZDZkMGFhMWMiLCJuZXR3b3JrSWQiOjEwMH1d","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/339/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/339/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/305","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/305/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/305/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/305/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/305","id":2526554642,"node_id":"I_kwDOI-EJSM6WmCoS","number":305,"title":"RPC Handler","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-09-14T18:29:51Z","updated_at":"2024-09-14T18:30:04Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I don't know why you couldn't handle it in that pull but please address asap \n\n> I'd use the new single RPC provider method from the `rpc-handler` and use `networkId: \"1\"`. The reason why the single, is because mainnet has a lot of RPCs and there's no need for us to hit them all just for a single read op in my opinion.\n\n_Originally posted by @Keyrxng in https://github.com/ubiquity/pay.ubq.fi/pull/297#discussion_r1754236706_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/305/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/305/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/292","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/292/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/292/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/292/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/292","id":2510717284,"node_id":"I_kwDOI-EJSM6VpoFk","number":292,"title":"Add a style inversion script and bundle css in single file on build","user":{"login":"EresDev","id":11886219,"node_id":"MDQ6VXNlcjExODg2MjE5","avatar_url":"https://avatars.githubusercontent.com/u/11886219?v=4","gravatar_id":"","url":"https://api.github.com/users/EresDev","html_url":"https://github.com/EresDev","followers_url":"https://api.github.com/users/EresDev/followers","following_url":"https://api.github.com/users/EresDev/following{/other_user}","gists_url":"https://api.github.com/users/EresDev/gists{/gist_id}","starred_url":"https://api.github.com/users/EresDev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EresDev/subscriptions","organizations_url":"https://api.github.com/users/EresDev/orgs","repos_url":"https://api.github.com/users/EresDev/repos","events_url":"https://api.github.com/users/EresDev/events{/privacy}","received_events_url":"https://api.github.com/users/EresDev/received_events","type":"User","site_admin":false},"labels":[{"id":5347112003,"node_id":"LA_kwDOI-EJSM8AAAABPrZ0Qw","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":""},{"id":5574937316,"node_id":"LA_kwDOI-EJSM8AAAABTErK5A","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null},{"id":5831150872,"node_id":"LA_kwDOI-EJSM8AAAABW5BNGA","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-09-06T15:41:24Z","updated_at":"2024-09-30T12:28:25Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"reference: https://github.com/ubiquity/pay.ubq.fi/pull/277#discussion_r1739996098\r\n\r\nWe want to write css that is used for the dark theme by default. And the styling for the light theme should be generated automatically by a script on build. There is a [script](https://github.com/ubiquity/work.ubq.fi/blob/development/build/plugins/invert-colors.ts) that does similar work in `work.ubq.fi` repository. Don't hesitate to use it if it is helpful. \r\n\r\nWith this script, you will also have to refactor the existing CSS. \r\n\r\nCurrently, multiple CSS files exist for different purposes, e.g., light mode, gift card, rewards. It will be a good idea to bundle the CSS in a single CSS file on build so that the web page loads only one CSS file. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/292/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/292/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/291","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/291/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/291/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/291/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/291","id":2501478904,"node_id":"I_kwDOI-EJSM6VGYn4","number":291,"title":"Add retry mechanism for partially failed virtual card order","user":{"login":"EresDev","id":11886219,"node_id":"MDQ6VXNlcjExODg2MjE5","avatar_url":"https://avatars.githubusercontent.com/u/11886219?v=4","gravatar_id":"","url":"https://api.github.com/users/EresDev","html_url":"https://github.com/EresDev","followers_url":"https://api.github.com/users/EresDev/followers","following_url":"https://api.github.com/users/EresDev/following{/other_user}","gists_url":"https://api.github.com/users/EresDev/gists{/gist_id}","starred_url":"https://api.github.com/users/EresDev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EresDev/subscriptions","organizations_url":"https://api.github.com/users/EresDev/orgs","repos_url":"https://api.github.com/users/EresDev/repos","events_url":"https://api.github.com/users/EresDev/events{/privacy}","received_events_url":"https://api.github.com/users/EresDev/received_events","type":"User","site_admin":false},"labels":[{"id":5347112118,"node_id":"LA_kwDOI-EJSM8AAAABPrZ0tg","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":""},{"id":5831150944,"node_id":"LA_kwDOI-EJSM8AAAABW5BNYA","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Time:%20%3C4%20Hours","name":"Time: <4 Hours","color":"ededed","default":false,"description":null},{"id":6508028441,"node_id":"LA_kwDOI-EJSM8AAAABg-iiGQ","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Price:%20150%20USD","name":"Price: 150 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-09-02T19:06:45Z","updated_at":"2024-09-09T18:15:47Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"In the virtual card feature, we have two parts in a single transaction to mint a virtual card.\r\n\r\n1. Claim the permit by transferring the permit reward to the treasury wallet\r\n2. If the step-1 is successful, order the virtual card at Reloadly\r\n\r\nThe problem is that the transaction isn't atomic because each step happens in a different system. Step-2 can fail while still leaving the permit amount in the treasury. Why would step-2 fail? There could be one of the many reasons.\r\n\r\n- virtual card suddenly becoming out of stock\r\n- any network error on user side or Reloadly side\r\n- user closing browser before the permit transaction confirmation\r\n- change in the best picked card, suddenly a better card becomes available or currently picked card becomes unavailable\r\n- [RPC-handler](https://github.com/ubiquity/rpc-handler) failing to find rpc for backend to use, or if it finds one but the rpc stops working\r\n\r\nCurrently, the solution to this problem is manual. It is either a manual refund or manual resending of the card order request to `/post-order` with some parameters (productId, tx hash, country).\r\n\r\nWe can improve this by implementing one of the following solutions.\r\n- a manual refund can become automatic by issuing a new permit of the same amount\r\n- resend the mint request to backend to `/post-order`\r\n\r\nI am inclined towards resending the mint request. One problem is that `/post-order` needs the transaction hash of the permit transfer to the treasury. Sometimes you will have it, and you can store it in the cookies/local storage. But sometimes you will not have it and you will have to read it either from blockchain or ask the user to manually insert the transaction hash to retry minting. I think you can read it from blockchain by looking into [permit2 events](https://gnosisscan.io/address/0x000000000022d473030f116ddee9f6b43ac78ba3#events) \r\n\r\nThe goal of this issue is to implement a mechanism to resend the mint request or a better solution if you can think of one. \r\n\r\nSince the best-picked virtual card can change in this duration, a better option is to rename the mint button to \"Retry Mint\" and let the user click first so that user can see they are ordering a different card now. \r\n\r\nPlease note that the virtual cards feature is present in `beta` branch at the moment. But it can move to development branch anytime. So, keep an eye on that and open a PR accordingly.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/291/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/291/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/289","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/289/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/289/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/289/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/289","id":2491491906,"node_id":"I_kwDOI-EJSM6UgSZC","number":289,"title":"Generate rolled up payouts","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":5347111904,"node_id":"LA_kwDOI-EJSM8AAAABPrZz4A","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Time:%20%3C1%20Week","name":"Time: <1 Week","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":22,"created_at":"2024-08-28T08:57:47Z","updated_at":"2024-10-01T21:40:34Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Depends on https://github.com/ubiquibot/conversation-rewards/issues/64\r\n\r\n[This](https://github.com/ubiquibot/conversation-rewards/issues/64) issue adds the \"reward amount rollup\" feature which adds a new DB table `rewards`.\r\n\r\nOverall right now (when https://github.com/ubiquibot/conversation-rewards/issues/64 is solved) there are 2 tables related to contributors' rewards:\r\n1. `rewards`: matches a single github issue with a single user reward\r\n2. `permits`: stores generated accumulated rewards\r\n\r\nThe plan is to allow contributors to select the reward amount they want to redeem (either via permits either via gift cards).\r\n\r\nExample flow with permits:\r\n1. User solves an issue worth 10 WXDAI (permit is not generated, the `rewards` table has 1 DB entity).\r\n2. User solves another issue worth 20 WXDAI. (permit is not generated, at this point the `rewards` table has 2 entities)\r\n3. User opens `pay.ubq.fi`, selects 25 WXDAI to redeem and generates a single permit worth 25 WXDAI (a new entity is added to the `permits` table).\r\n4. User opens `pay.ubq.fi` again, selects 5 WXDAI to redeem and generates a single permit worth 5 WXDAI (a new entity is added to the `permits` table).\r\n5. User opens `pay.ubq.fi` again, selects 100 WXDAI to redeem and gets an error since there are no more funds available\r\n\r\nExample flow with gift cards:\r\n1. User solves an issue worth 10 WXDAI (the `rewards` table has 1 DB entity).\r\n2. User solves another issue worth 20 WXDAI. (at this point the `rewards` table has 2 entities)\r\n3. User opens `pay.ubq.fi`, selects 25 WXDAI to redeem and generates a new gift card worth 25 WXDAI (a new entity is added to the `gift_cards` table).\r\n4. User opens `pay.ubq.fi` again, selects 5 WXDAI to redeem and generates another gift card worth 5 WXDAI (a new entity is added to the `gift_cards` table).\r\n5. User opens `pay.ubq.fi` again, selects 100 WXDAI to redeem and gets an error since there are no more funds available\r\n\r\nSo as a part of this issue we should:\r\n1. Allow users to select available rewards amount (on the backend subtract the sum of redeemed permits and gift cards from total rewards stored in the `rewards` table).\r\n2. On gift card creation save it to a DB (to the newly added `gift_cards` table)\r\n3. On permit generation save it to a DB (to the `permits` table that already exists)\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/289/reactions","total_count":3,"+1":3,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/289/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/284","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/284/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/284/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/284/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/284","id":2479425235,"node_id":"I_kwDOI-EJSM6TyQbT","number":284,"title":"Update testing scripts","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[{"id":5347112003,"node_id":"LA_kwDOI-EJSM8AAAABPrZ0Qw","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":""},{"id":5379629267,"node_id":"LA_kwDOI-EJSM8AAAABQKag0w","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Price:%2025%20USD","name":"Price: 25 USD","color":"1f883d","default":false,"description":null},{"id":5831150872,"node_id":"LA_kwDOI-EJSM8AAAABW5BNGA","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-08-21T23:37:39Z","updated_at":"2024-08-22T01:03:33Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Requires #274\r\n\r\nThe linked PR introduces support for stacked permits and extends multi-network capabilities.\r\n\r\n**Proposed changes for streamlined testing:**\r\n\r\n- **Setup two Anvil instances:**\r\n - One targeting Gnosis (current setup).\r\n - Another targeting Ethereum.\r\n\r\n- **Configuration requirements:**\r\n - The new instance should operate on port `8546` with networkId `31338`.\r\n\r\n- **Funding script updates:**\r\n - Update the funding script to reflect the \"whale\" address as the updated \"WXDAI\" token holder for this network.\r\n - Set distinct approvals and balances compared to the first instance for clarity.\r\n\r\n- **Script adjustments:**\r\n - Eliminate `process.env` usage and hardcode necessary values to enhance clarity and prevent operational errors during script execution.\r\n\r\n- **Permit generation:**\r\n - Generate two permits from the original instance and one from the new instance, to avoid breaking old tests.\r\n\r\n- **Additional testing scripts:**\r\n - Introduce `test:anvil-eth` and `test:fund-eth` scripts, to be utilized only when testing this feature.\r\n\r\n- **RPC Handler Update:**\r\n - Implement a `NODE_ENV` check in `use-rpc-handler` to ensure compatibility:\r\n ```javascript\r\n return new ethers.providers.JsonRpcProvider(\r\n networkId === 31337 ? \"http://localhost:8545\" : \"http://localhost:8546\", networkId\r\n );\r\n ```\r\n This ensures the correct provider is returned since `31338` is not a supported network in the `rpcHandler` package\r\n\r\n##### time: 2 hours","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/284/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/284/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/271","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/271/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/271/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/271/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/271","id":2445781871,"node_id":"I_kwDOI-EJSM6Rx6tv","number":271,"title":"Unit tests for virtual cards backend","user":{"login":"EresDev","id":11886219,"node_id":"MDQ6VXNlcjExODg2MjE5","avatar_url":"https://avatars.githubusercontent.com/u/11886219?v=4","gravatar_id":"","url":"https://api.github.com/users/EresDev","html_url":"https://github.com/EresDev","followers_url":"https://api.github.com/users/EresDev/followers","following_url":"https://api.github.com/users/EresDev/following{/other_user}","gists_url":"https://api.github.com/users/EresDev/gists{/gist_id}","starred_url":"https://api.github.com/users/EresDev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EresDev/subscriptions","organizations_url":"https://api.github.com/users/EresDev/orgs","repos_url":"https://api.github.com/users/EresDev/repos","events_url":"https://api.github.com/users/EresDev/events{/privacy}","received_events_url":"https://api.github.com/users/EresDev/received_events","type":"User","site_admin":false},"labels":[{"id":5347111904,"node_id":"LA_kwDOI-EJSM8AAAABPrZz4A","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Time:%20%3C1%20Week","name":"Time: <1 Week","color":"ededed","default":false,"description":null},{"id":5347112068,"node_id":"LA_kwDOI-EJSM8AAAABPrZ0hA","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":""},{"id":6563954076,"node_id":"LA_kwDOI-EJSM8AAAABhz39nA","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Price:%20800%20USD","name":"Price: 800 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":13,"created_at":"2024-08-02T21:26:53Z","updated_at":"2024-09-10T05:15:47Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"The tests with this repository are e2e tests. That's how I started the virtual cards feature and used e2e tests. \r\nAs the feature is getting refined, I think it would be good idea to bring in unit tests for the backend functions. Cloudflare [recommends vitest](https://developers.cloudflare.com/workers/testing/vitest-integration/get-started/) because backend functions are Cloudflare pages function. Along with the general advantages of unit tests over e2e tests, I see following reasons to have them. \r\n\r\n- These tests will mock Reloadly, which e2e is not doing and the recent problem with their API slowed our progress.\r\n- Testing edge cases for the security of order placement will be easier \r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/271/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/271/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/252","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/252/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/252/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/252/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/252","id":2358275306,"node_id":"I_kwDOI-EJSM6MkGzq","number":252,"title":"Safe{Wallet} First Class Support on Gnosis Chain","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-06-17T21:17:01Z","updated_at":"2024-06-17T21:22:52Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"This solution isn't fully developed as it only works for a single chain, making it cumbersome for users if partners use different chains. Deploying a SAFE with the same address across multiple chains is challenging.\r\n\r\nHowever, by adding a special feature for Gnosis Chain, which sponsors up to five transactions per hour, we can enhance the user experience by eliminating gas fee concerns.\r\n\r\nThis approach addresses our issues related to creating a faucet.\r\n\r\n[More about gas fee sponsoring](https://help.safe.global/en/articles/59203-what-is-gas-fee-sponsoring)\r\n\r\n### An idea for seamless UX: \r\n\r\nThis may require generating a private signing key in browser, proposal [here](https://github.com/ubiquity/pay.ubq.fi/issues/219). Once the signing key has been added to the user's SAFE as an authorized signer, it should be able to prompt the SAFE that new transactions are waiting to be approved. This would work well on mobile due to the push notifications SAFE produces when a signature request occurs. \r\n\r\nAs for desktop I am not 100% sure.\r\n\r\nThe best part about this is that the gas fee will be sponsored, so the in browser signing key never has to hold any value. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/252/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":1,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/252/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/228","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/228/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/228/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/228/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/228","id":2321682172,"node_id":"I_kwDOI-EJSM6KYg78","number":228,"title":"Gnosis Pay Integration","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-05-28T18:29:57Z","updated_at":"2024-06-04T12:37:35Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Related https://github.com/ubiquity/pay.ubq.fi/pull/226\r\n\r\nI met the Gnosis Pay team at EthBerlin last week, and they reached back out expressing light interest in a partnership. I proposed that we can integrate Gnosis Pay card signups in our UI. The primary benefit of this from our perspective is: \r\n\r\n1. The end user experience can be superior with a single card vs needing to mint prepaid cards all the time.\r\n2. Relationship building with the Gnosis team for future collaboration. \r\n3. Can propose co-marketing (and ideally even piloting with our system) so that we can have more users. \r\n\r\nTo start, we can link users to the Gnosis Pay website for registration, and then potentially have the card details displayed on the rewards UI. We should have a \"claim to Gnosis Card\" button once the user's card is set up. \r\n\r\nWe can consider a separate page (separate UI code) to streamline the logic and ensure that Gnosis Pay users UI isn't co-mingled with the prepaid card logic. This can make the codebase more manageable as well. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/228/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/228/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/219","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/219/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/219/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/219/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/219","id":2237382475,"node_id":"I_kwDOI-EJSM6FW79L","number":219,"title":"research `EIP-4337` (account abstraction)","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-04-11T10:14:50Z","updated_at":"2024-04-13T07:26:50Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Research task for implementing AA\r\n\r\n# Current available options\r\n\r\n- https://github.com/ubiquity/pay.ubq.fi/issues/219#issuecomment-2049546074\r\n\r\n# High level overview of changes\r\n\r\n...\r\n\r\n# Breaking Changes introduced\r\n\r\n- Viem will definitely be a requirement\r\n\r\n_additional context_\r\n\r\n- https://github.com/ubiquity/pay.ubq.fi/issues/218#issuecomment-2049331282\r\n\r\n> I really dislike wallet connect, or any of the existing UX. I think modern web3/wallet UX is horrible. I would like to implement something different.\r\n\r\n> To be honest, in regards to innovation, I would prefer to figure a way for a user without a web3 enabled wallet to be able to claim. For example, generating an in-browser wallet based on some webauth API etc. They can use on-device biometrics as a type of seed key. There's even a way to share the biometric seed across all iCloud connected devices (I've done with with logging into Cloudflare, GitHub, from iPhone and Mac.\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquity/pay.ubq.fi/issues/218#issuecomment-2047117130_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/219/reactions","total_count":1,"+1":0,"-1":0,"laugh":1,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/219/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/196","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/196/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/196/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/196/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/196","id":2178269668,"node_id":"I_kwDOI-EJSM6B1cHk","number":196,"title":"Redo Carousel","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":5347111851,"node_id":"LA_kwDOI-EJSM8AAAABPrZzqw","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":5347112068,"node_id":"LA_kwDOI-EJSM8AAAABPrZ0hA","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":""},{"id":5831151032,"node_id":"LA_kwDOI-EJSM8AAAABW5BNuA","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Price:%20400%20USD","name":"Price: 400 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":35,"created_at":"2024-03-11T05:36:03Z","updated_at":"2024-10-14T13:29:49Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I think the aesthetics are not good with the carousel. \r\n\r\n\r\n\r\n![localhost_8080__claim=W3sidHlwZSI6ImVyYzIwLXBlcm1pdCIsInBlcm1pdCI6eyJwZXJtaXR0ZWQiOnsidG9rZW4iOiIweGU5MUQxNTNFMGI0MTUxOEEyQ2U4RGQzRDc5NDRGYTg2MzQ2M2E5N2QiLCJhbW91bnQiOiIwIn0sIm5vbmNlIjoiNzk2NDgxODQwMDA5MzQ0ODI4NzA0NjE0NjAzMDE2NDE5NzU4NTM0Nz](https://github.com/ubiquity/pay.ubq.fi/assets/4975670/5ec55e3d-80bc-4c7c-9620-a65fa198add6)\r\n\r\n\r\nInstead we should render all the permits vertically stacked all at once. Something like the following:\r\n\r\n![localhost_8080__claim=W3sidHlwZSI6ImVyYzIwLXBlcm1pdCIsInBlcm1pdCI6eyJwZXJtaXR0ZWQiOnsidG9rZW4iOiIweGU5MUQxNTNFMGI0MTUxOEEyQ2U4RGQzRDc5NDRGYTg2MzQ2M2E5N2QiLCJhbW91bnQiOiIwIn0sIm5vbmNlIjoiNzk2NDgxODQwMDA5MzQ0ODI4NzA0NjE0NjAzMDE2NDE5NzU4NT (1)](https://github.com/ubiquity/pay.ubq.fi/assets/4975670/ca63949d-0599-4f78-bbfd-a3d11ffa618c)\r\n\r\nI suspect that we will need to redo quite a bit of logic, as the app seems to be designed only to render one at a time.","closed_by":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/196/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/196/timeline","performed_via_github_app":null,"state_reason":"reopened"},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/174","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/174/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/174/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/174/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/174","id":2148459485,"node_id":"I_kwDOI-EJSM6ADuPd","number":174,"title":"Payouts v2","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":18,"created_at":"2024-02-22T08:03:39Z","updated_at":"2024-05-06T09:59:07Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We have plans to support:\r\n1. Payouts to crypto wallets (we use them already)\r\n2. Payouts to virtual and physical bank cards\r\n3. Redeeming NFT rewards \r\n\r\nIt makes sense to redo the `pay.ubq.fi` page into a \"single payouts dashboard\" from a collaborator's point of view.\r\n\r\nUser stories which we should support:\r\n1. As a contributor I want to connect a crypto wallet to have access to the payout dashboard\r\n2. As a contributor I want to see the rewards amount\r\n3. As a contributor I want to see a list of NFT rewards\r\n4. As a contributor I want to get rewards to a crypto wallet\r\n5. As a contributor I want to get rewards to a virtual card\r\n\r\nThis is a draft wireframe: https://www.figma.com/file/vdjASBTDbYBFmL7CtAYXwM/Payouts-v2?type=whiteboard&node-id=0%3A1&t=uWa3OMqLSCoOvkDG-1\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/174/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/174/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/118","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/118/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/118/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/118/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/118","id":1845198806,"node_id":"I_kwDOI-EJSM5t-3_W","number":118,"title":"Relayer Support: Set Up Relayer Backend","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2023-08-10T13:31:03Z","updated_at":"2024-02-21T23:33:06Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"- So we can claim permits on behalf of users directly. \r\n- Or simulate that by invalidating the permit and doing a direct transfer to their wallet.\r\n\r\nWe must figure out how to calculate the fees so that the dynamic gas fee will always be covered, plus a profit.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/118/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/118/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/117","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/117/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/117/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/117/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/117","id":1845198711,"node_id":"I_kwDOI-EJSM5t-393","number":117,"title":"Relayer Support: Edit UI","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2023-08-10T13:31:00Z","updated_at":"2024-02-21T08:26:02Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"- [ ] Check if no wallet is connected\r\n- [ ] Display claim button always now\r\n- [ ] If wallet not connected then when user clicks a toaster should explain: \r\n - That they can connect their wallet and claim directly, which only will cost them gas fees. \r\n - Warn user about x% fee to use the Ubiquity relayer service. \r\n- [ ] User clicks button and relayer handles the claim. \r\n\r\nWe need to figure out how to calculate the total relayer cost because it must cover dynamic gas fees.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/117/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/117/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/116","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/116/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/116/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/116/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/116","id":1845191711,"node_id":"I_kwDOI-EJSM5t-2Qf","number":116,"title":"Payment Permit Relayer","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":5347111904,"node_id":"LA_kwDOI-EJSM8AAAABPrZz4A","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Time:%20%3C1%20Week","name":"Time: <1 Week","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2023-08-10T13:27:03Z","updated_at":"2023-11-16T23:53:36Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I was looking at my permit claim on my phone and realized that it would be really convenient if I could claim from my phone browser which does NOT have web3 wallet support. \r\n\r\n- Let's set up a relayer that will allow users to claim their permits if they click claim without a wallet. \r\n- In case we can't execute the claim on their behalf directly, we can simulate it by invalidating the permit, and then transferring the DAI to them? Although I hope we can just execute the claim directly on their behalf. \r\n- The relayer should take a configurable fee. Let's say 1% to start. \r\n- [Reference claim](https://pay.ubq.fi/?claim=eyJwZXJtaXQiOnsicGVybWl0dGVkIjp7InRva2VuIjoiMHhlOTFEMTUzRTBiNDE1MThBMkNlOERkM0Q3OTQ0RmE4NjM0NjNhOTdkIiwiYW1vdW50IjoiNTYyNTAwMDAwMDAwMDAwMDAwMDAifSwibm9uY2UiOiI0NDAxODcxODUzMDE2Mzc5NjQ4MzU3NzczMTY3MDM2MTc1MDUyMDMwMTUyMzU0OTU4MTg5MTA3MDkxMzg1NDA1NTczMzE0NDcwNDEwNyIsImRlYWRsaW5lIjoiMTE1NzkyMDg5MjM3MzE2MTk1NDIzNTcwOTg1MDA4Njg3OTA3ODUzMjY5OTg0NjY1NjQwNTY0MDM5NDU3NTg0MDA3OTEzMTI5NjM5OTM1In0sInRyYW5zZmVyRGV0YWlscyI6eyJ0byI6IjB4NDAwN0NFMjA4M2M3RjNFMTgwOTdhZUIzQTM5YmI4ZUMxNDlhMzQxZCIsInJlcXVlc3RlZEFtb3VudCI6IjU2MjUwMDAwMDAwMDAwMDAwMDAwIn0sIm93bmVyIjoiMHhmODdjYTQ1ODNDNzkyMjEyZTUyNzIwZDEyN0U3RTBBMzhCODE4YUQxIiwic2lnbmF0dXJlIjoiMHhlMmRmNzhkYzJmYmVlMTZmZDU3ZTQ4Yzc0OGNlNDBiZGI2MGYwYWU1ZDQ5YzE0ODJhMWI5ZmUxY2EzODY1MGNhMjZlZjc5OWM5NjcxNDhkYWQ2MDBlMjY2MDg4NTVlZTdmYmViMzU5NDE4MzA4MDIwNWFjNmZlMjg3ZDQzZGIxMjFjIn0=&network=100).\r\n---\r\n- [ ] #117\r\n- [ ] #118","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/116/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/116/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ts-template/issues/67","repository_url":"https://api.github.com/repos/ubiquity/ts-template","labels_url":"https://api.github.com/repos/ubiquity/ts-template/issues/67/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ts-template/issues/67/comments","events_url":"https://api.github.com/repos/ubiquity/ts-template/issues/67/events","html_url":"https://github.com/ubiquity/ts-template/issues/67","id":2588143158,"node_id":"I_kwDOJGfp8c6aQ-42","number":67,"title":"Use js frontend framework","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":12,"created_at":"2024-10-15T09:14:37Z","updated_at":"2024-10-15T20:31:24Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"This is the 4th or 5th time the topic is discussed. Right now we don't use any JS framework for our frontend applications. Although this approach is probably fine for small scale apps it doesn't stand against frontend apps with a large codebase.\r\n\r\nCheck https://github.com/ubiquity/pay.ubq.fi/tree/development/static for example, which already became kind of a mess because it's hard to distinguish separate pages, separate components, render methods, utils, etc... Not to mention that unit/snapshort/e2e testing is complicated in such codebase.\r\n\r\nWe need a JS framework with these features:\r\n- it should take 1 hour to grasp the docs\r\n- popular\r\n- good for small scale apps\r\n- team members and contributors should be comfortable to use it\r\n\r\nI've personally heard good reviews about:\r\n- https://preactjs.com/\r\n- https://alpinejs.dev/\r\n\r\nSince I personally have more experience with react then, perhaps, https://preactjs.com/ worth a shot.\r\n\r\nSo as a part of this issue we should refactor https://github.com/ubiquity/ts-template to use a selected JS framework in a **structured** way:\r\n- pages\r\n- components\r\n- services\r\n- store\r\n- utils\r\n- test\r\n- etc...","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ts-template/issues/67/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ts-template/issues/67/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ts-template/issues/61","repository_url":"https://api.github.com/repos/ubiquity/ts-template","labels_url":"https://api.github.com/repos/ubiquity/ts-template/issues/61/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ts-template/issues/61/comments","events_url":"https://api.github.com/repos/ubiquity/ts-template/issues/61/events","html_url":"https://github.com/ubiquity/ts-template/issues/61","id":2565894806,"node_id":"I_kwDOJGfp8c6Y8HKW","number":61,"title":"Automatic sync v2","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":5440623867,"node_id":"LA_kwDOJGfp8c8AAAABRElU-w","url":"https://api.github.com/repos/ubiquity/ts-template/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":6498575088,"node_id":"LA_kwDOJGfp8c8AAAABg1hi8A","url":"https://api.github.com/repos/ubiquity/ts-template/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":7519278198,"node_id":"LA_kwDOJGfp8c8AAAABwC8Udg","url":"https://api.github.com/repos/ubiquity/ts-template/labels/Price:%20400%20USD","name":"Price: 400 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":19,"created_at":"2024-10-04T09:21:28Z","updated_at":"2024-10-14T17:01:57Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"[This](https://github.com/ubiquity/ts-template/pull/56) PR introduced a [workflow](https://github.com/zyrafal/ts-template/blob/89b942ed3a2d87c00f2bf61057586e0ead5119d3/.github/workflows/sync-template.yml) for syncing https://github.com/ubiquity/ts-template repository template with all of our other repositories.\r\n\r\nThere are a couple of issues:\r\n1. It doesn't work as expected. Check [this](https://github.com/ubiquity/work.ubq.fi/pull/101) PR for example which:\r\n a) [Clears](https://github.com/ubiquity/work.ubq.fi/pull/101/files#diff-3e8602c86d6cf04a5c74b954f9f957b652617102cf8f4b647fe46989f480861d) the main page\r\n b) [Removes](https://github.com/ubiquity/work.ubq.fi/pull/101/files#diff-7ae45ad102eab3b6d7e7896acd08c427a9b25b346470d7bc6507b6481575d519) required dependencies\r\n2. For \"auto sync\" to work we need to keep the [sync-template.yml](https://github.com/ubiquity/audit.ubq.fi/blob/205cc736abac8019debc28ab2d4a2d21344d3cef/.github/workflows/sync-template.yml) in all of our repositories\r\n\r\n\"Auto sync\" may be useful for small changes like CI updates, ts config edits, etc... [Such](https://github.com/ubiquity/work.ubq.fi/pull/101) PRs introduce too many changes which are hard to debug and fix.\r\n\r\nWhat should be done:\r\n1. Remove [sync-template.yml](https://github.com/ubiquity/ts-template/blob/858ab74ead68d8954a8e32074c9b0eb805c5b6ca/.github/workflows/sync-template.yml) from all of our repositories and keep it only in a single place like https://github.com/ubiquity/.github\r\n2. Refactor [sync-template.yml](https://github.com/ubiquity/ts-template/blob/858ab74ead68d8954a8e32074c9b0eb805c5b6ca/.github/workflows/sync-template.yml) to sync **only whitelisted files** (like `deploy.yml` or `tsconfig.json`) with the following strategy:\r\n - `ts-template`: file added, `target-repo`: file missing => propose adding a file\r\n - `ts-template`: file modified, `target-repo`: file exists => propose change\r\n - `ts-template`: file deleted, `target-repo`: file exists => propose delete\r\n\r\nP.S. For authentication you may use github PAT of this user https://github.com/ubiquity-devpool","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ts-template/issues/61/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ts-template/issues/61/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/45","repository_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties","labels_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/45/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/45/comments","events_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/45/events","html_url":"https://github.com/ubiquity/devpool-directory-bounties/issues/45","id":2572156857,"node_id":"I_kwDOJhaJks6ZT_-5","number":45,"title":"Fork Linkback Fix","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":5487930438,"node_id":"LA_kwDOJhaJks8AAAABRxssRg","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Priority:%204%20(Urgent)","name":"Priority: 4 (Urgent)","color":"ededed","default":false,"description":""},{"id":7573228815,"node_id":"LA_kwDOJhaJks8AAAABw2ZNDw","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Time:%20%3C15%20Minutes","name":"Time: <15 Minutes","color":"ededed","default":false,"description":null},{"id":7573228821,"node_id":"LA_kwDOJhaJks8AAAABw2ZNFQ","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Price:%2024%20USD","name":"Price: 24 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2024-10-08T05:52:57Z","updated_at":"2024-10-08T17:25:45Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"\r\n> Yes but to clarify this used to work as expected. The problem now is that it seems when the task is assigned and unassigned, it links back even on forks.\r\n\r\nSo the issue is:\r\n1. New devpool issue is created\r\n2. Fork of https://github.com/ubiquity/devpool-directory creates a new issue with `www` prefix (which is expected) in order not to reference (i.e. spam) the original issue ([example](https://github.com/jordan-ae/devpool-directory/issues/1025))\r\n3. Devpool issue is closed because somebody was assigned\r\n4. Devpool issue is reopened because somebody was unassigned\r\n5. Now the forked issue displays github issue URL without the `www` prefix (while expected behavior to display URL with the `www` prefix) thus spamming original issue ([example](https://github.com/jordan-ae/devpool-directory/issues/867))\r\n\r\n---\r\n\r\nhttps://github.com/jordan-ae/devpool-directory/issues/867\r\n\r\nWhen it is reopened, it writes the non `www.` prefixed link to the issue, which \"references\" the original issue which appears as spam \r\n\r\n\r\n\r\n![github com_ubiquity_ubiquity-dollar_issues_937](https://github.com/user-attachments/assets/fc1a3abd-c9a7-4588-b966-8e90995875de)\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/45/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/45/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/44","repository_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties","labels_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/44/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/44/comments","events_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/44/events","html_url":"https://github.com/ubiquity/devpool-directory-bounties/issues/44","id":2556872979,"node_id":"I_kwDOJhaJks6YZskT","number":44,"title":"Improve/Fix Jest Tests","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":5487930294,"node_id":"LA_kwDOJhaJks8AAAABRxsrtg","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":""},{"id":5905387945,"node_id":"LA_kwDOJhaJks8AAAABX_0RqQ","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Time:%20%3C4%20Hours","name":"Time: <4 Hours","color":"ededed","default":false,"description":null},{"id":6474952418,"node_id":"LA_kwDOJhaJks8AAAABge_u4g","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Price:%20200%20USD","name":"Price: 200 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-09-30T14:32:42Z","updated_at":"2024-09-30T15:13:35Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I broke them and we need to get them fixed. More tests are a plus!","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/44/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/44/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/42","repository_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties","labels_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/42/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/42/comments","events_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/42/events","html_url":"https://github.com/ubiquity/devpool-directory-bounties/issues/42","id":2540596143,"node_id":"I_kwDOJhaJks6Xbmuv","number":42,"title":"ID and Partner label mismatch","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[{"id":5487930368,"node_id":"LA_kwDOJhaJks8AAAABRxssAA","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-09-22T01:54:43Z","updated_at":"2024-10-08T16:04:14Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"So it seems that when an issue is transferred to another repository or organization that the issue takes on a new `node_id` so we must update our logic to handle out-of-sync labels.\r\n\r\nWe should also aim to remove any partner issues that have been deleted (I assume) but still exist within the devpool as they can belong to repos that have been deleted.\r\n\r\nSince we already have the `IssueRemover` class we can borrow it and delete any erroneous tasks before we perform any state changes.\r\n\r\nI think we should also delete any devpool issues that's body does not match the typical url formatting standard.\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/42/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/42/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/41","repository_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties","labels_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/41/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/41/comments","events_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/41/events","html_url":"https://github.com/ubiquity/devpool-directory-bounties/issues/41","id":2540391615,"node_id":"I_kwDOJhaJks6Xa0y_","number":41,"title":"Refactor Statistics","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-09-21T16:25:44Z","updated_at":"2024-10-08T16:00:26Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Related to #27 \r\n\r\nRight now the statistics are based on the collection of issues within the devpool. The `Unavailable` label is pretty central to how things are currently calculated\r\n\r\n```ts\r\n// devpool issue has unavailable label because it's assigned and so it's closed\r\nconst isAssigned = labels.find((label) => (label.name as string).includes(LABELS.UNAVAILABLE)) && issue.state === \"closed\";\r\n// devpool issue doesn't have unavailable label because it's unassigned and closed so it's merged therefore completed\r\nconst isCompleted = !labels.some((label) => (label.name as string).includes(LABELS.UNAVAILABLE)) && issue.state === \"closed\";\r\n```\r\n\r\nThe logic of the devpool dictates that any partner-assigned task will be closed upon assignment and only re-opened if it's priced and unassigned. Without the `Unavailable` label to indicate this for us we have a couple of options:\r\n\r\n- We could close devpool issues as `not_planned` while they are assigned instead, closing as `complete` once paid out.\r\n- We could simply use the partner issues. My approach builds a partner project Map on entry and we pass that to stats etc.\r\n\r\nSome problems with those approaches:\r\n\r\n- We'd need to author a script to update all devpool issues open and closed. Some issues remain assigned even after completion so we'd need to include additional logic to account for this.\r\n- Partner issue is obv a good source of data but it's in the partner' hands not ours. If they racked up 50k worth of stats and then deleted their org or nuked all of their issues/repos etc we'd lose a chunk of our stats.\r\n\r\nI think the best approach is to use the partner tasks directly although it comes with strings:\r\n\r\n- We persist our data better. Like a snapshot each month and store a timeline of stats which in the case of the above scenario we can recover easily. (Yeah we have git commit history but with 24 commits a day I don't think it's ideal. Plus with any changes to how stats etc are calculated it's far easier to audit.)\r\n- Use a combination of partner tasks and our devpool issues to validate `open/assigned/completed`\r\n\r\n---\r\n\r\nThe Stats themselves, big numbers and all that ;) but we have some grey areas I think. So we capture `open, assigned, completed` and we also have a bunch of repos excluded. \r\n\r\n- Should we exclude those same repos from all stat calculations or they should be added to the total only?\r\n- Tasks which are re-opened, should they be considered to be completed since it's been paid out or should they fall into `open/assigned`?\r\n- `completed` is considered to be what? partner task closed as `completed` and is currently closed (may not have a PR associated so we should not rely on that as a check)\r\n- Should we capture `reopened` or another similar category? (internal audit likes this)\r\n\r\n##### I'm refactoring tests for this right now and will PR soon","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/41/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/41/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/32","repository_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties","labels_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/32/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/32/comments","events_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/32/events","html_url":"https://github.com/ubiquity/devpool-directory-bounties/issues/32","id":2473769509,"node_id":"I_kwDOJhaJks6Tcrol","number":32,"title":"Close issues from archived repositories","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":5487929719,"node_id":"LA_kwDOJhaJks8AAAABRxspdw","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":5487930171,"node_id":"LA_kwDOJhaJks8AAAABRxsrOw","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":""},{"id":6563600031,"node_id":"LA_kwDOJhaJks8AAAABhziWnw","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Price:%2025%20USD","name":"Price: 25 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":6,"created_at":"2024-08-19T16:42:04Z","updated_at":"2024-09-30T12:29:53Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"There may be cases when issue exists in an archived repository (i.e. read only) so issues can't be self assigned there although all issue labels would be totally valid.\r\n\r\nWhat should be done:\r\n- if project issue exists in an archived partner's repository then the bot should close such issue\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/32/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":1},"timeline_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/32/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/25","repository_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties","labels_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/25/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/25/comments","events_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/25/events","html_url":"https://github.com/ubiquity/devpool-directory-bounties/issues/25","id":2300221547,"node_id":"I_kwDOJhaJks6JGphr","number":25,"title":"Sync code between `ubiquity/devpool-directory` and `ubiquity/devpool-directory-private`","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":5487929065,"node_id":"LA_kwDOJhaJks8AAAABRxsm6Q","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":5487930171,"node_id":"LA_kwDOJhaJks8AAAABRxsrOw","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":""},{"id":6474952418,"node_id":"LA_kwDOJhaJks8AAAABge_u4g","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Price:%20200%20USD","name":"Price: 200 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2024-05-16T12:04:32Z","updated_at":"2024-06-04T05:13:00Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"There are 2 repositories which collect issues available for contributors:\r\n1. https://github.com/ubiquity/devpool-directory: Public repo, any contributor can take issue there\r\n2. https://github.com/ubiquity/devpool-directory-private: Private repo, only core contributors can take issues there since that repo issues may contain sensitive/NDA data\r\n\r\nThe issue is that we somehow need to sync code changes between https://github.com/ubiquity/devpool-directory and https://github.com/ubiquity/devpool-directory-private. We can't simply fork https://github.com/ubiquity/devpool-directory-private from https://github.com/ubiquity/devpool-directory and use github UI since private repos can't be synced.\r\n\r\nWhat should be done:\r\n- when a new code change is introduced in https://github.com/ubiquity/devpool-directory then this code change should also appear in https://github.com/ubiquity/devpool-directory-private\r\n\r\nPossible solution described [here](https://github.com/ubiquity/work.ubq.fi/issues/2#issuecomment-2019912818)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/25/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/25/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/43","repository_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties","labels_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/43/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/43/comments","events_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/43/events","html_url":"https://github.com/ubiquity/devpool-directory-bounties/issues/43","id":2555893024,"node_id":"I_kwDOJhaJks6YV9Ug","number":43,"title":"@UbiquityDevPool Retweet Perpetual Bounty","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":5487929065,"node_id":"LA_kwDOJhaJks8AAAABRxsm6Q","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":5487930294,"node_id":"LA_kwDOJhaJks8AAAABRxsrtg","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":""},{"id":7045998297,"node_id":"LA_kwDOJhaJks8AAAABo_lm2Q","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Price:%20400%20USD","name":"Price: 400 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2024-03-07T10:38:03Z","updated_at":"2024-10-08T15:27:43Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I did a quick search and couldn't find a tool that will allow me to do the following in perpetuity: \n\nIt would be really interesting to incentivize people to [retweet DevPool tasks](https://x.com/ubiquitydevpool/status/1765366994746937535?s=46&t=bdMjuqzO5LYxLUsloRROxQ). \n\nIn order to do this optimally, we can design the pay scheme based on what is [optimal according to the Twitter algorithm](https://x.com/alexfinnx/status/1758910031003586731?s=46&t=bdMjuqzO5LYxLUsloRROxQ). \n\n### Follower Count\n\n> You want your following to be max 60% of your followers\n\nWe can check for this, and then we can pay based on follower count. For example mine is 776, so if I had the correct ratio (I don't) I could get paid 7.76 xDAI up to once a week for retweeting. \n\nThen people like [my friend with 183.8k followers](https://x.com/eth_apple?s=21&t=bdMjuqzO5LYxLUsloRROxQ) could get paid up to 1,838 xDAI per week etc. \n\n### View Count\n\nI see some of his posts get around 800 views and some get like 27k views. Perhaps it's smarter to pay based on views (we can probably get this from the API)\n\nMaybe we can value a view at 0.05 xDAI or something.\n\n### Architecture\n\nI'm unsure what the simplest implementation looks like, but we could probably start semi manually and figure it out from there. \n\nMaybe a minimal UI that lists the Twitter handle of the retweeters of the previous month, and calculates the rewards next to them.\n\nWe need to monitor our tweets for retweets. For the first step we can manually handle payouts. Later if we get traction we can automate with permit payments. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/43/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/43/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubiquibot-logging/issues/10","repository_url":"https://api.github.com/repos/ubiquity/ubiquibot-logging","labels_url":"https://api.github.com/repos/ubiquity/ubiquibot-logging/issues/10/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquibot-logging/issues/10/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquibot-logging/issues/10/events","html_url":"https://github.com/ubiquity/ubiquibot-logging/issues/10","id":1949021260,"node_id":"I_kwDOKRrzaM50K7RM","number":10,"title":"Apply new logs schema","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2023-10-18T07:13:16Z","updated_at":"2023-10-18T07:13:16Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Depends on https://github.com/ubiquity/ubiquibot/pull/644\r\n\r\nThis [PR](https://github.com/ubiquity/ubiquibot/pull/644) introduces updates to the `logs` table schema which should be reflected in the logging frontend app.\r\n\r\nNew logs schema [reference](https://github.com/ubiquity/ubiquibot/blob/0fa52534448a1c215b7366859c499f2e224e4cde/src/adapters/supabase/types/database.ts#L211)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquibot-logging/issues/10/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquibot-logging/issues/10/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/faucet/issues/3","repository_url":"https://api.github.com/repos/ubiquity/faucet","labels_url":"https://api.github.com/repos/ubiquity/faucet/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/faucet/issues/3/comments","events_url":"https://api.github.com/repos/ubiquity/faucet/issues/3/events","html_url":"https://github.com/ubiquity/faucet/issues/3","id":2001567048,"node_id":"I_kwDOKsAUgM53TX1I","number":3,"title":"Auto deploy to production","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2023-11-20T07:48:50Z","updated_at":"2023-11-20T07:48:50Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"This is a core team's task.\r\n\r\nOn any push to the `main` branch we should update the production instance of the faucet cloudflare worker.\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/faucet/issues/3/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/faucet/issues/3/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/122","repository_url":"https://api.github.com/repos/ubiquity/work.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/122/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/122/comments","events_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/122/events","html_url":"https://github.com/ubiquity/work.ubq.fi/issues/122","id":2580320068,"node_id":"I_kwDOKzVPS86ZzI9E","number":122,"title":"Add text filter query to URL and filter on render","user":{"login":"zugdev","id":155616000,"node_id":"U_kgDOCUaDAA","avatar_url":"https://avatars.githubusercontent.com/u/155616000?v=4","gravatar_id":"","url":"https://api.github.com/users/zugdev","html_url":"https://github.com/zugdev","followers_url":"https://api.github.com/users/zugdev/followers","following_url":"https://api.github.com/users/zugdev/following{/other_user}","gists_url":"https://api.github.com/users/zugdev/gists{/gist_id}","starred_url":"https://api.github.com/users/zugdev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zugdev/subscriptions","organizations_url":"https://api.github.com/users/zugdev/orgs","repos_url":"https://api.github.com/users/zugdev/repos","events_url":"https://api.github.com/users/zugdev/events{/privacy}","received_events_url":"https://api.github.com/users/zugdev/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":6,"created_at":"2024-10-11T03:02:37Z","updated_at":"2024-10-11T14:45:15Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"We should add a parameter to the URL according to the current \"Text Filter\" component's state. This will allow for people to share specific issues, organizations and repos. An example of how this could look is: `https://devpool.directory/?q=ubiquity-os-marketplace` where on page load a checker function should be called to set the text filter to be `ubiquity-os-marketplace` from the URL. The filter's state should be made persistent which it currently is not, this means that toggling between directory and proposals should keep the filter on.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/122/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/122/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/119","repository_url":"https://api.github.com/repos/ubiquity/work.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/119/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/119/comments","events_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/119/events","html_url":"https://github.com/ubiquity/work.ubq.fi/issues/119","id":2577778872,"node_id":"I_kwDOKzVPS86Zpci4","number":119,"title":"Client Side Embeddings Search","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6445149856,"node_id":"LA_kwDOKzVPS88AAAABgCkuoA","url":"https://api.github.com/repos/ubiquity/work.ubq.fi/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-10-10T06:35:59Z","updated_at":"2024-10-10T06:36:49Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"\r\n\r\nPerhaps we can improve our search experience by:\r\n1. Loading in all the vector embeddings of every issue and associated comments from our database\r\n2. Run the similarity search (i.e. cosine) to rank sort the most relevant issue\r\n\r\nIf performance is bad running all of these calculations, we can compile to wasm potentially. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/119/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/119/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/118","repository_url":"https://api.github.com/repos/ubiquity/work.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/118/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/118/comments","events_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/118/events","html_url":"https://github.com/ubiquity/work.ubq.fi/issues/118","id":2577012090,"node_id":"I_kwDOKzVPS86ZmhV6","number":118,"title":"Deep Links","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6445149632,"node_id":"LA_kwDOKzVPS88AAAABgCktwA","url":"https://api.github.com/repos/ubiquity/work.ubq.fi/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":6445149856,"node_id":"LA_kwDOKzVPS88AAAABgCkuoA","url":"https://api.github.com/repos/ubiquity/work.ubq.fi/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":6684609131,"node_id":"LA_kwDOKzVPS88AAAABjm8Kaw","url":"https://api.github.com/repos/ubiquity/work.ubq.fi/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":20,"created_at":"2024-10-09T21:40:19Z","updated_at":"2024-10-14T20:47:11Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"- We should push and pop browser history when opening issues. \r\n- We need to account for proposals and for tasks. \r\n- We need to automatically open the task/proposal when the page is loaded with the url representing it. Maybe a # in the URL with the issue ID will be sufficient.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/118/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/118/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/117","repository_url":"https://api.github.com/repos/ubiquity/work.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/117/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/117/comments","events_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/117/events","html_url":"https://github.com/ubiquity/work.ubq.fi/issues/117","id":2577000127,"node_id":"I_kwDOKzVPS86Zmea_","number":117,"title":"Notifications View/Filters","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2024-10-09T21:33:34Z","updated_at":"2024-10-15T11:31:51Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"## Remarks\r\n\r\nI'm still debating if we should consolidate all \"list like\" UIs on here, but I'm optimistic it could make sense to (like leaderboards as well.) If we include all these UIs here, it may make sense to rebrand to os.ubq.fi. Also the title bar from DevPool Directory to UbiquityOS: \r\n- Directory\r\n- Proposals\r\n- Notifications\r\n- XP Leaderboard \r\n\r\n## Overview\r\n\r\nAs activity continues to pick up and my notifications become slower to get through, it would be useful to make a simple ui that allows for more intelligent notification filtering. \r\n\r\n### Prioritization Sorting Algorithm\r\n\r\n- We need to detect the priority level of the task the notification is associated with.\r\n - If the notification is not associated with a task, consider not showing it on this view at all. \r\n - If the notification is a pull request, it must be linked to a task with a priority label.\r\n- Reverse chronological order, meaning that neglected/old notifications should appear higher than new ones. \r\n- Top of list is highest priority, then work your way down to low priority. \r\n\r\n### Blocking Tasks\r\n\r\nIf it thinks without my input the task is blocked, it's a higher priority notification.\r\n- Linkbacks: if the notification is associated with a task with many linkbacks then it should be considered higher priority, it usually means its blocking other pulls/tasks\r\n\r\n\r\nPerhaps we could have an AI layer on top one day to summarize and/or reorder notifications from most important to least.\r\n\r\n### Remarks\r\n- Always exclude draft pulls.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/117/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/117/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/103","repository_url":"https://api.github.com/repos/ubiquity/work.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/103/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/103/comments","events_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/103/events","html_url":"https://github.com/ubiquity/work.ubq.fi/issues/103","id":2563336259,"node_id":"I_kwDOKzVPS86YyWhD","number":103,"title":"Task Gating & Filtered Task Display on UI","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6445149899,"node_id":"LA_kwDOKzVPS88AAAABgCkuyw","url":"https://api.github.com/repos/ubiquity/work.ubq.fi/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-10-03T07:33:37Z","updated_at":"2024-10-05T05:06:57Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"When this is implemented, we should detect if the user is a collaborator and then only display what they are eligible to start on: \r\n- https://github.com/ubiquity-os-marketplace/command-start-stop/issues/62\r\n\r\nI think increasing coupling between this plugin and this UI is fine because otherwise it is not possible for external DAO contributors to work on tasks. I can't think of another way around this. \r\n\r\n1. Check if they are a collaborator of the org\r\n2. If they are not, we need to parse the settings, possibly by exposing an API[^1^]\r\n3. Filter out the tasks they are not eligible for from the UI. \r\n\r\n\r\n[^1^]: We can make a new endpoint on `command-start-stop` worker endpoint to POST an array of repository IDs (because this can be configured down to the repository level) and then read the config. Is this possible to read the repository configs from a plugin endpoint? Also should we use GET with a header for caching purposes?","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/103/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/103/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/90","repository_url":"https://api.github.com/repos/ubiquity/work.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/90/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/90/comments","events_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/90/events","html_url":"https://github.com/ubiquity/work.ubq.fi/issues/90","id":2535210264,"node_id":"I_kwDOKzVPS86XHD0Y","number":90,"title":"Progressive Web App","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6445149748,"node_id":"LA_kwDOKzVPS88AAAABgCkuNA","url":"https://api.github.com/repos/ubiquity/work.ubq.fi/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":6445149856,"node_id":"LA_kwDOKzVPS88AAAABgCkuoA","url":"https://api.github.com/repos/ubiquity/work.ubq.fi/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":6491155094,"node_id":"LA_kwDOKzVPS88AAAABgucqlg","url":"https://api.github.com/repos/ubiquity/work.ubq.fi/labels/Price:%20400%20USD","name":"Price: 400 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":12,"created_at":"2024-09-19T03:44:32Z","updated_at":"2024-10-14T13:29:57Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"At this conference, there were several instances where I had bad signal, and I generally like to pitch by showing this interface. \n\nThe problem is that it loads the issues after you load the page so it takes a moment and I'm staring at an empty screen essentially.\n\nTurning this into a progressive Web app should allow us to instantly load the cached issues, even when off-line or disconnected","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/90/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/90/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/45","repository_url":"https://api.github.com/repos/ubiquity/work.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/45/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/45/comments","events_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/45/events","html_url":"https://github.com/ubiquity/work.ubq.fi/issues/45","id":2261246810,"node_id":"I_kwDOKzVPS86Gx-Na","number":45,"title":"Contributor leaderboard","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[{"id":6445149748,"node_id":"LA_kwDOKzVPS88AAAABgCkuNA","url":"https://api.github.com/repos/ubiquity/work.ubq.fi/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":6445149844,"node_id":"LA_kwDOKzVPS88AAAABgCkulA","url":"https://api.github.com/repos/ubiquity/work.ubq.fi/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":6615702049,"node_id":"LA_kwDOKzVPS88AAAABilOaIQ","url":"https://api.github.com/repos/ubiquity/work.ubq.fi/labels/Price:%20200%20USD","name":"Price: 200 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":6,"created_at":"2024-04-24T13:01:22Z","updated_at":"2024-10-14T13:30:02Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"It has been discussed across various issues, PRs and discussion threads and with recruitment on-going it might be a good thing for newbies to visually see what other contributors have earned, even 1x'ers like me 🤣\r\n\r\n
\r\n\r\n1. List contributors by earnings (only available marker right now)\r\n2. Display contributor's username in place of their EOA\r\n3. display a preview modal with additional metadata about the contributor\r\n4. Later the XP system, Karma, etc... can all be built into the metadata modal.\r\n5. Fetch the leaderboard data from an up to date source (new task for a GH action to run every 24hrs and update the source?)\r\n6. Cache what data we can\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/45/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/45/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/cloudflare-deploy-action/issues/14","repository_url":"https://api.github.com/repos/ubiquity/cloudflare-deploy-action","labels_url":"https://api.github.com/repos/ubiquity/cloudflare-deploy-action/issues/14/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/cloudflare-deploy-action/issues/14/comments","events_url":"https://api.github.com/repos/ubiquity/cloudflare-deploy-action/issues/14/events","html_url":"https://github.com/ubiquity/cloudflare-deploy-action/issues/14","id":2360732546,"node_id":"I_kwDOLGaFrM6MteuC","number":14,"title":"Prevent posting duplicated deployment URLs","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":6607732793,"node_id":"LA_kwDOLGaFrM8AAAABidoAOQ","url":"https://api.github.com/repos/ubiquity/cloudflare-deploy-action/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":6607732967,"node_id":"LA_kwDOLGaFrM8AAAABidoA5w","url":"https://api.github.com/repos/ubiquity/cloudflare-deploy-action/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":7098633150,"node_id":"LA_kwDOLGaFrM8AAAABpxyLvg","url":"https://api.github.com/repos/ubiquity/cloudflare-deploy-action/labels/Price:%2025%20USD","name":"Price: 25 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2024-06-18T21:16:34Z","updated_at":"2024-10-10T04:44:39Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Check [this](https://github.com/ubiquity/pay.ubq.fi/pull/253#issuecomment-2176013489) comment where commit hash `c124c0a` is duplicated multiple times. It happened because of multiple failed deploy attempts in [this](https://github.com/ubiquity/pay.ubq.fi/actions/runs/9567051444) CI run.\r\n\r\nExpected behavior is that commit hash `c124c0a` is posted only once.\r\n\r\nWhat should be done:\r\n- don't post deployment URL if it already exists\r\n","closed_by":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"reactions":{"url":"https://api.github.com/repos/ubiquity/cloudflare-deploy-action/issues/14/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/cloudflare-deploy-action/issues/14/timeline","performed_via_github_app":null,"state_reason":"reopened"},{"url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/11","repository_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/11/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/11/comments","events_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/11/events","html_url":"https://github.com/ubiquity/audit.ubq.fi/issues/11","id":2194943020,"node_id":"I_kwDOLZ8eH86C1Cws","number":11,"title":"Create correct Knip configuration for audit repository","user":{"login":"gitcoindev","id":88761781,"node_id":"MDQ6VXNlcjg4NzYxNzgx","avatar_url":"https://avatars.githubusercontent.com/u/88761781?v=4","gravatar_id":"","url":"https://api.github.com/users/gitcoindev","html_url":"https://github.com/gitcoindev","followers_url":"https://api.github.com/users/gitcoindev/followers","following_url":"https://api.github.com/users/gitcoindev/following{/other_user}","gists_url":"https://api.github.com/users/gitcoindev/gists{/gist_id}","starred_url":"https://api.github.com/users/gitcoindev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gitcoindev/subscriptions","organizations_url":"https://api.github.com/users/gitcoindev/orgs","repos_url":"https://api.github.com/users/gitcoindev/repos","events_url":"https://api.github.com/users/gitcoindev/events{/privacy}","received_events_url":"https://api.github.com/users/gitcoindev/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-03-19T13:13:34Z","updated_at":"2024-09-12T17:48:09Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"To goal is to fix Knip warnings to have clean Knip runs for CI and pull request checks.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/11/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/11/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/8","repository_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/8/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/8/comments","events_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/8/events","html_url":"https://github.com/ubiquity/audit.ubq.fi/issues/8","id":2190474977,"node_id":"I_kwDOLZ8eH86Cj_7h","number":8,"title":"Websocket RPC","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-03-17T04:31:14Z","updated_at":"2024-03-19T15:48:36Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I remember we had issues with the amount of requests we were making for the audit app. Maybe websockets are the solution.\n\n_Originally posted by @pavlovcik in https://github.com/pavlovcik/uad.ubq.fi/pull/2#discussion_r1527410702_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/8/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/8/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/12","repository_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/12/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/12/comments","events_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/12/events","html_url":"https://github.com/ubiquity/audit.ubq.fi/issues/12","id":2309910528,"node_id":"I_kwDOLZ8eH86JrnAA","number":12,"title":"Match ethereum tx with github issue onchain","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":6648112370,"node_id":"LA_kwDOLZ8eH88AAAABjEIk8g","url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2023-04-17T09:04:05Z","updated_at":"2024-05-22T08:29:42Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Right now in the [audit page](https://github.com/ubiquity/pay.ubq.fi/pull/34#issuecomment-1504890601) we match ethereum transactions for permit2 payouts using github API. So basically we get a list of issues, then get a unique nonce from a claim URL and try find a matching nonce in ethereum transactions from a bot's wallet address. We should be able to do the same thing without github API, purely onchain.\r\n\r\nWhat should be done:\r\n1. On permit2 claim URL generation pass the following query params to https://pay.ubq.fi:\r\n - owner name\r\n - repo name\r\n - issue number\r\n - permit2 nonce\r\n2. On \"claim\" button click a bounty hunter uses the [MultiSend](https://github.com/safe-global/safe-contracts/blob/main/contracts/libraries/MultiSend.sol) contract (find the deployed address in the gnosis safe docs or deploy your own) and sends 2 transactions (encoded in a single one):\r\n1) Permit2 claim (no updates in logic here)\r\n2) Onchain message to the bot's wallet address in the format `OEPRATION_TYPE;GITHUB_OWNER_NAME;GITHUB_REPOSITORY_NAME;GITHUB_ISSUE_NUMBER;PERMIT2_NONCE`. Example: `permit2_claim;ubuqity;ubiquity-dollar;112;2391127361723`\r\n\r\nThis way we would be able to match ethereum transactions with github issues purely onchain.\r\n\r\nP.S. Some folks may try to utilize a single claim transaction (without an onchain message) which would save them a little gas","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/12/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/12/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/onboard.ubq.fi/issues/22","repository_url":"https://api.github.com/repos/ubiquity/onboard.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/onboard.ubq.fi/issues/22/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/onboard.ubq.fi/issues/22/comments","events_url":"https://api.github.com/repos/ubiquity/onboard.ubq.fi/issues/22/events","html_url":"https://github.com/ubiquity/onboard.ubq.fi/issues/22","id":2469700009,"node_id":"I_kwDOLaCxqM6TNKGp","number":22,"title":"Onboarding v2","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":6636525747,"node_id":"LA_kwDOLaCxqM8AAAABi5FYsw","url":"https://api.github.com/repos/ubiquity/onboard.ubq.fi/labels/Time:%20%3C1%20Week","name":"Time: <1 Week","color":"ededed","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-08-16T07:39:33Z","updated_at":"2024-08-16T08:00:10Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Right now `https://onboard.ubq.fi/` generates a bot's config for v1 which is obsolete.\r\n\r\nAs a part of this issue we should update `https://onboard.ubq.fi` to support the following features:\r\n1. Generate a new config for bot v2\r\n2. Update an existing config\r\n3. Encrypt plugin parameters (depends on https://github.com/ubiquity/ubiquibot-kernel/issues/90)\r\n4. Fetch and display available plugins with options and descriptions (depends on a \"marketplace\" issue which is not ready yet)\r\n5. Add an additional step of approves permit2 contract if https://github.com/ubiquibot/conversation-rewards plugin is used\r\n\r\nThis is a very high level description which might change in the future.\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/onboard.ubq.fi/issues/22/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/onboard.ubq.fi/issues/22/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/56","repository_url":"https://api.github.com/repos/ubiquity/rpc-handler","labels_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/56/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/56/comments","events_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/56/events","html_url":"https://github.com/ubiquity/rpc-handler/issues/56","id":2579929553,"node_id":"I_kwDOLaI9PM6ZxpnR","number":56,"title":"Proxy issues","user":{"login":"whilefoo","id":139262667,"node_id":"U_kgDOCEz6yw","avatar_url":"https://avatars.githubusercontent.com/u/139262667?v=4","gravatar_id":"","url":"https://api.github.com/users/whilefoo","html_url":"https://github.com/whilefoo","followers_url":"https://api.github.com/users/whilefoo/followers","following_url":"https://api.github.com/users/whilefoo/following{/other_user}","gists_url":"https://api.github.com/users/whilefoo/gists{/gist_id}","starred_url":"https://api.github.com/users/whilefoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whilefoo/subscriptions","organizations_url":"https://api.github.com/users/whilefoo/orgs","repos_url":"https://api.github.com/users/whilefoo/repos","events_url":"https://api.github.com/users/whilefoo/events{/privacy}","received_events_url":"https://api.github.com/users/whilefoo/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2024-10-10T21:58:05Z","updated_at":"2024-10-15T10:39:02Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Because we are having problems with RPCs I looked at the code and found some quirks that I don't understand and some improvements that could be made.\r\n\r\n@Keyrxng since you did this part, is there any reason why a JsonRpcProvider is wrapped with the Proxy two times, once here:\r\nhttps://github.com/ubiquity/rpc-handler/blame/7a24b8a491695bb2121d01e44f4e7a4745ec61e7/types/rpc-handler.ts#L271\r\nand here:\r\nhttps://github.com/ubiquity/rpc-handler/blame/7a24b8a491695bb2121d01e44f4e7a4745ec61e7/types/rpc-handler.ts#L93\r\nAnd is there a reason why we didn't just extend the BaseProvider from ethers?\r\n\r\nImprovements:\r\n- When the RPC request fails it retries with the list of RPCs which includes this same RPC that failed, we should skip it instead.\r\n- If a RPC fails a couple of times even across different requests, we can mark it as offline and not use it anymore\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/56/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/56/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/54","repository_url":"https://api.github.com/repos/ubiquity/rpc-handler","labels_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/54/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/54/comments","events_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/54/events","html_url":"https://github.com/ubiquity/rpc-handler/issues/54","id":2579280825,"node_id":"I_kwDOLaI9PM6ZvLO5","number":54,"title":"Unreliable","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6648751898,"node_id":"LA_kwDOLaI9PM8AAAABjEvnGg","url":"https://api.github.com/repos/ubiquity/rpc-handler/labels/Priority:%204%20(Urgent)","name":"Priority: 4 (Urgent)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-10T16:07:13Z","updated_at":"2024-10-10T16:07:13Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"pay.ubq.fi has not been working the last few days. rpc manager is not handling errors\r\n\r\n![telegram-cloud-photo-size-1-4918431621091274969-y](https://github.com/user-attachments/assets/39832108-72d3-4d6a-a5cb-a8f720a76850)\r\n\r\n![telegram-cloud-photo-size-1-4918431621091274966-y](https://github.com/user-attachments/assets/30ac5cf5-add9-441b-804b-f6b6729fc68b)\r\n\r\n![telegram-cloud-photo-size-1-4918431621091274963-y](https://github.com/user-attachments/assets/affc0539-ac54-430c-b8e7-dfd6c5b865ef)\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/54/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/54/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/30","repository_url":"https://api.github.com/repos/ubiquity/rpc-handler","labels_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/30/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/30/comments","events_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/30/events","html_url":"https://github.com/ubiquity/rpc-handler/issues/30","id":2422340465,"node_id":"I_kwDOLaI9PM6QYftx","number":30,"title":"Improving RPC health check robustness","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":10,"created_at":"2024-07-22T09:02:57Z","updated_at":"2024-10-14T13:30:05Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"The handler is now a proxy which routes on-chain read/writes through it handling retry and reselection logic. The original issue was that `eth_call is not supported` was being thrown by some endpoints due to network sync issues on the provider's part. While the proxy approach resolves this indirectly it could be beneficial to deal with the underlying issue.\r\n\r\nWhile we can do our best to serve a healthy provider from the beginning it's possible a user call may still fail although with an improved health check this is far less likely and with our proxy the other endpoints should be also be perfectly healthy\r\n\r\n---\r\n\r\n#### Option 1\r\n\r\nCurrent: fetch block number and ensure it's valid data\r\nProposed: block number + permit2 read op\r\n\r\nThe health check can be improved by a number of methods but one that makes sense to me is repeating the `eth_call` which highlighted the issue originally\r\n\r\n---\r\n\r\nThe downsides with this is:\r\n\r\n1. That it has been proven that the same `eth_call` can and will fail intermittently even with some of the best RPCs for that network, so would require best-of 3 calls for example \r\n2. If checks are 'fragile' like this then it's entirely possible we encounter a 'no providers found' scenario in error\r\n3. The more checks added the higher the chance the above happens\r\n4. It's still possible for a call to fail due to provider error\r\n5. The more calls we add the higher the network demand on load\r\n6. ^ the slower we are to returning a provider\r\n7. Our data/provider is static after load unless re-rendered/recalled\r\n\r\nThe upsides with this is:\r\n\r\n8. We are guaranteed healthy endpoints\r\n9. Less chance retry logic will be executed\r\n\r\n---\r\n\r\n#### Option 2\r\n\r\nAdopt a polling-based approach, first gather our healthy endpoints and then poll them according to config settings ensuring that they remain healthy and pop them if they fault. We could collect the first pool using just the block number check and then any that make it to round two are polled with `eth_call` read ops.\r\n\r\nDownsides:\r\n- Perpetual read ops called\r\n- runtime network demand depending on settings and amount of providers to poll\r\n- We may hit call limits with our check and serve it for the user to get rate limited (low chance)\r\n\r\nUpsides:\r\n- Dynamic health status\r\n- Potentially makes retry logic obsolete\r\n- network load demand is on par with option 1\r\n\r\n---\r\n\r\nOption two would require a pretty big overhaul of the current system as opposed to option one\r\n\r\nAny other suggestions are welcome\r\n\r\n_related issue context https://github.com/ubiquity/pay.ubq.fi/issues/235#issuecomment-2235154700_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/30/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/30/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/safe.ubq.fi/issues/3","repository_url":"https://api.github.com/repos/ubiquity/safe.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/safe.ubq.fi/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/safe.ubq.fi/issues/3/comments","events_url":"https://api.github.com/repos/ubiquity/safe.ubq.fi/issues/3/events","html_url":"https://github.com/ubiquity/safe.ubq.fi/issues/3","id":2469641605,"node_id":"I_kwDOMNZuas6TM72F","number":3,"title":"Save EOA to a DB","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":9,"created_at":"2024-08-16T07:03:46Z","updated_at":"2024-08-27T15:51:07Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Depends on https://github.com/ubiquity/safe.ubq.fi/pull/2\r\n\r\nRight now `safe.ubq.fi` is able to generate EOA address from a passkey but doesn't save it to a database.\r\n\r\nThis way user has to perform an additional registration step:\r\n1. User calls `/register` and the bot replies with \"Pls create an EOA at safe.ubq.fi\"\r\n2. User creates a new EOA at `safe.ubq.fi`\r\n3. User calls `/wallet` to register his address in our DB (additional step)\r\n\r\nWe should support the following flow:\r\n1. User calls `/register` and the bot replies with \"Pls create an EOA at safe.ubq.fi\"\r\n2. User creates a new EOA at `safe.ubq.fi` **and** `safe.ubq.fi`'s backend saves user's address to a DB\r\n\r\nIdeally for a DB we should use a partner's json storage (i.e. his `ubiquibot-config` repository) but if https://github.com/ubiquibot/plugin-template/issues/2 is not implemented at the time somebody starts this issue then we can simply use our supabase instance and leave \"json storage\" for the next feature iteration.\r\n\r\nOriginal [comment](https://github.com/ubiquibot/plugins-wishlist/issues/35#issuecomment-2292625984).","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/safe.ubq.fi/issues/3/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/safe.ubq.fi/issues/3/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/9","repository_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/9/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/9/comments","events_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/9/events","html_url":"https://github.com/ubiquity/uusd.ubq.fi/issues/9","id":2584139589,"node_id":"I_kwDOMhAZP86aBtdF","number":9,"title":"Integrate a Crypto Pricing API for Precise UUSD and Fees in Dollar Estimates","user":{"login":"zugdev","id":155616000,"node_id":"U_kgDOCUaDAA","avatar_url":"https://avatars.githubusercontent.com/u/155616000?v=4","gravatar_id":"","url":"https://api.github.com/users/zugdev","html_url":"https://github.com/zugdev","followers_url":"https://api.github.com/users/zugdev/followers","following_url":"https://api.github.com/users/zugdev/following{/other_user}","gists_url":"https://api.github.com/users/zugdev/gists{/gist_id}","starred_url":"https://api.github.com/users/zugdev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zugdev/subscriptions","organizations_url":"https://api.github.com/users/zugdev/orgs","repos_url":"https://api.github.com/users/zugdev/repos","events_url":"https://api.github.com/users/zugdev/events{/privacy}","received_events_url":"https://api.github.com/users/zugdev/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-13T17:40:32Z","updated_at":"2024-10-13T17:40:32Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"In #4 the user will be able to input any token accepted by CoW Swap, however this currencies have each a respective price in USD. This means that to offer the user an estimate of how many UUSD tokens he will get (approx. 1:1 to USD), we must integrate a pricing API. This will allow us to display the amount inputted in dollars, the total fee cost in dollars, the cost of each fee in dollars according to #8 and the expected amount of UUSD. A good free solution could be [CoinCap API](https://docs.coincap.io), the one used by CoW Swap is [CoinGecko](https://www.coingecko.com/en/api) but it's paid and costly.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/9/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/9/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/8","repository_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/8/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/8/comments","events_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/8/events","html_url":"https://github.com/ubiquity/uusd.ubq.fi/issues/8","id":2584129055,"node_id":"I_kwDOMhAZP86aBq4f","number":8,"title":"Fees and Slippage Tracking + Breakdown","user":{"login":"zugdev","id":155616000,"node_id":"U_kgDOCUaDAA","avatar_url":"https://avatars.githubusercontent.com/u/155616000?v=4","gravatar_id":"","url":"https://api.github.com/users/zugdev","html_url":"https://github.com/zugdev","followers_url":"https://api.github.com/users/zugdev/followers","following_url":"https://api.github.com/users/zugdev/following{/other_user}","gists_url":"https://api.github.com/users/zugdev/gists{/gist_id}","starred_url":"https://api.github.com/users/zugdev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zugdev/subscriptions","organizations_url":"https://api.github.com/users/zugdev/orgs","repos_url":"https://api.github.com/users/zugdev/repos","events_url":"https://api.github.com/users/zugdev/events{/privacy}","received_events_url":"https://api.github.com/users/zugdev/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-10-13T17:29:12Z","updated_at":"2024-10-13T19:16:34Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"In #4 the optimal UX is having the user know not only the estimated total fees but understand where each fee comes from. This involves integrating CoW Swap quote API, tracking gas costs on-chain, quoting bridge fees with another API. Depending on which bridge we go with we even have to swap into another currency to pay it's fee. It also involves adding / estimating slippage into each of this steps. This would allow for a precise on-ramp cost calculation, ensuring user understand's the output amount of UUSD.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/8/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/8/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/7","repository_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/7/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/7/comments","events_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/7/events","html_url":"https://github.com/ubiquity/uusd.ubq.fi/issues/7","id":2584123451,"node_id":"I_kwDOMhAZP86aBpg7","number":7,"title":"Handle Swap Orders in On-Ramp Experience","user":{"login":"zugdev","id":155616000,"node_id":"U_kgDOCUaDAA","avatar_url":"https://avatars.githubusercontent.com/u/155616000?v=4","gravatar_id":"","url":"https://api.github.com/users/zugdev","html_url":"https://github.com/zugdev","followers_url":"https://api.github.com/users/zugdev/followers","following_url":"https://api.github.com/users/zugdev/following{/other_user}","gists_url":"https://api.github.com/users/zugdev/gists{/gist_id}","starred_url":"https://api.github.com/users/zugdev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zugdev/subscriptions","organizations_url":"https://api.github.com/users/zugdev/orgs","repos_url":"https://api.github.com/users/zugdev/repos","events_url":"https://api.github.com/users/zugdev/events{/privacy}","received_events_url":"https://api.github.com/users/zugdev/received_events","type":"User","site_admin":false},"labels":[{"id":7306247727,"node_id":"LA_kwDOMhAZP88AAAABs3x-Lw","url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":8,"created_at":"2024-10-13T17:17:16Z","updated_at":"2024-10-14T17:17:21Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"In developing the UUSD on-ramp experience to Gnosis we must handle swapping from any available token in CoW Swap to LUSD and UBQ. The suggested approach in #4 is just bundling swap, mint and bridge into a multicall. However that's not viable since CoW Swap operates in an asynchronous way, you don't get your tokens as soon as you send a swap transaction, a relayer has to send your order to solvers and then it settles which can take up to minutes. This also means that we must track potentially multiple orders at the same time in our backend without mixing, which needs extra care. Another super delicate case is order expiration: what if CoW Swap fails to resolve the swap in sufficient time? The solution should return funds in that case and should warn possible failure based on pool liquidity even before the user submits a transaction.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/7/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/7/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/5","repository_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/5/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/5/comments","events_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/5/events","html_url":"https://github.com/ubiquity/uusd.ubq.fi/issues/5","id":2558753338,"node_id":"I_kwDOMhAZP86Yg3o6","number":5,"title":"Update UBQ Farming UI","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7306247496,"node_id":"LA_kwDOMhAZP88AAAABs3x9SA","url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":7306247727,"node_id":"LA_kwDOMhAZP88AAAABs3x-Lw","url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":7453409626,"node_id":"LA_kwDOMhAZP88AAAABvEIBWg","url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/labels/Price:%20600%20USD","name":"Price: 600 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":11,"created_at":"2022-11-23T18:26:51Z","updated_at":"2024-10-10T06:41:02Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We changed the flow from manual steps (add liquidity in curve, then lockup LP token in our staking contract) to now “ape in” which handles both in a single transaction. Check `packages/contracts/src/dollar/DirectGovernanceFarmer.sol`\r\n\r\nThe new UI should be built on top of the related smart contact code changes. The context is available in https://github.com/ubiquity/ubiquity-dollar/issues/243\r\n\r\n\r\n\r\nYou can upgrade the \"Stake Liquidity to Receive UBQ\" panel with one that allows users to: \r\n1. Deposit their uAD+3pool stables (uAD/USDC/USDT/DAI) allow them to select the amount of each of course.\r\n2. Specify the amount of weeks for lockup.\r\n3. Be sure to leave the MAX button functionality in here as well.\r\n\r\nUsing the `apeIn` method!","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/5/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/5/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/155","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/155/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/155/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/155/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/155","id":2579216666,"node_id":"I_kwDOLUK0B86Zu7ka","number":155,"title":"Crediting for unique links only","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6694362633,"node_id":"LA_kwDOLUK0B88AAAABjwPeCQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":6694362897,"node_id":"LA_kwDOLUK0B88AAAABjwPfEQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":6772581392,"node_id":"LA_kwDOLUK0B88AAAABk61kEA","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Price:%2075%20USD","name":"Price: 75 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-10T15:39:19Z","updated_at":"2024-10-10T15:39:56Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"- When aggregating rewards, collect every link into a single data store and only credit the first instance of a link. \r\n- In the following issue specification, I got way too much in rewards which can be solved by checking the redundant link (the only difference is the hash, which shouldn't count) I should have only received credit for basically one link. \r\n- https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/143\r\n\r\n###### Similar [^01^]\r\n\r\n[^01^]: [Missing defaults for html tags](https://www.github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/153) 76%","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/155/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/155/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/152","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/152/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/152/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/152/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/152","id":2575933840,"node_id":"I_kwDOLUK0B86ZiaGQ","number":152,"title":"Failed to save permit","user":{"login":"whilefoo","id":139262667,"node_id":"U_kgDOCEz6yw","avatar_url":"https://avatars.githubusercontent.com/u/139262667?v=4","gravatar_id":"","url":"https://api.github.com/users/whilefoo","html_url":"https://github.com/whilefoo","followers_url":"https://api.github.com/users/whilefoo/followers","following_url":"https://api.github.com/users/whilefoo/following{/other_user}","gists_url":"https://api.github.com/users/whilefoo/gists{/gist_id}","starred_url":"https://api.github.com/users/whilefoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whilefoo/subscriptions","organizations_url":"https://api.github.com/users/whilefoo/orgs","repos_url":"https://api.github.com/users/whilefoo/repos","events_url":"https://api.github.com/users/whilefoo/events{/privacy}","received_events_url":"https://api.github.com/users/whilefoo/received_events","type":"User","site_admin":false},"labels":[{"id":6694362961,"node_id":"LA_kwDOLUK0B88AAAABjwPfUQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Priority:%204%20(Urgent)","name":"Priority: 4 (Urgent)","color":"ededed","default":false,"description":null},{"id":7556960102,"node_id":"LA_kwDOLUK0B88AAAABwm4PZg","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C15%20Minutes","name":"Time: <15 Minutes","color":"ededed","default":false,"description":null},{"id":7556960107,"node_id":"LA_kwDOLUK0B88AAAABwm4Paw","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Price:%2024%20USD","name":"Price: 24 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-10-09T13:24:35Z","updated_at":"2024-10-10T12:09:01Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"```\r\nFailed to create a new location {\r\n code: '42501',\r\n details: null,\r\n hint: null,\r\n message: 'new row violates row-level security policy for table \"locations\"'\r\n}\r\nFailed to save permits to the database Error: Failed to retrieve the related location from issue [object Object]\r\n at PermitGenerationModule._getOrCreateIssueLocation (/home/runner/work/conversation-rewards/conversation-rewards/src/parser/permit-generation-module.ts:248:13)\r\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\r\n at PermitGenerationModule._savePermitsToDatabase (/home/runner/work/conversation-rewards/conversation-rewards/src/parser/permit-generation-module.ts:257:28)\r\n at PermitGenerationModule.transform (/home/runner/work/conversation-rewards/conversation-rewards/src/parser/permit-generation-module.ts:122:9)\r\n at Processor.run (/home/runner/work/conversation-rewards/conversation-rewards/src/parser/processor.ts:37:24)\r\n at run (/home/runner/work/conversation-rewards/conversation-rewards/src/run.ts:25:5)\r\n```\r\nhttps://github.com/ubiquity-os-marketplace/text-conversation-rewards/actions/runs/11165001249/job/31035657102#step:7:443","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/152/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/152/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/149","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/149/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/149/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/149/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/149","id":2572406404,"node_id":"I_kwDOLUK0B86ZU86E","number":149,"title":"Ensure Assignee on Linked Pull Merge","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6694362851,"node_id":"LA_kwDOLUK0B88AAAABjwPe4w","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":7556960102,"node_id":"LA_kwDOLUK0B88AAAABwm4PZg","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C15%20Minutes","name":"Time: <15 Minutes","color":"ededed","default":false,"description":null},{"id":7556960106,"node_id":"LA_kwDOLUK0B88AAAABwm4Pag","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Price:%2012%20USD","name":"Price: 12 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":9,"created_at":"2024-10-08T07:58:12Z","updated_at":"2024-10-10T05:48:39Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"> Maybe we could a feature if the issue has a linked PR that has been merged, it should assign the user to the issue and close it?\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquity/pay.ubq.fi/issues/267#issuecomment-2399122707_\r\n ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/149/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/149/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/137","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/137/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/137/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/137/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/137","id":2563831967,"node_id":"I_kwDOLUK0B86Y0Pif","number":137,"title":"Footnotes","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6694362659,"node_id":"LA_kwDOLUK0B88AAAABjwPeIw","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":6694362851,"node_id":"LA_kwDOLUK0B88AAAABjwPe4w","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":6768021882,"node_id":"LA_kwDOLUK0B88AAAABk2fReg","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Price:%20100%20USD","name":"Price: 100 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":8,"created_at":"2024-10-03T11:37:35Z","updated_at":"2024-10-10T22:38:50Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"> https://github.com/ubiquity-os-marketplace/generate-vector-embeddings/issues/25#issuecomment-2388870939 caught my eye as being too high but I'm reviewing the statistics:\r\n> \r\n> \r\n> ```yml\r\n> content:\r\n> content: # strange there's content.content\r\n> p:\r\n> score: 0\r\n> elementCount: 3\r\n> a:\r\n> score: 5 # looks like its counting the footnotes as links. I only see three related to the footnotes (these should be hardcoded to be removed.) but there is one unaccounted for that I cant find?\r\n> elementCount: 2\r\n> pre:\r\n> score: 0\r\n> elementCount: 1\r\n> h6:\r\n> score: 1\r\n> elementCount: 1\r\n> result: 11\r\n> \r\n> regex:\r\n> wordCount: 116\r\n> wordValue: 0.2\r\n> result: 11.37\r\n> ```\r\n> \r\n> I think we have an unaddressed scenario of dealing with footnotes. So we'll need to make a new task then. I also have a feeling that it is counting words within the code block, we should not have this. This should be indicated in the analytics overview if a tag words are being ignored. Also its strange to me that it parsed it as `pre` instead of `code` perhaps its because I didn't include the syntax highlighting header?\r\n> \r\n> Regarding config, I think wordCount should probably default to 0.1 including for author, not sure why its 0.2!\r\n> \r\n> 1. Ignore links related to footnotes\r\n> 2. Do not include footnotes in word count credit\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquity-os-marketplace/generate-vector-embeddings/issues/25#issuecomment-2391197361_\r\n ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/137/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/137/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/113","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/113/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/113/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/113/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/113","id":2519406762,"node_id":"I_kwDOLUK0B86WKxiq","number":113,"title":"`-`&`0`","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6694362659,"node_id":"LA_kwDOLUK0B88AAAABjwPeIw","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":6694362851,"node_id":"LA_kwDOLUK0B88AAAABjwPe4w","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":7007792071,"node_id":"LA_kwDOLUK0B88AAAABobJrxw","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Price:%20150%20USD","name":"Price: 150 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2024-09-11T10:56:31Z","updated_at":"2024-10-14T12:53:22Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"If relevance scoring is skipped for a specific role, use a hyphen. \n\nIf it actually scored a perfect zero, then use zero. \n\nThis is more expressive. \n\n> Interesting point. If relevance evaluation was skipped due to the config, then - makes sense. If it evaluated to 0 then we should write 0. Let's do this. \n\n_Originally posted by @0x4007 in https://github.com/ubiquibot/conversation-rewards/pull/79#issuecomment-2342453056_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/113/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/113/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/106","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/106/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/106/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/106/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/106","id":2491843925,"node_id":"I_kwDOLUK0B86UhoVV","number":106,"title":"Check if the proper linked pull-request is evaluated","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-08-28T11:39:31Z","updated_at":"2024-10-14T12:53:23Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"It is just a suspicion because it didn't happen yet, but I am not sure if the proper linked pull request is evaluated in the following scenario:\r\n- user a opens a pull request\r\n- user b DRAFTS a pull request\r\n- issue is closed by user a\r\n\r\nMy suspicion is that the pull-request by user b might be evaluated because it got open last. We should make sure that the closing PR is the one that is evaluated. Again, it is just a suspicion so this scenario should be tested first (writing it down not to forget).\r\n\r\nRelates to https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/128","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/106/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":1},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/106/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/102","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/102/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/102/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/102/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/102","id":2487074749,"node_id":"I_kwDOLUK0B86UPb-9","number":102,"title":"Implement a way to easily run tests results on an issue","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[{"id":6694362741,"node_id":"LA_kwDOLUK0B88AAAABjwPedQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C1%20Week","name":"Time: <1 Week","color":"ededed","default":false,"description":null},{"id":6694362897,"node_id":"LA_kwDOLUK0B88AAAABjwPfEQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":7175176690,"node_id":"LA_kwDOLUK0B88AAAABq6yB8g","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Price:%20600%20USD","name":"Price: 600 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":11,"created_at":"2024-08-26T14:55:23Z","updated_at":"2024-10-14T15:22:07Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"For testing purposes and fine tuning, it would be handy to have a way to run the `conversation-rewards` manually against any pull-request within a sandbox to test and fine tune the incentives as desired.\r\n\r\nMy first thought would be to have a `/simulate-rewards issue_url` or some similar command that would generate the results within the issue / pr where it is run, without generating the permits, which would allow for testing and tuning without needed to open / close issues manually to trigger a run.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/102/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/102/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/96","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/96/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/96/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/96/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/96","id":2484394877,"node_id":"I_kwDOLUK0B86UFNt9","number":96,"title":"Typebox error handling and issue feedback","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[{"id":6694362633,"node_id":"LA_kwDOLUK0B88AAAABjwPeCQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":6694362851,"node_id":"LA_kwDOLUK0B88AAAABjwPe4w","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":6737248669,"node_id":"LA_kwDOLUK0B88AAAABkZJBnQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Price:%2025%20USD","name":"Price: 25 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":11,"created_at":"2024-08-24T09:01:26Z","updated_at":"2024-10-14T12:53:24Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"An issue exists with the usage of `T.Union` which should be investigated and resolved.\r\n\r\nIt would also be handy to improve user feedback on the issue as a user must head to the workflow run to get a hint at what is going on.\r\n\r\nI'm unsure what labels to assign, you would know better @gentlementlegen\r\n\r\n\r\n_original [context](https://github.com/ubiquibot/conversation-rewards/pull/68#issuecomment-2304210635)_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/96/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/96/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/77","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/77/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/77/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/77/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/77","id":2435484238,"node_id":"I_kwDOLUK0B86RKopO","number":77,"title":"Decimal is not properly displayed","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[{"id":6694362633,"node_id":"LA_kwDOLUK0B88AAAABjwPeCQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":6694362782,"node_id":"LA_kwDOLUK0B88AAAABjwPeng","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":6737248669,"node_id":"LA_kwDOLUK0B88AAAABkZJBnQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Price:%2025%20USD","name":"Price: 25 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2024-07-29T13:47:02Z","updated_at":"2024-10-14T12:53:26Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"In the following result, a lot of decimals are displayed when it should not: https://github.com/ubiquibot/plugins-wishlist/issues/20#issuecomment-2255900756\r\n\r\nThe number should properly be computed using `Decimal.js` library like the other values.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/77/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":1},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/77/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/74","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/74/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/74/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/74/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/74","id":2431326220,"node_id":"I_kwDOLUK0B86Q6xgM","number":74,"title":"\"Originally posted by\" crediting","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6694362659,"node_id":"LA_kwDOLUK0B88AAAABjwPeIw","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":6694362851,"node_id":"LA_kwDOLUK0B88AAAABjwPe4w","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":6768021882,"node_id":"LA_kwDOLUK0B88AAAABk2fReg","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Price:%20100%20USD","name":"Price: 100 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-07-26T03:14:25Z","updated_at":"2024-09-24T10:19:10Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"In a conversation, using the context menu, we are able to instantly create a new issue and prefill the body with the comment contents. It is common that the original author of the comment does not receive credit for creating the issue (when another team member creates the issue for them.)\r\n\r\nDetect when the following string is detected (full example with context):\r\n\r\n```\r\nOriginally posted by @0x4007 in https://github.com/ubiquibot/conversation-rewards/pull/58#discussion_r1691159526\r\n```\r\n\r\nSo it will be a regex like `^Originally posted by @ in $`\r\n\r\nAnd when calculating the rewards, the original author should receive part of the author credit. Make it configurable with a percentage. I would default to 50% of the credit. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/74/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/74/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/73","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/73/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/73/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/73/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/73","id":2431323099,"node_id":"I_kwDOLUK0B86Q6wvb","number":73,"title":"Telegram DM Rewards","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6694362704,"node_id":"LA_kwDOLUK0B88AAAABjwPeUA","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C4%20Hours","name":"Time: <4 Hours","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":10,"created_at":"2024-07-26T03:10:21Z","updated_at":"2024-09-25T18:40:44Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Perhaps its more convenient for a Telegram bot to message the rewards. This module can come with a registration command[^1^] and then direct message the reward link. \r\n\r\nThis could be more convenient to some users until we finish the database side and collect all the unclaimed rewards for the contributors. \r\n\r\n[^1^]: /telegram pavlovcik\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/73/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/73/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/64","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/64/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/64/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/64/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/64","id":2419273910,"node_id":"I_kwDOLUK0B86QMzC2","number":64,"title":"Reward amount rollup","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":6694362731,"node_id":"LA_kwDOLUK0B88AAAABjwPeaw","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":6694362851,"node_id":"LA_kwDOLUK0B88AAAABjwPe4w","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":6813756143,"node_id":"LA_kwDOLUK0B88AAAABliGq7w","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Price:%20400%20USD","name":"Price: 400 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":16,"created_at":"2024-07-19T16:06:55Z","updated_at":"2024-09-11T08:17:33Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Right now the permit redeem flow is the following:\r\n1. Contributor solves an issue\r\n2. `conversation-rewards` plugin generates a permit, saves it to a DB and displays it in github comments\r\n3. Contributor redeems permit at `pay.ubq.fi`\r\n\r\n[This](https://github.com/ubiquity/pay.ubq.fi/pull/226) PR introduces claiming rewards to gift cards.\r\n\r\nThe updated flow of the permit redeem should be following:\r\n1. Contributor solves an issue\r\n2. Permit reward amount is accumulated in a DB\r\n3. Contributor opens `pay.ubq.fi`, generates either an on-chain single permit (possibly for multiple solved issues) either redeems to a gift card\r\n\r\nSo as a part of this issue we should accumulate contributor rewards in a DB similar to how `0x4007` initially implemented it with the `debits, cerdits, settlements` tables.\r\n\r\n\r\n\r\nWhen this issue of accumulated rewards is ready we can just disable permit generation (via the plugin's `permitGeneration.enabled` option) and let contributors redeem only at `pay.ubq.fi`.\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/64/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/64/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/43","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/43/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/43/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/43/events","html_url":"https://github.com/ubiquity-os-marketplace/daemon-pricing/issues/43","id":2586022325,"node_id":"I_kwDOLcmjKM6aI5G1","number":43,"title":"Automatically Handling Prerequisites","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6724629305,"node_id":"LA_kwDOLcmjKM8AAAABkNGzOQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":6724629447,"node_id":"LA_kwDOLcmjKM8AAAABkNGzxw","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":7436352921,"node_id":"LA_kwDOLcmjKM8AAAABuz29mQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-10-14T13:15:42Z","updated_at":"2024-10-14T13:17:35Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"- There's situations where we price tasks that actually aren't ready to be worked on due to prerequisite tasks that need to be completed first. \r\n- It could be useful to set the `priority` and `time` level but then use a new command like `/requires `\r\n- In this case, the price label can be removed, indicating that it is not ready to be worked on. \r\n- When the prerequisite issue is merged, it would be great to add pricing again, which will automatically allow contributors to `/start` again. \r\n\r\nThis needs to listen to: \r\n1. the issue.closed (as complete) webhook event, and then restore the latest price from the timeline.\r\n2. the issues_comment.created webhook event, to parse the command.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/43/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/43/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/39","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/39/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/39/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/39/events","html_url":"https://github.com/ubiquity-os-marketplace/daemon-pricing/issues/39","id":2559332175,"node_id":"I_kwDOLcmjKM6YjE9P","number":39,"title":"Always prefer lower dimension label","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6724629257,"node_id":"LA_kwDOLcmjKM8AAAABkNGzCQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":6724629447,"node_id":"LA_kwDOLcmjKM8AAAABkNGzxw","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":6943841731,"node_id":"LA_kwDOLcmjKM8AAAABneKdww","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/labels/Price:%2025%20USD","name":"Price: 25 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-01T13:55:19Z","updated_at":"2024-10-01T13:55:39Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We do this already when rendering the price, but when we have two different time labels (or two different priority labels) the pricing algorithm will always take the lowest combination. \n\nWe should remove the higher labels as well so that there is no confusion.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/39/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/39/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/31","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/31/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/31/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/31/events","html_url":"https://github.com/ubiquity-os-marketplace/daemon-pricing/issues/31","id":2518256882,"node_id":"I_kwDOLcmjKM6WGYzy","number":31,"title":"Create a base reward for users within this plugin","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":8,"created_at":"2024-09-11T01:25:07Z","updated_at":"2024-09-11T02:58:38Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":" Yes I do agree that we should be able to chain these results. It's just that this plugin never had the capability to actually attribute rewards to a user, this was the responsibility of `conversation-rewards`. We could think of splitting this and have the logic here later on.\r\n\r\n_Originally posted by @gentlementlegen in https://github.com/ubiquibot/assistive-pricing/issues/27#issuecomment-2338184070_\r\n\r\nThis plugin should output a `Reward` compatible output to be able to be chained with other plugins. The current shape of the rewards is as follows:\r\nhttps://github.com/ubiquibot/conversation-rewards?tab=readme-ov-file#data-structure\r\n\r\nWhat this plugin should output is the following section:\r\n```json\r\n\"userName\": {\r\n \"task\": {\r\n \"reward\": 37.5,\r\n \"multiplier\": 1\r\n }\r\n}\r\n```\r\nwhich corresponds to the current reward within the label divided by the amount of users assigned to the task. Once in the output, chained plugins could pick this up and use it for further calculations.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/31/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/31/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/27","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/27/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/27/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/27/events","html_url":"https://github.com/ubiquity-os-marketplace/daemon-pricing/issues/27","id":2512540832,"node_id":"I_kwDOLcmjKM6VwlSg","number":27,"title":"Boosting All Rewards Based On Priority","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6724629374,"node_id":"LA_kwDOLcmjKM8AAAABkNGzfg","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":6724629553,"node_id":"LA_kwDOLcmjKM8AAAABkNG0MQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/labels/Priority:%204%20(Urgent)","name":"Priority: 4 (Urgent)","color":"ededed","default":false,"description":null},{"id":7436352944,"node_id":"LA_kwDOLcmjKM8AAAABuz29sA","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/labels/Price:%20400%20USD","name":"Price: 400 USD","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2024-09-08T19:35:45Z","updated_at":"2024-09-11T01:29:50Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We should boost all the rewards proportionally if it's an urgent task. This will incentivize all contributors (not just the assignee) to focus on that task because everybody gets higher rewards for work like reviews.\n\nThe higher the priority level the higher the rewards multiplier is for everybody. \n\n### example \n\nI should've received a reward closer to $150 in [this task](https://github.com/ubiquity/ts-template/issues/54#issuecomment-2336807302), because the priority level was 3. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/27/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/27/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/64","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/64/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/64/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/64/events","html_url":"https://github.com/ubiquity-os-marketplace/command-start-stop/issues/64","id":2577897569,"node_id":"I_kwDOL-In886Zp5hh","number":64,"title":"Task Limit Improvements","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7036608750,"node_id":"LA_kwDOL-In888AAAABo2og7g","url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":7036609123,"node_id":"LA_kwDOL-In888AAAABo2oiYw","url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":7384869651,"node_id":"LA_kwDOL-In888AAAABuCwrEw","url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/labels/Price:%20150%20USD","name":"Price: 150 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2024-10-10T07:25:06Z","updated_at":"2024-10-15T17:14:47Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"This needs to:\r\n\r\n1. Change to warning syntax vs diff syntax\r\n2. Link all the issues I'm currently assigned to in a comment so I can unassign myself or close them out. \r\n3. Only check assigned issues within the network, but this should be configurable to either be just within the repo, org, or [network](https://raw.githubusercontent.com/ubiquity/devpool-directory/refs/heads/development/devpool-issues.json)\r\n\r\n\r\n---\r\n\r\n```diff\r\n! You have reached your max task limit. Please close out some tasks before assigning new ones.\r\n```\r\n\r\n\r\n_Originally posted by @ubiquity-os[bot] in https://github.com/ubiquity/work.ubq.fi/issues/120#issuecomment-2404264757_\r\n \r\n\r\n>[!WARNING]\r\n> You have reached your max task limit. Please close out some tasks before assigning new ones.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/64/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/64/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/56","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/56/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/56/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/56/events","html_url":"https://github.com/ubiquity-os-marketplace/command-start-stop/issues/56","id":2541481034,"node_id":"I_kwDOL-In886Xe-xK","number":56,"title":"Rename the configuration to `allowedReviewerRoles` to match `automated-merging`","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-23T03:12:23Z","updated_at":"2024-09-23T03:12:23Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":" Seems to work fine on my org. Can I bother you to rename the configuration to `allowedReviewerRoles` to match `automated-merging`?\r\n\r\n_Originally posted by @gentlementlegen in https://github.com/ubiquibot/command-start-stop/pull/37#pullrequestreview-2317189521_\r\n ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/56/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/56/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/43","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/43/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/43/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/43/events","html_url":"https://github.com/ubiquity-os-marketplace/command-start-stop/issues/43","id":2513382540,"node_id":"I_kwDOL-In886VzyyM","number":43,"title":"Improved first time contributor DX","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2024-09-09T09:07:34Z","updated_at":"2024-09-10T13:31:53Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"## Enforcing Org Standards for New Contributors\r\n\r\nIt has become a regular issue that new contributors are not adhering to conventional commit standards. This leads to repetitive interactions with each pull request (PR), where we educate them about our organization-wide standards.\r\n\r\nIn other large open-source projects, bots automate initial acknowledgements of standards, such as 'accepting terms and conditions' or signing off on specific practices. I propose a similar automated approach to enforce these standards strictly.\r\n\r\n#### High-Level Enforcement via Bot\r\n- If CI is not green, and a `review_requested` event is triggered, the bot will apply a `requested_changes` review and comment: \"CI has failed and is required before requesting a review.\"\r\n\r\n#### Accommodations for First-Time Contributors\r\n- For first-time contributors, we can utilize an API to determine if this is the contributor's first task, covering anything from `/start` to `closed_as_complete`. Or use a JSON based storage simply for `Username:HasAcknowledgedTerms`, if the user name is not present we request they accept, if it's present standard `/start` flow.\r\n- If a contributor has not `closed_as_complete` or this is their first open PR, we should:\r\n - Comment on the issue (preferably) or the PR. This ensures they are aware of the guidelines upfront and do not need to backtrack and amend commits.\r\n - Clearly state our high-level contributing guidelines in the comment. Currently, we lack an official `contributing.md`, but we enforce several unwritten rules such as:\r\n - Use `yarn`\r\n - Ensure usage of version `v1.22`\r\n - Follow conventional commits\r\n - Always use the formatting scripts provided\r\n\r\n#### Acknowledgement Requirement\r\n- Implement a system where contributors must \"accept\" an acknowledgement of these standards before we assign the issue to them. This process:\r\n - Saves reviewers time by reducing the need to repeatedly educate on org-wide standards.\r\n - Improves Developer Experience (DX) as contributors are informed upfront, preventing the need to backtrack significantly on their PRs.\r\n - Enhances professionalism and presents the project as more official.\r\n - Helps in filtering out contributors who may find these standards too demanding or complex, ensuring a better fit for the project's needs.\r\n\r\n### Benefits\r\n- **Time Efficiency:** Streamlines the review process by setting clear expectations from the start.\r\n- **Improved DX:** Reduces the burden on new contributors by providing clear guidelines upfront.\r\n- **Professional Image:** Enhances the project's professionalism and operational efficiency.\r\n- **Quality Control:** Helps maintain a high standard of contributions by ensuring all contributors adhere to set practices.\r\n\r\n### This plugin or a new one?\r\n\r\nA dedicated plugin would be great actually as we could allow for a lot more customization of the terms and standards etc by allowing them to pass in their own custom markdown for tables etc as opposed to restricted to using our pretty `/start` message. Decouples from `/start` more but obv still coupled with it slightly. Allows for simpler per-repo customization as you do not have to consider the `/start` setup also.\r\n\r\nThis plugin, really coupled together. The config will become big and messy probably and it adds a whole new branch of functionality to this worker.\r\n\r\nhere is an [example](https://www.github.com/safe-global/safe-smart-account/pull/789#issuecomment-2214809563)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/43/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/43/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/28","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/28/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/28/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/28/events","html_url":"https://github.com/ubiquity-os-marketplace/command-start-stop/issues/28","id":2489452377,"node_id":"I_kwDOL-In886UYgdZ","number":28,"title":"Properly handle task limit","user":{"login":"whilefoo","id":139262667,"node_id":"U_kgDOCEz6yw","avatar_url":"https://avatars.githubusercontent.com/u/139262667?v=4","gravatar_id":"","url":"https://api.github.com/users/whilefoo","html_url":"https://github.com/whilefoo","followers_url":"https://api.github.com/users/whilefoo/followers","following_url":"https://api.github.com/users/whilefoo/following{/other_user}","gists_url":"https://api.github.com/users/whilefoo/gists{/gist_id}","starred_url":"https://api.github.com/users/whilefoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whilefoo/subscriptions","organizations_url":"https://api.github.com/users/whilefoo/orgs","repos_url":"https://api.github.com/users/whilefoo/repos","events_url":"https://api.github.com/users/whilefoo/events{/privacy}","received_events_url":"https://api.github.com/users/whilefoo/received_events","type":"User","site_admin":false},"labels":[{"id":7036608750,"node_id":"LA_kwDOL-In888AAAABo2og7g","url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":7036609178,"node_id":"LA_kwDOL-In888AAAABo2oimg","url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/labels/Priority:%204%20(Urgent)","name":"Priority: 4 (Urgent)","color":"ededed","default":false,"description":null},{"id":7036610424,"node_id":"LA_kwDOL-In888AAAABo2oneA","url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/labels/Price:%20200%20USD","name":"Price: 200 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-08-27T13:55:05Z","updated_at":"2024-10-01T17:17:52Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":" The original implementation allowed for productive contributors to work on two tasks concurrently. With a starting two task limit:\r\n| Condition | Task Adjustment | Explanation |\r\n|--------------------------------------------------------|-----------------------|---------------------------------------------------------------------------------------------------------|\r\n| If any reviewer approved the pull | +1 task per pull | It's likely that the pull is good, just waiting on other slow reviewers to confirm. |\r\n| If reviewers take longer than 24 hours | +1 task per pull | Don't wait for lazy reviewers to be able to start a new task. |\r\n| If any reviewer requested changes | -1 task per pull | They should focus on addressing the changes as a top priority. |\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquibot/command-start-stop/pull/19#discussion_r1731441502_\r\n \r\n\r\nFor the sake of this conversation a completed PR is when the conditions are met in the above table.\r\n\r\nIn the current state the code checks if any review is approved or if there is 0 reviews but 24 hours have passed since the creation of the PR, however it doesn't check if there's any requested changes so it will count it as completed even if there 1 approve and 1 requested changes.\r\n\r\nThere is still a problem when the reviewer requests changes and the contributor resolves those changes but waits for the reviewer to make a new review so they can't start another task.\r\nThere's two possible solutions: check if the reviewer was requested more than x hours ago or check that changes have been marked as solved","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/28/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/28/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/31","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/31/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/31/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/31/events","html_url":"https://github.com/ubiquity-os-marketplace/daemon-disqualifier/issues/31","id":2578750082,"node_id":"I_kwDOMDzQsM6ZtJqC","number":31,"title":"Fix pull-request problems","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-10-10T12:48:07Z","updated_at":"2024-10-10T12:56:06Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":" All UbiquiBot references should be removed. https://github.com/ubiquity-os-marketplace/daemon-disqualifier/commit/a9d71792a1218730e936d22b7509132abd0a1858\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquity-os-marketplace/daemon-disqualifier/pull/28#discussion_r1791403293_\r\n \n###### Similar [^01^]\n\n[^01^]: [Use Full Webhook Names](https://www.github.com/ubiquity-os-marketplace/daemon-disqualifier/issues/29) 78%","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/31/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/31/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/29","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/29/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/29/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/29/events","html_url":"https://github.com/ubiquity-os-marketplace/daemon-disqualifier/issues/29","id":2578021759,"node_id":"I_kwDOMDzQsM6ZqX1_","number":29,"title":"Use Full Webhook Names","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7078200331,"node_id":"LA_kwDOMDzQsM8AAAABpeTECw","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":7078200640,"node_id":"LA_kwDOMDzQsM8AAAABpeTFQA","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":7354334675,"node_id":"LA_kwDOMDzQsM8AAAABtlo90w","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Price:%2075%20USD","name":"Price: 75 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-10T08:10:21Z","updated_at":"2024-10-10T08:11:03Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Looks like this was never fixed. Should use full webhook names.\r\n\r\nUsing new shortened versions decreases maintainability because it can lead to developer confusion.\r\n\r\nhttps://github.com/ubiquity-os-marketplace/daemon-disqualifier/blob/9ca3f7ba20a48385151a55e7cf52e57cafa9cf65/tests/main.test.ts#L67\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquity-os-marketplace/daemon-disqualifier/pull/22#discussion_r1794931278_\r\n ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/29/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/29/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/26","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/26/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/26/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/26/events","html_url":"https://github.com/ubiquity-os-marketplace/daemon-disqualifier/issues/26","id":2551606597,"node_id":"I_kwDOMDzQsM6YFm1F","number":26,"title":"Priority Speed","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7078200355,"node_id":"LA_kwDOMDzQsM8AAAABpeTEIw","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":7078200640,"node_id":"LA_kwDOMDzQsM8AAAABpeTFQA","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":7354334696,"node_id":"LA_kwDOMDzQsM8AAAABtlo96A","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Price:%20150%20USD","name":"Price: 150 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-09-26T22:08:24Z","updated_at":"2024-09-27T22:55:34Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Divide the config timeouts by the priority level. This makes follow ups more aggressive based on the priority level. \n\n`Priority: 5 (Emergency)` Means divide by 5. \n\n- warning = 3.5 days / 5 = 16.8 hours\n- disqualify = 7 days / 5 = 33.6 hours\n\n\nShould be configurable (priority enabled: Boolean)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/26/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/26/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/18","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/18/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/18/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/18/events","html_url":"https://github.com/ubiquity-os-marketplace/daemon-disqualifier/issues/18","id":2518388048,"node_id":"I_kwDOMDzQsM6WG41Q","number":18,"title":"Metadata","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7078200331,"node_id":"LA_kwDOMDzQsM8AAAABpeTECw","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":7078200608,"node_id":"LA_kwDOMDzQsM8AAAABpeTFIA","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":7354334675,"node_id":"LA_kwDOMDzQsM8AAAABtlo90w","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Price:%2075%20USD","name":"Price: 75 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-09-11T03:44:17Z","updated_at":"2024-10-14T04:00:24Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"This should be standardized in our SDK but we can do a manual implementation here. The metadata header schema is as follows:\r\n```\r\n\r\n```\r\n\r\n> @gentlementlegen Really nice to see this finally working as expected. Except the revision hash in the metadata is undefined. This should be fixed!\r\n\r\n---\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquibot/conversation-rewards/issues/97#issuecomment-2340237317_\r\n ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/18/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/18/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/16","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/16/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/16/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/16/events","html_url":"https://github.com/ubiquity-os-marketplace/command-wallet/issues/16","id":2473749061,"node_id":"I_kwDOMNa7fM6TcmpF","number":16,"title":"duplicate private key error","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-08-19T16:29:08Z","updated_at":"2024-08-19T23:14:42Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"It seems that there has been a duplicate private key error upon what I believe is a new contributor registering which seems very unlikely and needs debugged\r\n\r\n_original [context](https://github.com/ubiquity/pay.ubq.fi/issues/281#issuecomment-2296727786)_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/16/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/16/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/4","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/4/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/4/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/4/events","html_url":"https://github.com/ubiquity-os-marketplace/command-wallet/issues/4","id":2394760599,"node_id":"I_kwDOMNa7fM6OvSWX","number":4,"title":"Change logs to use `ubiquity-dao/ubiquibot-logger`","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[{"id":7272080709,"node_id":"LA_kwDOMNa7fM8AAAABsXMlRQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":7272080985,"node_id":"LA_kwDOMNa7fM8AAAABsXMmWQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":7344465185,"node_id":"LA_kwDOMNa7fM8AAAABtcOlIQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":11,"created_at":"2024-07-08T06:30:59Z","updated_at":"2024-10-14T12:53:35Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Currently the logs are handled manually with `console` messages. They should use our logger package to follow our usual display standards and logic.\r\n\r\nhttps://github.com/ubiquity/ubiquibot-logger\r\n\r\nC.f. https://github.com/ubiquibot/command-wallet/pull/2#discussion_r1668052899 and https://github.com/ubiquibot/command-wallet/pull/2#discussion_r1668051345","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/4/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/4/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/17","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/17/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/17/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/17/events","html_url":"https://github.com/ubiquity-os-marketplace/daemon-merging/issues/17","id":2493962987,"node_id":"I_kwDOMQ8E8c6Uptrr","number":17,"title":"Last activity doesn't seem to take reviews and comments into account","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-08-29T09:45:27Z","updated_at":"2024-08-29T09:45:27Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":" Interesting that the bot didn't care about your comments @0x4007 for activity. Also, the `skipBotEvents` didn't seem to work, no rewards have been generated. It is properly set [here](https://github.com/ubiquibot/ubiquibot-config/blob/main/.github/.ubiquibot-config.yml#L34).\r\n\r\n[Related logs](https://github.com/ubiquibot/automated-merging/actions/runs/10611998253/job/29412739371#step:6:263).\r\n\r\n_Originally posted by @gentlementlegen in https://github.com/ubiquibot/user-activity-watcher/issues/15#issuecomment-2317098125_\r\n \r\n\r\nThe pull-request got merged even though activity was recent (under 2 hours prior), which should have delayed the merge even if CI was green and there was enough validations.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/17/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":1},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/17/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/16","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/16/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/16/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/16/events","html_url":"https://github.com/ubiquity-os-marketplace/daemon-merging/issues/16","id":2486912205,"node_id":"I_kwDOMQ8E8c6UO0TN","number":16,"title":"automated merging not working if total reviewers is under the minimum reviewer quota","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-08-26T13:43:00Z","updated_at":"2024-08-26T19:41:26Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"There is a scenario where a pull-request can have all the validations from the reviewers but won't get merged because the amount of reviewers is under the amount of required reviewers.\r\n\r\n## Example\r\nA review has 2 validations out of 2 reviewers, but 3 are required.\r\n\r\n## Possible solutions\r\n### Merge when 100% of reviewers validated\r\nPros:\r\n- avoids the automated merging to be stuck\r\n- doesn't require multiple validations on small / simple tasks\r\n\r\nCons:\r\n- dangerous, even more for outsider pull-requests, that could be merged only with one validation\r\n- could be missed by the team that wouldn't notice the merging happening\r\n\r\n### Post a message saying that the PR can be merged, but requires `n` more reviewers\r\nPros:\r\n- safe, wouldn't automatically merge the pull-request without meeting the requirements\r\n- could even notify the team about the required reviews\r\n\r\nCons:\r\n- might require multiple reviews for simple tasks\r\n- can increase noise, and delay merging\r\n\r\nPartially relates to #5","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/16/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/16/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/5","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/5/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/5/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/5/events","html_url":"https://github.com/ubiquity-os-marketplace/daemon-merging/issues/5","id":2434465239,"node_id":"I_kwDOMQ8E8c6RGv3X","number":5,"title":"Auto merge if all requested reviews are approved","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-07-29T05:09:40Z","updated_at":"2024-07-29T10:53:55Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Mixed feelings on this because GitHub [has this feature already](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository), but it must be manually enabled per every repository which is tedious. \r\n\r\nThis seems like a simple example of when it can automatically merge with no risk:\r\n\r\nhttps://github.com/ubiquibot/command-start-stop/pull/18#pullrequestreview-2203939804\r\n\r\nAt least our improvement should allow a threshold i.e. 2/3 requested reviews approved, so automatically merge. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/5/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/5/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/27","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/27/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/27/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/27/events","html_url":"https://github.com/ubiquity-os-marketplace/text-vector-embeddings/issues/27","id":2564376454,"node_id":"I_kwDOMoorW86Y2UeG","number":27,"title":"Similar Issue Editing Specification Timeout","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7402979202,"node_id":"LA_kwDOMoorW88AAAABuUB_gg","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/labels/Price:%2075%20USD","name":"Price: 75 USD","color":"1f883d","default":false,"description":null},{"id":7402979258,"node_id":"LA_kwDOMoorW88AAAABuUB_ug","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":7402979278,"node_id":"LA_kwDOMoorW88AAAABuUB_zg","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-03T15:39:11Z","updated_at":"2024-10-03T15:39:27Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I generally write specifications, post, edit, post, edit etc.\r\n\r\nWhile I am editing, the script runs again and changes my specification body. This is a problem because when I complete my edit, GitHub refuses to accept my changes because there were other changes that occurred in the background from the bot. It tells me I need to refresh the page, and try again. \r\n\r\nThis is obviously annoying so we need to make a timeout for edit. The timeout feature should be mindful of two things:\r\n1. It should restart the timer if there is another edit. \r\n2. It should be configurable, with the default being 30 minutes. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/27/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/27/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/23","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/23/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/23/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/23/events","html_url":"https://github.com/ubiquity-os-marketplace/text-vector-embeddings/issues/23","id":2556426405,"node_id":"I_kwDOMoorW86YX_il","number":23,"title":"Redact switch","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7402979202,"node_id":"LA_kwDOMoorW88AAAABuUB_gg","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/labels/Price:%2075%20USD","name":"Price: 75 USD","color":"1f883d","default":false,"description":null},{"id":7402979258,"node_id":"LA_kwDOMoorW88AAAABuUB_ug","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":7402979278,"node_id":"LA_kwDOMoorW88AAAABuUB_zg","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2024-09-30T11:54:52Z","updated_at":"2024-10-14T12:53:39Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Config to toggle redacts. \n\nUsed for private repos only. \n\nredactPrivateRepoComments: boolean \n\nDefault we capture everything. \n\n> Maybe we shouldn't redact comments in the near future. And instead have a switch for it later when/if partners ever ask. I feel like most people won't care and it will give us more data to work with for research purposes in the near future.\r\n\r\nI guess it would be fine to have it as an option in the configuration, because as long as not everybody can access the DB the content of private repositories cannot be read by outsiders.\n\n_Originally posted by @gentlementlegen in https://github.com/ubiquity-os-marketplace/generate-vector-embeddings/pull/20#issuecomment-2382245540_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/23/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/23/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/17","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/17/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/17/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/17/events","html_url":"https://github.com/ubiquity-os-marketplace/text-vector-embeddings/issues/17","id":2532429170,"node_id":"I_kwDOMoorW86W8c1y","number":17,"title":"onboarding bot","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":8,"created_at":"2024-09-18T00:22:31Z","updated_at":"2024-09-20T02:32:36Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Technically there will be two:\r\n\r\n1. Service and Products: Notion doc type embeddings generated for this, high level DAO overview.\r\n2. Developer onboarding: Initially the focus will be on an org-wide understanding of all repo readmes, they'll be used for a basic setup and walkthrough guide for any given repo.\r\n\r\nThis could be split into two separate tasks or combined as one. \r\n\r\nNumber two is easy, we run on `push` events and ID any added or changed `.md` files and we are done. Notion doc scanning isn't something that we can listen for webhook and go I don't think. So maybe we could have a cron job to run once every 30-60 days and parse the notion docs? I'm sure we can grab the pages from the API with a valid API key.\r\n\r\n---\r\n\r\nBefore we automate notion we need to decide:\r\n\r\n- Which docs we'll include\r\n- If we are keeping it verbatim to the portal\r\n- If we'll re-structure some parts etc.\r\n- subgroups would be ideal, e.g the type for these embeddings will be `dao_info`, but inside `metadata` we can have like `subgroup: recruitment | articles` etc, the more useful metadata we can apply like that the better imo. Why, because if your broad search results are poor you can refine further and have a bit more control of the black box.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/17/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/17/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/15","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/15/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/15/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/15/events","html_url":"https://github.com/ubiquity-os-marketplace/text-vector-embeddings/issues/15","id":2531366904,"node_id":"I_kwDOMoorW86W4Zf4","number":15,"title":"Handle HTML input","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[{"id":7402979201,"node_id":"LA_kwDOMoorW88AAAABuUB_gQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null},{"id":7402979258,"node_id":"LA_kwDOMoorW88AAAABuUB_ug","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":7402979275,"node_id":"LA_kwDOMoorW88AAAABuUB_yw","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-09-17T14:46:51Z","updated_at":"2024-09-18T02:58:45Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Input should be properly sanitized and then stored according to the database schema. It appears that markdown is handled correctly but HTML is not and it should be as it's a supported GitHub comment format.\r\n\r\nhttps://github.com/ubq-testing/generate-vector-embeddings/issues/5\r\n\r\n![image](https://github.com/user-attachments/assets/ae9702f1-f64a-49be-9b9d-3ca75cc9fef0)\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/15/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/15/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/13","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/13/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/13/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/13/events","html_url":"https://github.com/ubiquity-os-marketplace/text-vector-embeddings/issues/13","id":2530837060,"node_id":"I_kwDOMoorW86W2YJE","number":13,"title":"Store issue if not stored already","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-09-17T10:59:08Z","updated_at":"2024-09-17T15:06:59Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"1. If the issue does not already exist in the DB then store it to allow comments to be stored.\r\n2. Correct the error handling; when an error is thrown an `ok` log shouldn't be shown if it's not `ok`.\r\n3. Post a comment on the issue stating that the plugin has failed?\r\n\r\n\r\n![image](https://github.com/user-attachments/assets/b46dd279-59da-4e03-b247-4725b3b6d41d)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/13/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/13/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/10","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/10/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/10/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/10/events","html_url":"https://github.com/ubiquity-os-marketplace/text-vector-embeddings/issues/10","id":2518503123,"node_id":"I_kwDOMoorW86WHU7T","number":10,"title":"Codebase semantic search","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-11T05:16:53Z","updated_at":"2024-09-11T05:33:03Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"For on boarding new developers, or just to synchronize existing developers, we should be generating embeddings of our code base. We can do per file or on the function level, depending on which has better performance.\n\nI asked GPT for the best sorting method on the [embedding leaderboard](https://huggingface.co/spaces/mteb/leaderboard). \n\nLater it clarified that we should be sorting by \"retrieval with instructions\" for best results. \n\n[FollowIR-7B](https://huggingface.co/jhu-clsp/FollowIR-7B) is the highest ranked. \n\nWe should be doing this in two steps:\n1. Primarily, we should be generating embeddings of the new files when pull requests are merged.\n2. We should have a tool that we can run manually (manual dispatch on GitHub actions ok) to generate all the embeddings. This would be expected to be used if there were pushes directly to the default branch and were not added via pull request\n\n### additional context\n\n> For this use case (codebase question-answering), your focus should be on retrieval tasks. Based on the criteria provided, here’s how I would prioritize the metrics:\n\n> 1. **Retrieval Average (15 datasets)**: This should be your highest priority. The better the retrieval capability of the model, the more relevant code chunks it will retrieve when you ask a question about the codebase.\n\n> 2. **Embedding Dimensions**: A higher embedding dimension may provide more nuanced representations of code and questions, improving retrieval accuracy. However, this needs to be balanced with memory usage and model size.\n\n> 3. **Model Size (Million Parameters)**: Larger models tend to perform better in generating high-quality embeddings, but at the cost of memory and speed. Consider how much memory and computational power you can afford.\n\n> 4. **Max Tokens**: A higher max token limit is useful for code because some functions or files can be quite large. You'll want a model that can handle bigger chunks of code.\n\n> 5. **Classification Average (12 datasets)**: Code-related tasks sometimes involve classification (e.g., determining the type of question or identifying sections of code). A higher classification score can help in such scenarios.\n\n> 6. **STS Average (10 datasets)**: Semantic Textual Similarity (STS) is also important as it measures how well the embeddings capture semantic meaning, which is useful for understanding the context and retrieving the right code section.\n\n> ### Sorting Criteria:\n> Sort by **Retrieval Average** first, then consider **Max Tokens** and **Embedding Dimensions** for practical handling of code and performance optimization.\n\n> The other metrics like **Classification**, **Clustering**, and **Reranking** are less critical for your specific use case, but they can help refine the quality if you have a secondary need for such tasks.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/10/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/10/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/5","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/5/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/5/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/5/events","html_url":"https://github.com/ubiquity-os-marketplace/text-vector-embeddings/issues/5","id":2501678538,"node_id":"I_kwDOMoorW86VHJXK","number":5,"title":"Use the batch API","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-09-02T23:22:08Z","updated_at":"2024-09-03T04:23:25Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"We could use the batch API and reap the benefits it provides since right now we do not need the real-time embeddings that we currently have, which is awesome but more expensive than what it needs to be.\r\n\r\nSo we'd simply store each comment as they come in as is what happens now, then send all comments in the database without an embedding every n hours.\r\n\r\nWe could have a cron job perform this function for us but it would need to be able to handle the async nature of requests to this endpoint. Alternatively build a time check into the worker itself using the `updated_at` of the most recent embedding filled entry.\r\n\r\n- 50% cheaper\r\n- separate rate limit\r\n- 24hr turn around (which makes it very clean if we do it every 24hrs)\r\n\r\nhttps://platform.openai.com/docs/guides/batch/overview\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/5/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/5/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/2","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/2/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/2/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/2/events","html_url":"https://github.com/ubiquity-os-marketplace/text-vector-embeddings/issues/2","id":2499194812,"node_id":"I_kwDOMoorW86U9q-8","number":2,"title":"Enable RLS","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[{"id":7402979275,"node_id":"LA_kwDOMoorW88AAAABuUB_yw","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":6,"created_at":"2024-09-01T03:32:58Z","updated_at":"2024-09-01T16:30:37Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"The database can be accessed by anyone public with a full read / write access, which raises security concerns. RLS should be enabled on all the tables and a token required to modify data.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/2/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/2/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/6","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/6/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/6/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/6/events","html_url":"https://github.com/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/6","id":2584199467,"node_id":"I_kwDOMqhXyc6aB8Er","number":6,"title":"First Assignment","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7397596973,"node_id":"LA_kwDOMqhXyc8AAAABuO5fLQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/labels/Priority:%204%20(Urgent)","name":"Priority: 4 (Urgent)","color":"ededed","default":false,"description":null},{"id":7593009367,"node_id":"LA_kwDOMqhXyc8AAAABxJQg1w","url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/labels/Price:%2024%20USD","name":"Price: 24 USD","color":"1f883d","default":false,"description":null},{"id":7593009375,"node_id":"LA_kwDOMqhXyc8AAAABxJQg3w","url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/labels/Time:%20%3C15%20Minutes","name":"Time: <15 Minutes","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-13T19:12:41Z","updated_at":"2024-10-13T19:12:57Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"> I guess it would make sense to only make a chat room on the first assignment\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/5#issuecomment-2408895453_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/6/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/6/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/4","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/4/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/4/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/4/events","html_url":"https://github.com/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/4","id":2582596201,"node_id":"I_kwDOMqhXyc6Z70pp","number":4,"title":"Add build to the Action to improve start time","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[{"id":7397596910,"node_id":"LA_kwDOMqhXyc8AAAABuO5e7g","url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null},{"id":7397596952,"node_id":"LA_kwDOMqhXyc8AAAABuO5fGA","url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":7397596972,"node_id":"LA_kwDOMqhXyc8AAAABuO5fLA","url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-12T06:18:49Z","updated_at":"2024-10-12T06:25:39Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"The Telegram action could have a build to improve its latency.","closed_by":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/4/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/4/timeline","performed_via_github_app":null,"state_reason":"reopened"},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/1","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/1/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/1/events","html_url":"https://github.com/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/1","id":2497262166,"node_id":"I_kwDOMqhXyc6U2TJW","number":1,"title":"Telegram Bot V2","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[{"id":7397596971,"node_id":"LA_kwDOMqhXyc8AAAABuO5fKw","url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-08-30T13:33:12Z","updated_at":"2024-08-30T16:45:18Z","closed_at":null,"author_association":"COLLABORATOR","active_lock_reason":null,"body":"This plugin is designed to process events from both Telegram and GitHub, enabling it to respond flexibly and making it more scalable than a configuration limited to handling Telegram events and kernel interactions alone.\r\n\r\nThe system will function as the 'kernel' for Telegram, intended for use potentially within just our organization or alongside partners, depending on the final design.\r\n\r\nAll essential logic from Version 1 (V1) will be refactored to be compatible with the new Version 2 (V2) kernel. Initially, it will incorporate the functionality specified in https://github.com/ubiquibot/plugins-wishlist/issues/25.\r\n\r\nIt aims to provide a robust foundation that can be expanded with additional features. Comprehensive documentation will be developed to facilitate rapid onboarding, ensuring a seamless transition to align with the capabilities of V1.\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/1/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":1,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/1/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/.github/issues/1","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/.github","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/.github/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/.github/issues/1/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/.github/issues/1/events","html_url":"https://github.com/ubiquity-os-marketplace/.github/issues/1","id":2568542217,"node_id":"I_kwDOM8J8-M6ZGNgJ","number":1,"title":"Change Diff Syntax","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7564601969,"node_id":"LA_kwDOM8J8-M8AAAABwuKqcQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/.github/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null},{"id":7564602015,"node_id":"LA_kwDOM8J8-M8AAAABwuKqnw","url":"https://api.github.com/repos/ubiquity-os-marketplace/.github/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":7564602030,"node_id":"LA_kwDOM8J8-M8AAAABwuKqrg","url":"https://api.github.com/repos/ubiquity-os-marketplace/.github/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2024-10-06T08:25:44Z","updated_at":"2024-10-07T03:38:06Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"As it turns out, GitHub flavored markdown includes these handy color indicators. We can use the same color keys but instead of diff syntax, we use this syntax. \r\n\r\nThis should be applied across all kernel and plugin messages.\r\n\r\nIt might even be handy to rename the methods in our logger if its still attached to posting comments. The inspiration behind the rename is so that the class of message is no longer subjective.\r\n\r\n```typescript\r\nlogger.info();\r\nlogger.success();\r\nlogger.redirect();\r\nlogger.clientError();\r\nlogger.serverError();\r\n```\r\n\r\n### Status Codes\r\n\r\nBased on HTTP status codes, we should color code the responses. The only problem is that some of the headers can be misleading, but it does look a lot more aesthetically pleasing than the diffs. The left border in particular I think is a great minimal representation of the status. \r\n\r\n> [!NOTE]\r\n> 1xx\r\n\r\n> [!TIP]\r\n> 2xx\r\n\r\n> [!IMPORTANT]\r\n> 3xx\r\n\r\n> [!WARNING]\r\n> 4xx\r\n\r\n> [!CAUTION]\r\n> 5xx\r\n\r\n### Source Code\r\n\r\n```markdown\r\n> [!NOTE]\r\n> 1xx\r\n\r\n> [!TIP]\r\n> 2xx\r\n\r\n> [!IMPORTANT]\r\n> 3xx\r\n\r\n> [!WARNING]\r\n> 4xx\r\n\r\n> [!CAUTION]\r\n> 5xx\r\n```\r\n\r\n### About HTTP Status Code Classes\r\n\r\n> HTTP status codes are standardized codes returned by web servers to indicate the result of a client's request. These codes are grouped into five classes, each signifying a different category of response:\r\n>\r\n> ---\r\n> \r\n> ### **1xx: Informational**\r\n> \r\n> **Description:** The 1xx class of status codes indicates that the server has received the request and is continuing the process. These are provisional responses, providing interim information while the server continues to process the request.\r\n> \r\n> **Common Status Codes:**\r\n> \r\n> - **100 Continue:** Indicates that the initial part of the request has been received and the client should continue with the rest of the request.\r\n> - **101 Switching Protocols:** Informs the client that the server is switching to a different protocol as requested.\r\n> - **102 Processing (WebDAV):** Signals that the server has received and is processing the request, but no response is available yet.\r\n> \r\n> ---\r\n> \r\n> ### **2xx: Success**\r\n> \r\n> **Description:** The 2xx class signifies that the client's request was successfully received, understood, and accepted by the server.\r\n> \r\n> **Common Status Codes:**\r\n> \r\n> - **200 OK:** The request has succeeded. The meaning varies depending on the HTTP method used.\r\n> - **201 Created:** The request has been fulfilled, resulting in the creation of a new resource.\r\n> - **202 Accepted:** The request has been accepted for processing, but the processing is not complete.\r\n> - **204 No Content:** The server successfully processed the request and is not returning any content.\r\n> - **206 Partial Content:** The server is delivering only part of the resource due to a range header sent by the client.\r\n> \r\n> ---\r\n> \r\n> ### **3xx: Redirection**\r\n> \r\n> **Description:** The 3xx class indicates that further action is needed to complete the request. This usually means a redirection to a different resource.\r\n> \r\n> **Common Status Codes:**\r\n> \r\n> - **301 Moved Permanently:** The resource has been permanently moved to a new URL.\r\n> - **302 Found:** The resource resides temporarily under a different URL.\r\n> - **303 See Other:** The response can be found under a different URI and should be retrieved using a GET method.\r\n> - **304 Not Modified:** Indicates that the resource has not been modified since the last request.\r\n> - **307 Temporary Redirect:** The request should be repeated with another URI; however, future requests should still use the original URI.\r\n> \r\n> ---\r\n> \r\n> ### **4xx: Client Error**\r\n> \r\n> **Description:** The 4xx class signifies errors that appear to have been caused by the client. These codes indicate that the request contains bad syntax or cannot be fulfilled.\r\n> \r\n> **Common Status Codes:**\r\n> \r\n> - **400 Bad Request:** The server cannot process the request due to a client error (e.g., malformed request syntax).\r\n> - **401 Unauthorized:** Authentication is required and has failed or has not yet been provided.\r\n> - **403 Forbidden:** The client does not have access rights to the content.\r\n> - **404 Not Found:** The server cannot find the requested resource.\r\n> - **405 Method Not Allowed:** The request method is known by the server but is not supported by the target resource.\r\n> - **408 Request Timeout:** The server timed out waiting for the request.\r\n> - **409 Conflict:** The request could not be completed due to a conflict with the current state of the resource.\r\n> - **410 Gone:** The resource requested is no longer available and will not be available again.\r\n> - **429 Too Many Requests:** The user has sent too many requests in a given amount of time (\"rate limiting\").\r\n> \r\n> ---\r\n> \r\n> ### **5xx: Server Error**\r\n> \r\n> **Description:** The 5xx class indicates that the server failed to fulfill a valid request. The server is aware that it has encountered an error or is otherwise incapable of performing the request.\r\n> \r\n> **Common Status Codes:**\r\n> \r\n> - **500 Internal Server Error:** A generic error message when the server encounters an unexpected condition.\r\n> - **501 Not Implemented:** The server either does not recognize the request method or lacks the ability to fulfill it.\r\n> - **502 Bad Gateway:** The server was acting as a gateway or proxy and received an invalid response from the upstream server.\r\n> - **503 Service Unavailable:** The server is not ready to handle the request, often due to maintenance or overload.\r\n> - **504 Gateway Timeout:** The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.\r\n> - **505 HTTP Version Not Supported:** The server does not support the HTTP protocol version used in the request.\r\n> \r\n> ---\r\n> \r\n> Understanding these status codes is essential for debugging web applications and ensuring efficient client-server communication. Each code provides specific information about what happened with a request, allowing developers to handle responses appropriately.\r\n\r\n### Original Context\r\n\r\n> [!WARNING]\r\n> Failed to run comment evaluation. \r\n>\r\n>`TypeError: Cannot read properties of undefined (reading 'wordValue')`\r\n\r\n\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquity/.github/issues/115#issuecomment-2395344603_\r\n \r\n###### Similar [^01^]\r\n\r\n[^01^]: [Slow Start to Evaluation](https://www.github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/138) 75%","closed_by":{"login":"ubiquity-os-beta[bot]","id":182769649,"node_id":"BOT_kgDOCuTX8Q","avatar_url":"https://avatars.githubusercontent.com/in/1007802?v=4","gravatar_id":"","url":"https://api.github.com/users/ubiquity-os-beta%5Bbot%5D","html_url":"https://github.com/apps/ubiquity-os-beta","followers_url":"https://api.github.com/users/ubiquity-os-beta%5Bbot%5D/followers","following_url":"https://api.github.com/users/ubiquity-os-beta%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/ubiquity-os-beta%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/ubiquity-os-beta%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ubiquity-os-beta%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/ubiquity-os-beta%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/ubiquity-os-beta%5Bbot%5D/repos","events_url":"https://api.github.com/users/ubiquity-os-beta%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/ubiquity-os-beta%5Bbot%5D/received_events","type":"Bot","site_admin":false},"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/.github/issues/1/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/.github/issues/1/timeline","performed_via_github_app":null,"state_reason":"reopened"},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/29","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/29/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/29/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/29/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-logger/issues/29","id":2471988164,"node_id":"I_kwDOK3SaHs6TV4vE","number":29,"title":"lack of `console.logger.warn()` implementation ","user":{"login":"wolfmic","id":1028208,"node_id":"MDQ6VXNlcjEwMjgyMDg=","avatar_url":"https://avatars.githubusercontent.com/u/1028208?v=4","gravatar_id":"","url":"https://api.github.com/users/wolfmic","html_url":"https://github.com/wolfmic","followers_url":"https://api.github.com/users/wolfmic/followers","following_url":"https://api.github.com/users/wolfmic/following{/other_user}","gists_url":"https://api.github.com/users/wolfmic/gists{/gist_id}","starred_url":"https://api.github.com/users/wolfmic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wolfmic/subscriptions","organizations_url":"https://api.github.com/users/wolfmic/orgs","repos_url":"https://api.github.com/users/wolfmic/repos","events_url":"https://api.github.com/users/wolfmic/events{/privacy}","received_events_url":"https://api.github.com/users/wolfmic/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2024-08-18T14:04:09Z","updated_at":"2024-08-19T09:20:24Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"While working on this issue: https://github.com/ubiquibot/command-wallet/issues/4\r\nIt appears that `console.logger.warn()` is not implemented yet on `ubiquibot-logger`\r\nIs it useful to add it to this project?","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/29/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/29/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/3","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/3/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/3/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-logger/issues/3","id":2083463506,"node_id":"I_kwDOK3SaHs58LyFS","number":3,"title":"Redundant OK Logs","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-01-16T09:41:09Z","updated_at":"2024-01-16T14:18:00Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"@gitcoindev I'm in the middle of a few things now and I'm hoping you can sync a change for me before I forget and mess things up.\r\n\r\nhttps://github.com/pavlovcik/ubiquibot/blob/85177d0be5f5f0dde874f4164426a7c7d4702ea1/src/adapters/supabase/helpers/tables/logs.ts#L274\r\n\r\nThis was redundantly logging every type of log as \"ok\" in the console, causing a lot of noise. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/3/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/3/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/146","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/146/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/146/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/146/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/146","id":2585978056,"node_id":"I_kwDOK6Xdq86aIuTI","number":146,"title":"Avatar Color Matching Comment Tone","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6498475622,"node_id":"LA_kwDOK6Xdq88AAAABg1beZg","url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-10-14T13:01:00Z","updated_at":"2024-10-14T16:21:26Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"![photo_2024-10-14 21 54 29](https://github.com/user-attachments/assets/77d70524-fece-40df-a148-c958b2626c79)\r\n\r\nI think it looks aesthetic to match the avatar to the tone of the posted message. This was a happy accident but as we can imagine, if its an error, then a red avatar appears. We can have a few different authentications/apps with different branding to indicate the \"mood\" of the AI. In case we need unique names, then we can do something like: \r\n- `ubiquity-os[bot]` normal/green/blue\r\n- `ubiquity-os-debug[bot]` purple\r\n- `ubiquity-os-warning[bot]` yellow\r\n- `ubiquity-os-error[bot]` red\r\n\r\n\r\nStatus message color reference https://gist.github.com/0x4007/c17c46cd206970f46115a7ef5c465924\r\n\r\nI suppose that this would require a first-class integration inside of our logger. We also will need to figure a way to deal with the private keys so we can post.\r\n\r\nThis would be used internally in Ubiquity mostly for showcasing/product demos, as I think it could be annoying for partners to install every different app. We could make the logger fallback to posting with default authentication in case the correct app is not found for the class of message. For example, if warning bot is not installed, then it would post the warning authenticated as normal `ubiquity-os[bot]`","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/146/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/146/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/145","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/145/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/145/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/145/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/145","id":2584280905,"node_id":"I_kwDOK6Xdq86aCP9J","number":145,"title":"Stricter auth for Action plugins","user":{"login":"whilefoo","id":139262667,"node_id":"U_kgDOCEz6yw","avatar_url":"https://avatars.githubusercontent.com/u/139262667?v=4","gravatar_id":"","url":"https://api.github.com/users/whilefoo","html_url":"https://github.com/whilefoo","followers_url":"https://api.github.com/users/whilefoo/followers","following_url":"https://api.github.com/users/whilefoo/following{/other_user}","gists_url":"https://api.github.com/users/whilefoo/gists{/gist_id}","starred_url":"https://api.github.com/users/whilefoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whilefoo/subscriptions","organizations_url":"https://api.github.com/users/whilefoo/orgs","repos_url":"https://api.github.com/users/whilefoo/repos","events_url":"https://api.github.com/users/whilefoo/events{/privacy}","received_events_url":"https://api.github.com/users/whilefoo/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-13T21:25:00Z","updated_at":"2024-10-13T21:25:00Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"- Add signature to the payload for Actions plugins\n- Add signature verification in Action plugin SDK","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/145/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/145/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/138","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/138/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/138/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/138/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/138","id":2580331524,"node_id":"I_kwDOK6Xdq86ZzLwE","number":138,"title":"SDK improvements","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-11T03:16:46Z","updated_at":"2024-10-15T02:56:43Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"The SDK could get some improvements to make it more friendly to use\r\n\r\n- `\"hono\"` doesn't seem to be shipped with it but is required to serve the plugin, so it might be included, or even better, encapsulated within the SDK.\r\n- there is `createPlugin` and `createActionPlugin`. Maybe we could have only `createPlugin`, that would change behavior depending on either the runtime or the environment (e.g. running on a Worker / Action). What would be great that the user doesn't have to worry about this, and locally a GitHub plugin would run as a server, this way it would be easy to debug locally.\r\n- the `Manifest` type is not exported. The main issue is that when a JSON is imported directly through `import`, the type of `ubiquity:listeners` is a `string[]` and is incompatible with `Manifest`.\r\n- now both Actions and Workers come with a manifest, and this doesn't seem to be currently available for `createActionPlugin` (might be solved if we merge both function).\r\n- the validate and decode + inputs could be handled in the SDK (currently just Decodes with no error nor Default).\r\n- expose the `postComment` methos to make sure we have metadata on the comments\r\n- remove duplicated declaration of `postComment`\r\n- improve logs for error (there is none at the moment)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/138/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/138/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/121","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/121/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/121/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/121/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/121","id":2557351356,"node_id":"I_kwDOK6Xdq86YbhW8","number":121,"title":"KV Limits","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":14,"created_at":"2024-09-30T18:14:42Z","updated_at":"2024-10-15T07:12:15Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"- We hit 90% daily quota today. Given that we don't even have any partners using the system yet, this is looking grim. \r\n- I hope that we can find a way to optimize our KV usage (or we can figure some cheaper alternative, but I am skeptical.)\r\n- \r\n- \r\n\r\n### Projected Costs\r\n\r\n- The good news is that our limits go from 1000 -> 33,333, so we get essentially 33x capacity for $5/month.\r\n- I estimate that once we get most of the planned plugins up and running, we'll be closer to 5k a day. \r\n- `6,666.6666666667` per $1 of cost\r\n- I think each large partner will cost us approximately $1 a month on KV\r\n - Smaller ones will probably be closer to the 1k we are using now. \r\n\r\n### Next Steps\r\n\r\nLet's discuss how we can optimize the KV usage of the kernel. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/121/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/121/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/120","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/120/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/120/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/120/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/120","id":2556461382,"node_id":"I_kwDOK6Xdq86YYIFG","number":120,"title":"Do not break the loop when a plugin fails to run","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-30T12:09:51Z","updated_at":"2024-09-30T12:09:51Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":" The `command-start-stop` was never called which is why it never worked. The reason is that a plugin is failing on a fatal error because of the new orgs that have been created and somehow doesn't have the proper access level\r\n```json\r\n{\r\n \"message\": [\r\n \"Calling handler {\\\"owner\\\":\\\"ubiquibot\\\",\\\"repo\\\":\\\"user-activity-watcher\\\",\\\"workflowId\\\":\\\"compute.yml\\\",\\\"ref\\\":\\\"development\\\"} for event issue_comment\"\r\n ],\r\n \"level\": \"log\",\r\n \"timestamp\": 1727697850120\r\n},\r\n{\r\n \"message\": [\r\n \"Error in event handler\",\r\n \"HttpError: Resource not accessible by integration - https://docs.github.com/rest/actions/workflows#create-a-workflow-dispatch-event\"\r\n ],\r\n \"level\": \"error\",\r\n \"timestamp\": 1727697850679\r\n}\r\n```\r\nI fixed by making the plugin higher on the list. I believe the loop should not break if a plugin is not working properly but just log the error. Also maintaining 4 repos is complex, these repos won't get moved?\r\n\r\n_Originally posted by @gentlementlegen in https://github.com/ubiquity/ubiquity-dollar/issues/965#issuecomment-2383007493_\r\n \r\n\r\nIf a plugin is not reachable or does not start properly, the loop should continue as plugins are independent.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/120/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/120/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/111","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/111/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/111/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/111/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/111","id":2519339981,"node_id":"I_kwDOK6Xdq86WKhPN","number":111,"title":"Cache for repo configs","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-09-11T10:27:56Z","updated_at":"2024-09-11T10:42:42Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"It's kinda annoying that the kernel must fetch from both config locations on every request and more often than not only one is needed. \r\n\r\nCons: \r\n- unnecessary use of rate limit\r\n- clogs up the terminal\r\n\r\nSolution:\r\n+ Could be solved with a KV or in memory cache\r\n+ After n requests we re-fetch from the repo just in case\r\n+ clean terminal and less rate limit used\r\n\r\nDo you think this would be a good thing to implement @whilefoo?","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/111/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/111/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/94","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/94/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/94/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/94/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/94","id":2484721589,"node_id":"I_kwDOK6Xdq86UGde1","number":94,"title":"Handling `issues.assigned` for `task-xp-guard`","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":15,"created_at":"2024-08-24T16:53:17Z","updated_at":"2024-09-08T15:36:26Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Related to https://github.com/ubiquibot/task-xp-guard/pull/1\r\n\r\nThe issue is that after using the `/start` command an `issues.assigned` event is fired but [this line](https://github.com/ubiquity/ubiquibot-kernel/blob/c91cce2a29bb33656c451306db364cb2f51ea504/src/github/handlers/index.ts#L29) in the kernel skips the plugin because `skipBotEvents` defaults to `true` and the sender of that event is the bot which is valid in regards to `issues.assigned`/`task-xp-guard`. \r\n\r\nWhich is why I could only get it to run if I created a two-step chain passing the `issue_comment.created` event forward from `start-stop` to `task-xp-guard` \r\n\r\nMy quick workaround below but is there a better way to handle this sort of thing? I have tried using `skipBotEvents: false` on both plugins with no success. The only thing that seems to work for me is below.\r\n\r\n```ts\r\n if (\r\n pluginChain.skipBotEvents && \r\n \"sender\" in event.payload && \r\n event.payload.sender?.type === \"Bot\" && \r\n context.key !== \"issues.assigned\"\r\n ) {\r\n console.log(\"Skipping plugin chain because sender is a bot\");\r\n return true;\r\n }\r\n```\r\n\r\n- [see this QA](https://github.com/ubq-testing/command-start-stop/issues/15) - shows it failing to catch the event despite `skipBotEvents: false` in the config\r\n\r\n- [see this QA](https://github.com/ubq-testing/command-start-stop/issues/16) - shows that with my workaround it kicks me as it should not only via direct UI assignment","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/94/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/94/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/90","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/90/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/90/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/90/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/90","id":2467624720,"node_id":"I_kwDOK6Xdq86TFPcQ","number":90,"title":"Decrypt sensitive config parameters","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":6498475781,"node_id":"LA_kwDOK6Xdq88AAAABg1bfBQ","url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":13,"created_at":"2024-08-15T08:17:48Z","updated_at":"2024-09-30T14:49:06Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Right now there are 2 ways to hide sensitive bot's config parameters:\r\n1. Make a config repository private (organization collaborators can still see the values though)\r\n2. Fork plugin, self host and set sensitive parameters in env variables (bad UX for partners)\r\n\r\nSensitive config parameters could be encrypted via our own `x25519_PUBLIC_KEY` (the same one we use for encrypting partners' private keys) and the kernel could then decrypt them.\r\n\r\nSo as a part of this issue the kernel should be able to decrypt config parameters on initial config parsing. \r\n\r\nThe expected flow for parsing a single config param:\r\n1. Try to decrypt the parameter. \r\n2. If it is decrypted then use the decrypted parameter.\r\n3. If there's a decryption error then assume the parameter is not encrypted and use a raw value.\r\n\r\nNotice that there is a difference between decrypting: \r\n1. Unencrypted param\r\n2. Encrypted param with another PK\r\n\r\nI hope https://doc.libsodium.org/ distinguishes those 2 errors because in the 2nd case it will be a very subtle bug and the kernel should ideally throw an error like `The config parameter encryption is invalid` so that partner knew he did something wrong on encrypting a param.\r\n\r\nP.S. Handy tool: https://keygen.ubq.fi/\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/90/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/90/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/72","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/72/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/72/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/72/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/72","id":2402419226,"node_id":"I_kwDOK6Xdq86PMgIa","number":72,"title":"Infinite loop using wildcard event","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":13,"created_at":"2024-07-11T07:01:41Z","updated_at":"2024-07-27T00:53:55Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Recently we suffered from infinite loops in the kernel combined with actions. After investigating, it seems that the combination of the wildcard event (`'*'`) with an Action was the cause. What happens is the following:\r\n- the kernel receives a webhook event, say a `push` event\r\n- the kernel dispatches that event to plugins located within `'*'`\r\n- the action starts, say `user-activity-watcher`\r\n- this summons the Github webhook that sends a `workflow_started` event to the kernel\r\n- kernel dispatches that event to `'*'`\r\n- action starts again\r\n\r\nand so on, creating the loop. It doesn't happen with Workers because they don't trigger any event within Github when they are run.\r\n\r\nI think this highlights the dangers of subscribing Actions to that wildcard. Maybe we should consider removing it and changing the way we configure plugins. My idea was to have a `allow | forbid` list where we can configure which events to react to, or which events to ignore, per plugin in the configuration file. Now that we are working on the [manifest feature](https://github.com/ubiquity/ubiquibot-kernel/issues/58), we could even allow plugin creators to set some defaults there, that we can eventually override within the configuration.\r\n\r\nHowever despite these changes we would not be safe from infinite loops (for example, a plugin posting a comment when the event comment posting is triggered). We should think of a way to limit runs if that happens, to avoid bursting through cloudflare limits and github api.\r\n\r\n@0x4007 @whilefoo @rndquu for vis","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/72/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/72/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/54","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/54/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/54/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/54/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/54","id":2348005317,"node_id":"I_kwDOK6Xdq86L87fF","number":54,"title":"Merge configurations by unique IDs","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[{"id":6498475438,"node_id":"LA_kwDOK6Xdq88AAAABg1bdrg","url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/labels/Time:%20%3C4%20Hours","name":"Time: <4 Hours","color":"ededed","default":false,"description":null},{"id":6498475781,"node_id":"LA_kwDOK6Xdq88AAAABg1bfBQ","url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":7381674072,"node_id":"LA_kwDOK6Xdq88AAAABt_toWA","url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/labels/Price:%20300%20USD","name":"Price: 300 USD","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-06-12T07:15:37Z","updated_at":"2024-09-13T17:16:34Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We should look into a more robust configuration merge.\r\n\r\nQuote from discussion:\r\n\r\nI know there isn't a concept of merging configurations together on GitHub Actions. \r\n\r\nThis doesn't address the key point I am making. The cause we are discussing is a collision with dependency IDs. And whether there are real-world scenarios where configurations might lead to duplicate dependencies. \r\n\r\nFrom my experience creating GitHub Actions CI scripts, I haven't encountered situations where adding redundant dependencies was necessary. This makes the theoretical merging logic problem irrelevant to our practical implementation. \r\n\r\nWe should focus on the actual conditions under which our configurations operate, rather than hypothetical scenarios that don't align with real-world use cases.\r\n\r\nBasically I'm saying to drop support for using the same dependency more than one, particularly when associated with the same webhook event. See [this comment](https://github.com/ubiquity/ubiquibot-kernel/pull/47#issuecomment-2154146051) for a suggestion on how to handle that.\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquity/ubiquibot-kernel/issues/47#issuecomment-2162159354_\r\n ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/54/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/54/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/41","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/41/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/41/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/41/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/41","id":2304370599,"node_id":"I_kwDOK6Xdq86JWeen","number":41,"title":"Parsing Org config","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-05-19T01:24:18Z","updated_at":"2024-05-19T01:31:03Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"It used to be the case that the org config was parsed as well. In refactoring [`/research`](https://github.com/ubq-testing/ubiquibot-ask-plugin/issues/1) it relies on `keys.openAi` which cannot be set at the repo level. Perhaps I'm doing something wrong but I don't think I am although insight would be appreciated\r\n\r\n- https://github.com/ubiquity/ubiquibot-kernel/blob/development/src/github/utils/config.ts\r\n\r\nChanges I had to make:\r\n\r\n- The naming convention was recently changed to match the repo-level config but the private config uses the previous version. (unless this has changed since V1)\r\n\r\n```ts\r\nconst _orgConfig = parseYaml(\r\n await download({\r\n context,\r\n repository: \".ubiquibot-config\",\r\n owner: payload.repository.owner.login,\r\n path: \".github/ubiquibot-config.yml\",\r\n })\r\n );\r\n\r\n /**\r\n * @TODO update config package to support this, right now\r\n * it's pulling a hardcoded org config from it's own repo\r\n *\r\n * const merged = await generateConfiguration(_repoConfig, _orgConfig)\r\n */\r\n\r\n let merged = { ..._repoConfig, ..._orgConfig };\r\n```\r\n\r\nAlso `generateConfiguration()` I think needs updated so that it can be passed both configs and have it return a correctly merged config\r\n\r\n```ts\r\nimport orgConfig from \"../../.github/.ubiquibot-config.yml\";\r\nimport { BotConfig, botConfigSchema, validateBotConfig } from \"../types\";\r\nimport { githubPluginType } from \"../types/configuration/plugin-configuration\";\r\n\r\nexport function generateConfiguration(repoConfig?: BotConfig): BotConfig {\r\n const defaultConfig = Value.Default(botConfigSchema, {}) as BotConfig;\r\n\r\n const merged = mergeWith(defaultConfig, orgConfig, repoConfig, (objValue: unknown, srcValue: unknown) => {\r\n if (Array.isArray(objValue) && Array.isArray(srcValue)) {\r\n``` ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/41/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/41/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/32","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/32/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/32/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/32/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/32","id":2183169000,"node_id":"I_kwDOK6Xdq86CIIPo","number":32,"title":"Migration system for Supabase database","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":6,"created_at":"2024-03-13T02:27:32Z","updated_at":"2024-03-15T08:00:14Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We should have a migration system set for our new Supabase instance. To this day, everything is done through the Supabase Dashboard and there is no track of the changes. This become even more critical as we are starting to setup RLS and CLS, which won't be reflected by a db diff dump, as stated in their docs.\r\n\r\nThis means if we need to create a new db, move it, rollback, run it locally, we would be unable to do so and should do everything manually to mimic the current db's state.\r\n\r\nSupabase has a migration system implemented, and a CLI, so we should use these to keep our db updated with the latest schema. Maybe it is better to create a separate repository, as this doesn't really belong to this project specifically. Relates to https://github.com/ubiquity/ubiquibot/issues/919","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/32/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/32/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/30","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/30/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/30/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/30/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/30","id":2177912180,"node_id":"I_kwDOK6Xdq86B0E10","number":30,"title":"Event Queue","user":{"login":"whilefoo","id":139262667,"node_id":"U_kgDOCEz6yw","avatar_url":"https://avatars.githubusercontent.com/u/139262667?v=4","gravatar_id":"","url":"https://api.github.com/users/whilefoo","html_url":"https://github.com/whilefoo","followers_url":"https://api.github.com/users/whilefoo/followers","following_url":"https://api.github.com/users/whilefoo/following{/other_user}","gists_url":"https://api.github.com/users/whilefoo/gists{/gist_id}","starred_url":"https://api.github.com/users/whilefoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whilefoo/subscriptions","organizations_url":"https://api.github.com/users/whilefoo/orgs","repos_url":"https://api.github.com/users/whilefoo/repos","events_url":"https://api.github.com/users/whilefoo/events{/privacy}","received_events_url":"https://api.github.com/users/whilefoo/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-03-10T21:26:00Z","updated_at":"2024-03-11T00:44:31Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"I think we should process events from one repository (or maybe from one issue) in a sequential order. For example if the maintainer adds labels and closes the issue, the second event might be executed before the first one because of the async nature of Github Actions which could cause potential bugs. \r\nBut there might be scenarios where sequential execution is unwanted for example there is a long running task triggered by a command - in this situation we still want to execute other events while the task is running.\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/30/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/30/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/21","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/21/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/21/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/21/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/21","id":2133704765,"node_id":"I_kwDOK6Xdq85_LcA9","number":21,"title":"Speed Optimization: Configuration Caching ","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-02-14T07:19:14Z","updated_at":"2024-02-14T19:27:16Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"This still requires research on the best approach but currently the bot replies to events in a relatively slow manner. I think that some of the largest time overhead is due to the multiple network roundtrips that are incurred for compiling the configuration for every run. \r\n\r\n> Some other remarks is that I'm curious to see some type of caching approach because on Cloudflare Workers in our current state of research, it must fetch both the organization and repository configurations within the GitHub webhook event handler function. \r\n\r\n> This means that before it can respond to the user invoked event, the Worker needs to make a couple of fetches to those repositories and merge the configuration before it can respond. \r\n\r\n> The configuration is needed to modify the behavior of the Worker response for most situations I can think of so it seems like an optimization that will affect most use cases. \r\n\r\n> We also made a handler for pushes that validates the `yml` configurations which could be a good time to write to cache. Maybe we can write the cached configuration to Cloudflare KV storage or something.\r\n\r\n_Originally posted by @pavlovcik in https://github.com/ubiquity/pay.ubq.fi/issues/135#issuecomment-1943089107_\r\n ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/21/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/21/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/88","repository_url":"https://api.github.com/repos/ubiquity-os/permit-generation","labels_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/88/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/88/comments","events_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/88/events","html_url":"https://github.com/ubiquity-os/permit-generation/issues/88","id":2583369855,"node_id":"I_kwDOLTwaCM6Z-xh_","number":88,"title":"Optional NFT Types","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6780119957,"node_id":"LA_kwDOLTwaCM8AAAABlCBrlQ","url":"https://api.github.com/repos/ubiquity-os/permit-generation/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":7573368862,"node_id":"LA_kwDOLTwaCM8AAAABw2hwHg","url":"https://api.github.com/repos/ubiquity-os/permit-generation/labels/Time:%20%3C15%20Minutes","name":"Time: <15 Minutes","color":"ededed","default":false,"description":null},{"id":7573368869,"node_id":"LA_kwDOLTwaCM8AAAABw2hwJQ","url":"https://api.github.com/repos/ubiquity-os/permit-generation/labels/Price:%206%20USD","name":"Price: 6 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-10-12T19:38:56Z","updated_at":"2024-10-15T19:49:18Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"> We should fix the type checks in another pull and make these optional probably?\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquity-os/permit-generation/pull/69#discussion_r1797709276_\r\n\r\nDo it with TypeBox","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/88/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/88/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/45","repository_url":"https://api.github.com/repos/ubiquity-os/permit-generation","labels_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/45/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/45/comments","events_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/45/events","html_url":"https://github.com/ubiquity-os/permit-generation/issues/45","id":2486092235,"node_id":"I_kwDOLTwaCM6ULsHL","number":45,"title":"Fix permit generation","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2024-08-26T06:59:43Z","updated_at":"2024-08-26T08:00:46Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"From [v1.4.x](https://github.com/ubiquibot/permit-generation/tree/v1.4.0), using the package will yield an error:\r\n```\r\nError: Failed to get token decimals for token: \"0x........\"\r\n```\r\nThere was recently some updates on the RPC package as well, but I don't think this is related. This is quite important to fix because it seems this package is unusable from `v1.4`.\r\n\r\nExample run: https://github.com/ubiquibot/conversation-rewards/actions/runs/10554543532/job/29236569211#step:4:125\r\n\r\n@Keyrxng rfc","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/45/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/45/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/40","repository_url":"https://api.github.com/repos/ubiquity-os/permit-generation","labels_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/40/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/40/comments","events_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/40/events","html_url":"https://github.com/ubiquity-os/permit-generation/issues/40","id":2402535757,"node_id":"I_kwDOLTwaCM6PM8lN","number":40,"title":"CI: Permit auto claim","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":6780119815,"node_id":"LA_kwDOLTwaCM8AAAABlCBrBw","url":"https://api.github.com/repos/ubiquity-os/permit-generation/labels/Time:%20%3C4%20Hours","name":"Time: <4 Hours","color":"ededed","default":false,"description":null},{"id":6780119957,"node_id":"LA_kwDOLTwaCM8AAAABlCBrlQ","url":"https://api.github.com/repos/ubiquity-os/permit-generation/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":7190985735,"node_id":"LA_kwDOLTwaCM8AAAABrJ28Bw","url":"https://api.github.com/repos/ubiquity-os/permit-generation/labels/Price:%20100%20USD","name":"Price: 100 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-07-11T08:04:19Z","updated_at":"2024-07-11T08:07:01Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"[This](https://github.com/ubiquibot/conversation-rewards/pull/43) PR introduces permit fee which is generated along with our traditional permit rewards. Permit fee is not shown in github comments (you may find it only in a DB) so treasury wallet (permit fee spender) must somehow claim it.\r\n\r\nPossible solution could be to create a separate repository which treasury account owner (or contributors) could fork, then set their EVM private key in github secrets and run CRON workflow for redeeming permits automatically (permit data can be fetched from supabase DB with public anon key).\r\n\r\nClaim transaction [example](https://github.com/ubiquity/pay.ubq.fi/blob/bf5ca4170cf94938647a48ba263baf1d62124389/static/scripts/rewards/web3/erc20-permit.ts#L66-L78).\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/40/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":1,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/40/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/3","repository_url":"https://api.github.com/repos/ubiquity-os/permit-generation","labels_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/3/comments","events_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/3/events","html_url":"https://github.com/ubiquity-os/permit-generation/issues/3","id":2220890707,"node_id":"I_kwDOLTwaCM6EYBpT","number":3,"title":"Handling Sum Rewards From All Active Plugins","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6780119900,"node_id":"LA_kwDOLTwaCM8AAAABlCBrXA","url":"https://api.github.com/repos/ubiquity-os/permit-generation/labels/Time:%20%3C1%20Week","name":"Time: <1 Week","color":"ededed","default":false,"description":null},{"id":6780120119,"node_id":"LA_kwDOLTwaCM8AAAABlCBsNw","url":"https://api.github.com/repos/ubiquity-os/permit-generation/labels/Priority:%204%20(Urgent)","name":"Priority: 4 (Urgent)","color":"ededed","default":false,"description":null},{"id":7391643779,"node_id":"LA_kwDOLTwaCM8AAAABuJOIgw","url":"https://api.github.com/repos/ubiquity-os/permit-generation/labels/Price:%20800%20USD","name":"Price: 800 USD","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":14,"created_at":"2024-04-02T16:01:25Z","updated_at":"2024-09-08T19:39:00Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Similar to how GitHub actions supports capturing output from each step in CI, we should do the same. We should support rewards output (including support for negative values) as well as comment output. \n\nThen the kernel can sum the requested permits and post them all in a single comment at the end when the issue is closed as complete. \n\nRegarding comment output, if we support full HTML comment output from each plugin, we could generate the comment body by concatenating all of the comment outputs of every plugin invoked as a response to the given event. \n\nI suppose there might be another standard useful interface property for passing around metadata between each plugin that is not intended to be comment display data or financial permit data. \n\nThis is an architectural conversation for how to standardize the plugin-kernel interface properties so that they work for all of our intended modular use cases.\n\nSo I guess for inputs every plugin should support some standard properties which right now aren't clear to me. I presume we will pass along event context from the kernel. I suppose we can pass in a string as the arbitrary input value, similar to a command line interface. This will allow us to serialize complex json objects if needed, or pass in simple string parameters to plugins if that's all they need?\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/3/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/3/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/55","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/55/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/55/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/55/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/55","id":2583308555,"node_id":"I_kwDOLf0nHM6Z-ikL","number":55,"title":"Automatic Workflow Deploy","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609286,"node_id":"LA_kwDOLf0nHM8AAAABnJ6ihg","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":6922609559,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jlw","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":7253033872,"node_id":"LA_kwDOLf0nHM8AAAABsFCDkA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":8,"created_at":"2024-10-12T18:14:47Z","updated_at":"2024-10-14T02:08:36Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"If no changes were made to any of the .github/workflows/*.yml files then we should automatically run the workflows. \nThis is relevant for QA (build tests, continuous deploys etc.)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/55/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/55/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/54","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/54/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/54/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/54/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/54","id":2565833744,"node_id":"I_kwDOLf0nHM6Y74QQ","number":54,"title":"Copilot Extension","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609484,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jTA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C1%20Week","name":"Time: <1 Week","color":"ededed","default":false,"description":null},{"id":6922609603,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jww","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":7036264221,"node_id":"LA_kwDOLf0nHM8AAAABo2TfHQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%201200%20USD","name":"Price: 1200 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-10-04T08:53:20Z","updated_at":"2024-10-04T09:57:53Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We should make a new microkernel for Copilot. The idea is simple: we have a built in chatbox on GitHub Web and GitHub Mobile. Allow us to interface with the bot using the chatbox instead of comments!\r\n\r\nI think this 1. may prove to be a more natural interface 2. can help with marketing as it is a \"new feature\" on GitHub. We could easily post about this on reddit and hackernews for example. \r\n\r\n- https://docs.github.com/en/copilot/building-copilot-extensions\r\n- https://github.com/marketplace?type=apps&copilot_app=true\r\n\r\n###### Similar [^01^]\n\n[^01^]: [New Task Or Edit Pull Arbiter](https://www.github.com/ubiquity-os/plugins-wishlist/issues/53) 76%\n[^02^]: [2025 Plugins Wishlist](https://www.github.com/ubiquity-os/plugins-wishlist/issues/52) 76%","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/54/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/54/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/53","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/53/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/53/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/53/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/53","id":2564353822,"node_id":"I_kwDOLf0nHM6Y2O8e","number":53,"title":"New Task Or Edit Pull Arbiter","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-10-03T15:28:21Z","updated_at":"2024-10-03T15:36:38Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"### Overview\r\n\r\n- During pull requests, we need to have a bias of always moving forward. \r\n- We always need to make an active decision on whether to include requested changes in the current pull or if we should break them off into new tasks. \r\n- We should use an LLM to help us decide what to do. \r\n\r\n### Ideal Outcome\r\n\r\nWe seamlessly can review pulls and then the OS can intelligently create a new issue batching the requested changes and link back. Ideal if it can batch similar tasks aiming for between 1 hour and 1 day within the same GitHub issue (I think this is possible with my experience working with Claude 3.5 Sonnet.)\r\n\r\n### Implementation\r\n\r\nThe way that this can work is if we leave the review state as \"commented\" and leave comments that seem like we want changes to be done. These will need to be understood by the OS. \r\n\r\nIf we really think the changes are critical to be done in the current pull, then we must be sure to \"request changes.\" \r\n\r\n### Remarks\r\n\r\nI am concerned that it might be too quick to fire off new issues, so ideally we have it understand that there is a possibly already created \"post pull request review\" task, and to continue batching everything from the review in that task (we could standardize the naming scheme of the generated issue.) \r\n\r\nWe may possibly need to check for pull request closed and merged to process the full conversation and fire off new tasks. This will allow us room to determine the necessity of such suggestions. \r\n\r\n###### Similar [^01^]\n\n[^01^]: [2025 Plugins Wishlist](https://www.github.com/ubiquity-os/plugins-wishlist/issues/52) 81%","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/53/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/53/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/52","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/52/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/52/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/52/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/52","id":2559820984,"node_id":"I_kwDOLf0nHM6Yk8S4","number":52,"title":"2025 Plugins Wishlist","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-10-01T17:33:40Z","updated_at":"2024-10-01T19:05:48Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"### From @ubiquity/ubiquibot\r\n\r\n- https://github.com/ubiquity/ubiquibot/issues/394 - UX Enhancement - Command Start Stop\r\n- https://github.com/ubiquity/ubiquibot/issues/784 - Feature - Command Start Stop\r\n- https://github.com/ubiquity/ubiquibot/issues/893 - Feature UX\r\n- https://github.com/ubiquity/ubiquibot/issues/774 - Research - Enhancement UX (Might Be N/A)\r\n-\r\n- https://github.com/ubiquity/ubiquibot/issues/754 - Enhancement - Conversation Rewards\r\n- https://github.com/ubiquity/ubiquibot/issues/780 - Enhancement - Conversation Rewards\r\n- https://github.com/ubiquity/ubiquibot/issues/772 - Enhancement - Conversation Rewards\r\n- https://github.com/ubiquity/ubiquibot/issues/776 - Enhancement Prioritization - Conversation Rewards\r\n-\r\n- https://github.com/ubiquity/ubiquibot/issues/324 - Feature - Disqualifer \r\n- https://github.com/ubiquity/ubiquibot/issues/322 - Enhancement - Disqualifier\r\n- https://github.com/ubiquity/ubiquibot/issues/606 - Research - Disqualify slow pull based on accrued rewards (precursor to XP)\r\n-\r\n- https://github.com/ubiquity/ubiquibot/issues/291 - Feature - Command Ask \r\n- https://github.com/ubiquity/ubiquibot/issues/755 - Feature - Command Query \r\n- https://github.com/ubiquity/ubiquibot/issues/721 - Feature - Command Query for Orgs\r\n-\r\n- https://github.com/ubiquity/ubiquibot/issues/746 - Feature - Automated Pull Request Reviews ([There's a better, newer spec now](https://github.com/ubiquity-os/plugins-wishlist/issues/45))\r\n- https://github.com/ubiquity/ubiquibot/issues/690 - Research - Automated Pull Request Reviews\r\n-\r\n- https://github.com/ubiquity/ubiquibot/issues/717 - Enhancement - Rewards\r\n- https://github.com/ubiquity/ubiquibot/issues/701 - Feature - Priced Pulls Without Linked Issues\r\n-\r\n- https://github.com/ubiquity/ubiquibot/issues/782 - Monetization Strategy\r\n- https://github.com/ubiquity/ubiquibot/issues/904 - Feature - Permit Generation (Monetization)\r\n-\r\n- https://github.com/ubiquity/ubiquibot/issues/771 - Feature - Dynamic Priority\r\n- https://github.com/ubiquity/ubiquibot/issues/846 - Enhancement - Prioritization ([Updated](https://github.com/ubiquity-os-marketplace/disqualifier/issues/26) \r\n-\r\n- https://github.com/ubiquity/ubiquibot/issues/439 - Debating\r\n- https://github.com/ubiquity/ubiquibot/issues/647 - Research - UbiquityOS Kernel Config Merging\r\n- https://github.com/ubiquity/ubiquibot/issues/758 - Feature - Penalty using git blame\r\n- https://github.com/ubiquity/ubiquibot/issues/751 - Company Strategy\r\n- https://github.com/ubiquity/ubiquibot/issues/836 - Security - Authorized Config Editing\r\n- https://github.com/ubiquity/ubiquibot/issues/787 - Research - Monetization database, not sure but seems useful for reference\r\n- https://github.com/ubiquity/ubiquibot/issues/777 - Enhancement - Follow Ups\r\n- https://github.com/ubiquity/ubiquibot/issues/883 - Feature - POAP NFTs\r\n\r\n### Inspirations\r\n\r\nThese were not issues on these features but they reminded me of them.\r\n\r\n- Promotional footers on permit generation comment https://github.com/ubiquibot/production/issues/59#issuecomment-1714291529 \r\n- Ensure \"fund-external-closed-issue\" is false, meaning if an outsider files an issue, and it gets funded, that a collaborator needs to close it before payments are made https://github.com/ubiquity/ubiquibot/issues/742\r\n- Monetization strategy high level draft: https://github.com/ubiquity/ubiquibot/issues/898\r\n\r\n### To Move\r\n\r\n- https://github.com/ubiquity/ubiquibot/issues/886 - Sort of a very early prototype https://github.com/0x4007/sync-configs","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/52/reactions","total_count":2,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":2,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/52/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/51","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/51/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/51/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/51/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/51","id":2556596173,"node_id":"I_kwDOLf0nHM6YYo_N","number":51,"title":"Donations","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609365,"node_id":"LA_kwDOLf0nHM8AAAABnJ6i1Q","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":6922609500,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jXA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":7253033872,"node_id":"LA_kwDOLf0nHM8AAAABsFCDkA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-09-30T12:56:23Z","updated_at":"2024-09-30T14:07:15Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"- GitCoin is apparently pretty popular for donations. \r\n- The bot automatically posts a donation address on new (priced) tasks. I suppose it would be the active wallet address. \r\n- This can be especially powerful in public good open source projects, like Foundry!\r\n\r\nSource https://github.com/ubiquity/ubiquibot/issues/136","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/51/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/51/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/49","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/49/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/49/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/49/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/49","id":2547996710,"node_id":"I_kwDOLf0nHM6X31gm","number":49,"title":"Generalized \"GitHub Webhook + Contributor Role -> Rewards\" Unit Tests","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609449,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jKQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-25T13:25:57Z","updated_at":"2024-09-25T13:26:39Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"The final stop is to write comprehensive unit tests for everything. Small tests are expected in the other deliverables, but this is intended to cover any odds and ends leftover.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/49/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/49/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/48","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/48/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/48/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/48/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/48","id":2547986191,"node_id":"I_kwDOLf0nHM6X3y8P","number":48,"title":"Generalized \"GitHub Webhook + Contributor Role -> Rewards\" Contributor Class v2","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609449,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jKQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-25T13:21:54Z","updated_at":"2024-09-25T13:24:00Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Extending on https://github.com/ubiquity-os/plugins-wishlist/issues/46 we should be able to identify the user's \"class\"\r\n\r\n> In the next iteration, we should identify the user's \"class\"\r\n\r\n1. `specification author` - the original author of the task\r\n2. `assignee` - they are the one responsible for the deliverable\r\n3. `collaborator` - they are added to the org/repo as an official team member\r\n4. `contributor` - the default option","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/48/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/48/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/47","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/47/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/47/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/47/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/47","id":2547975145,"node_id":"I_kwDOLf0nHM6X3wPp","number":47,"title":"Generalized \"GitHub Webhook + Contributor Role -> Rewards\" With Config v3","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609449,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jKQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-25T13:17:23Z","updated_at":"2024-09-25T13:27:15Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"###### This is the original specification, but I realized that this might be a bit ambitious in a single shot, so we'll work on adding the ability to configure it in v2.\r\n\r\nBuilds upon #46, #48\r\n\r\nWe need to discuss the final config schema but below is an early draft to start the ideation from\r\n\r\n## Draft Schemas\r\n\r\n- I am working on designing the config schema, and I wonder if it makes more sense to have two seperate plugins, one for issues only, and one for pulls only. Here I have a single plugin handling both, but perhaps the config can get a bit verbose and messy?\r\n\r\nHeres a small example of a single (issue or pull) handler plugin config schema, which seems neat:\r\n\r\n```yml\r\npull_request: \r\n assigned: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\n```\r\n\r\nBelow is handling both\r\n\r\n\r\n```yml\r\n\r\npull_request: \r\n assigned: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n auto_merge_disabled: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n auto_merge_enabled: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n closed: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n converted_to_draft: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n demilestoned: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n dequeued: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n edited: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n enqueued: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n labeled: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n locked: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n milestoned: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n opened: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n ready_for_review: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n reopened: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n review_request_removed: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n review_requested: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n synchronize: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n unassigned: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n unlabeled: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n unlocked: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\npull_request_review: \r\n dismissed: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n edited: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n submitted: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\npull_request_review_comment: \r\n created: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n deleted: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n edited: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\npull_request_review_thread: \r\n resolved: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n unresolved: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\npush: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\ncommit_comment: \r\n created: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\nissue_comment: \r\n created: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n deleted: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n edited: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\nworkflow_run: \r\n completed: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n in_progress: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n requested: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\nworkflow_dispatch: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\ncheck_run: \r\n completed: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n created: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n requested_action: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n rerequested: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\ncheck_suite: \r\n completed: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n requested: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n rerequested:\r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\n```\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/47/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/47/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/44","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/44/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/44/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/44/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/44","id":2535493089,"node_id":"I_kwDOLf0nHM6XII3h","number":44,"title":"Autoresponder Plugin (for DevPool Directory)","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609365,"node_id":"LA_kwDOLf0nHM8AAAABnJ6i1Q","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":6922609559,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jlw","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":6922610683,"node_id":"LA_kwDOLf0nHM8AAAABnJ6n-w","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%20100%20USD","name":"Price: 100 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-19T07:13:54Z","updated_at":"2024-09-19T07:13:57Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"When any comments are posted, automatically reply with a configurable message. I think the default can be something instructional like \"You must set the default auto response in the configuration.\"\r\n\r\nThe intended use case is to guide users who mistakenly try and self assign directly on the directory:\r\n\r\n> When I just started contributing I made [this same mistake](https://github.com/ubiquity/devpool-directory/issues/1402) and it was never picked up by the team.\r\n> \r\n> It would be great if we could have an automatic response from the bot when someone comments on any issue in the `devpool-directory`. This message would be something like `This is a no-reply repo, please visit ${taskUrl} to contribute towards this task.`\r\n> \r\n> We should automate this so that we can set-and-forget which is the best way to handle this.\r\n\r\nOriginally posted by @Keyrxng https://github.com/ubiquity/devpool-directory-bounties/issues/36","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/44/reactions","total_count":2,"+1":2,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/44/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/43","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/43/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/43/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/43/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/43","id":2513931508,"node_id":"I_kwDOLf0nHM6V14z0","number":43,"title":"Pull Reversions","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-09T13:10:38Z","updated_at":"2024-09-09T13:10:38Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Strike one for auto merger. This shouldn't have been merged. Had to revert. \n\nUpon reversion, the contributor should be unassigned. The task should be reopened. Debts should be created if the permits were issued- although the debt system never panned out smoothly. \n\nIt's nice that we have to manually generate the reward as a final check actually (not a bug, a feature?) \n\n> @pbkompasz as a heads up this isn't accepted. \n\n> Strike one for the auto merger. \n\n_Originally posted by @0x4007 in https://github.com/ubiquity/pay.ubq.fi/pull/296#issuecomment-2338070584_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/43/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/43/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/40","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/40/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/40/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/40/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/40","id":2480796859,"node_id":"I_kwDOLf0nHM6T3fS7","number":40,"title":"Dockerized Dev Env","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-08-22T13:27:53Z","updated_at":"2024-08-22T23:01:20Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"This is experimental and unsure how far it would manage to get but here goes.\r\n\r\nTaking inspiration from https://github.com/nektos/act.\r\n\r\nTo improve the dev experience for working on plugins it would be _fantastic_ if we could cram everything that we need into a container which can be easily used on any OS. \r\n\r\nThe most important feature of it is the ability to run our workflows locally without the tediousness of repeatedly pushing, waiting 30 secs for start up and 10s-2m to find an error, add logs then rinse and repeat n times.\r\n\r\nIf this could be streamlined such that our env supports this out of the box, it would make life a dream to work on any kind of plugin.\r\n\r\nIf we include the kernel itself it ensures consistency across setups, less repos to manage for new contributors etc which might be more attractive?\r\n\r\n---\r\n\r\nI don't have a lot of experience with Docker so this is as far as I'll spec this task for now","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/40/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":1},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/40/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/37","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/37/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/37/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/37/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/37","id":2477041144,"node_id":"I_kwDOLf0nHM6TpKX4","number":37,"title":"\"L2 Agent\"","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609449,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jKQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":6922609500,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jXA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":6922610683,"node_id":"LA_kwDOLf0nHM8AAAABnJ6n-w","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%20100%20USD","name":"Price: 100 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-08-21T04:42:32Z","updated_at":"2024-08-22T00:38:53Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I was reading my friends [blog post](https://transitivebullsh.it/agentic-spectrum) and was inspired to think about AI systems in a more structured way. They have these AI \"level\" designations. \n\nIt would be interesting to make an L2 agent according to the definition in the blog post:\n\n> L2 agents use LLMs selectively to decide how to handle key points in the program’s control flow.\n> Today, this often boils down to deciding which tool to invoke based on a set of tools which have been carefully curated by a human programmer.\n> The most common example of L2 agents today is invoking an LLM with access to tools in a while loop.\n> The majority of the program’s control flow still resides outside of the LLM’s purview and is controlled by a human programmer.\n\nThis is a stepping stone to L3 according to the blog because L3 coordinates L2 and below. \n\n---\n\nWe can make this a command interface where we can tag the bot and ask for requests in plain language:\n\n@ubiquity-os give me the wallet address of @0x4007 \n\n---\n\nIn the above example, we should pass the entire help menu to ChatGPT and it can invoke the correct plugin based on the command description. \n\nI think this should be quite straightforward to implement, and is a useful stepping stone towards a more advanced AI powered system.\n\nWe can use ChatGPT 4o mini because this seems pretty simple to just look at the help menu. \n\n### Advanced Version\n\nAs a more advanced version of this plugin, we can listen for every comment (no bot tag required) and the bot can jump in to help if it thinks it can based on any comment. For example, if somebody asks to be assigned to a task, perhaps the bot can somehow invoke /start on behalf of that user (which inherits all of the checks, like if they are already assigned to too many other open tasks etc) \n\nThis makes the bot's presence much more pronounced, and it will truly feel like a helpful, and proactive member of the team instead of \"a tool\" that must be specifically called upon for help. \n\n### Remark\n\nI suppose if it calls other plugins with LLMs (like conversation rewards, somehow) then technically this would be considered an L3 class system. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/37/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/37/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/35","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/35/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/35/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/35/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/35","id":2465056368,"node_id":"I_kwDOLf0nHM6S7cZw","number":35,"title":"Crypto faucet","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":6922609484,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jTA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C1%20Week","name":"Time: <1 Week","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":11,"created_at":"2024-08-14T07:01:27Z","updated_at":"2024-08-16T07:06:39Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"We have plans for generating contributors' ethereum wallet private keys via webauthn passkeys in order to make reward claiming \"gasless\". So the flow for a contributor could be:\r\n1. User calls a `/register` command (handled by the faucet plugin). The bot replies with smth like \"Pls register your account at safe.ubq.fi\".\r\n2. User opens `safe.ubq.fi`, generates a new passkey, we derive user's private key and public address, user's newly generated wallet address is saved to a DB.\r\n3. When user solves an issue (i.e. the issue is closed as completed) the faucet plugin sends some funds to the user's address.\r\n\r\nThere already exists a faucet worker at https://github.com/ubiquity/faucet. We need to wrap https://github.com/ubiquity/faucet into the bot's plugin.\r\n\r\nSo as a part of this issue the faucet plugin should:\r\n1. Handle the `register` (or similar) command in order to show to a contributor the \"Pls register your account at safe.ubq.fi\" message\r\n2. Handle the issue's \"closed as completed\" event and send some funds to the contributor's wallet (if that's the 1st issue solved by the contributor and he hadn't received funds earlier)\r\n\r\nOriginal [comment](https://github.com/ubiquity/safe.ubq.fi/pull/2).","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/35/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/35/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/33","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/33/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/33/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/33/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/33","id":2441607677,"node_id":"I_kwDOLf0nHM6Rh_n9","number":33,"title":"Rewards for simplifying/cleaning code","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609409,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jAQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C4%20Hours","name":"Time: <4 Hours","color":"ededed","default":false,"description":null},{"id":6922609500,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jXA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":6922610683,"node_id":"LA_kwDOLf0nHM8AAAABnJ6n-w","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%20100%20USD","name":"Price: 100 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-08-01T06:34:53Z","updated_at":"2024-09-02T19:55:22Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I was working on [this pull](https://github.com/ubiquity/ubiquibot-telegram/pull/45/files) and thought it could be cool to have a small reward for simplifying the codebase. \r\n\r\nDiff stats: \r\n\r\n```diff\r\n+5426\r\n-6760\r\n```\r\n\r\nA simple formula could be to divide by 10 then subtract. i.e. `676 - 542.6 = $133.4`\r\n\r\nWith our strict linter rules we should be able to avoid BS refactors. \r\n\r\n### Rationale \r\n\r\nGenerally codebase maintainers should try and keep the code clean and simple. This offers a direct financial incentive for everybody to do so. Our task oriented system is not very compatible with the continuous nature of code simplification and reduction, so this plugin addresses that. \r\n\r\n### Filters\r\n\r\nWe can use filename regex to make specific types of files eligible such as `*.ts`, `*.sol`\r\n\r\n### Remark\r\n\r\nThis is intended to be stacked on regular task related pulls as well (it doesn't need to be a dedicated refactor pull.)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/33/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/33/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/31","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/31/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/31/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/31/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/31","id":2436809994,"node_id":"I_kwDOLf0nHM6RPsUK","number":31,"title":"Auto `/fix` CI failures","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609409,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jAQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C4%20Hours","name":"Time: <4 Hours","color":"ededed","default":false,"description":null},{"id":6922609500,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jXA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":6922610683,"node_id":"LA_kwDOLf0nHM8AAAABnJ6n-w","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%20100%20USD","name":"Price: 100 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":24,"created_at":"2024-07-30T03:35:19Z","updated_at":"2024-07-31T10:16:14Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"> One dream I always had was to have ChatGPT automatically commit a change (perhaps via pull) if tests break, and giving it like ten attempts to keep trying a fix until it gives up on its pull. \r\n\r\n> Then it could, in theory automatically fix small problems. This might be difficult to get right so that it doesn't get in the way but it could be a handy feature. \r\n\r\n> Perhaps it could be invoked with a slash command /fix etc\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquibot/automated-merging/pull/4#discussion_r1694415502_\r\n \r\nCan probably make use of the code in the linked pull above.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/31/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/31/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/30","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/30/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/30/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/30/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/30","id":2431862625,"node_id":"I_kwDOLf0nHM6Q80dh","number":30,"title":"Config Protection","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609365,"node_id":"LA_kwDOLf0nHM8AAAABnJ6i1Q","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":6922609500,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jXA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":7253033872,"node_id":"LA_kwDOLf0nHM8AAAABsFCDkA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2024-07-26T09:51:25Z","updated_at":"2024-07-26T12:42:19Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Not sure if this is fully possible from within the webhook event, but the idea is that only admins or billing managers should be able to modify the config because it affects money flow. \r\n\r\nOn commit, check if config was modified. If it is unauthorized, rollback the change by immediately committing the previous version as the UbiquiBot. \r\n\r\nThis should make it near impossible for fraud. \r\n\r\n---\r\n\r\nSeems like [relevant logic](https://github.com/ubiquibot/assistive-pricing/blob/d259e29b2896026a164e7c1af4f2b72ce31fe90c/src/handlers/get-base-rate-changes.ts) I saw in [a pull](https://github.com/ubiquibot/assistive-pricing/pull/18/files#). ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/30/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/30/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/29","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/29/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/29/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/29/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/29","id":2402769945,"node_id":"I_kwDOLf0nHM6PN1wZ","number":29,"title":"`/gpt` ask a context aware question","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609449,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jKQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":6922609500,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jXA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":7191503619,"node_id":"LA_kwDOLf0nHM8AAAABrKWjAw","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%20200%20USD","name":"Price: 200 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2024-07-11T09:56:17Z","updated_at":"2024-09-11T01:14:04Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"# Overview\r\n- Similar to an old proposal for `/ask`.\r\n- The goal is to ask a context-aware question.\r\n- Feed the entire conversation context into ChatGPT4o.\r\n- Include any linked pull requests or issues and their entire conversation context.\r\n- Prioritize the issue specification to set the topic, then add comments.\r\n- Simplify comments by showing the username prepending the comment.\r\n- Divide conversations in the prompt using headers and footers.\r\n\r\n# Prompt Template\r\n\r\n**=== Start Project Specification === ubiquibot/plugins-wishlist #[Issue Number] ===**\r\n```\r\n[GitHub issue specification body]\r\n```\r\n**=== End Project Specification ===**\r\n\r\n**=== Start Issue Conversation === ubiquibot/plugins-wishlist #[Issue Number] ===**\r\n```\r\n[Comment ID] [Username]: [Comment]\r\n[Comment ID] [Username]: [Comment]\r\n...\r\n```\r\n**=== End Issue Conversation ===**\r\n\r\n**=== Start Linked Pull Request Conversation === ubiquibot/plugins-wishlist #[Pull Request Number] ===**\r\n```\r\n[Comment ID] [Username]: [Comment]\r\n[Comment ID] [Username]: [Comment]\r\n...\r\n```\r\n**=== End Linked Pull Request Conversation ===**\r\n\r\n**=== Start Linked Pull Request Code Diff === ubiquibot/plugins-wishlist #[Pull Request Number] ===**\r\n```diff\r\n- [Old Code]\r\n+ [New Code]\r\n```\r\n**=== End Linked Pull Request Code Diff ===**\r\n\r\n# Example\r\n\r\n**=== Start Project Specification === ubiquibot/plugins-wishlist #29 ===**\r\n```\r\nAdd a new feature to support XYZ plugins.\r\n```\r\n**=== End Project Specification ===**\r\n\r\n**=== Start Issue Conversation === ubiquibot/plugins-wishlist #29 ===**\r\n```\r\n2222517181 0x4007: We should consider adding support for plugins to enhance functionality.\r\n2222517182 rndquu: I agree, this would be beneficial.\r\n2222517184 gentlementlegen: Do we have any specific plugins in mind?\r\n```\r\n**=== End Issue Conversation ===**\r\n\r\n**=== Start Linked Pull Request Conversation === ubiquibot/plugins-wishlist #30 ===**\r\n```\r\n2222517187 devuser1: Implemented basic support for plugins.\r\n2222517189 devuser2: This looks good, but needs more testing.\r\n```\r\n**=== End Linked Pull Request Conversation ===**\r\n\r\n**=== Start Linked Pull Request Code Diff === ubiquibot/plugins-wishlist #30 ===**\r\n```diff\r\n- // insert log\r\n+ console.log(\"test\");\r\n```\r\n**=== End Linked Pull Request Code Diff ===**\r\n\r\n# Notes\r\n- Include the org/repo/issue to help ChatGPT understand references to other issues/pulls.\r\n- Annotate comments with their IDs so that ChatGPT can produce outputs with links to other comments for references.\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/29/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/29/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/28","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/28/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/28/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/28/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/28","id":2397700892,"node_id":"I_kwDOLf0nHM6O6gMc","number":28,"title":"Configuration checks and annotations","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-07-09T09:48:52Z","updated_at":"2024-07-10T05:31:15Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Currently the bot is capable to annotate errors on the configuration, when it is changed. It would be nice to benefit from the same capability on the v2.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/28/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/28/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/27","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/27/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/27/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/27/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/27","id":2397200564,"node_id":"I_kwDOLf0nHM6O4mC0","number":27,"title":"Reviewer Competition","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-07-09T05:49:45Z","updated_at":"2024-07-09T05:49:45Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Leverage game theory and incentivize reviewers to post a review before the others. \n\nFor example, the first to review gets $100 reward and the others get $50 reward. \n\nWe could also consider a linear drop off depending on how long the review was available for. \n\nFor example if a pull is ready for review, we make available the full reward ($100) and then after 3.5 days it's $0 \n\n1.75 day delay would be $50 \n\nSo it's a linear drop off in the reward and this is calculated based on how long it took the reviewer to get around to it. \n\nThis could carve out dedicated reviewer roles which might be useful for speeding up merges","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/27/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":1},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/27/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/25","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/25/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/25/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/25/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/25","id":2371338962,"node_id":"I_kwDOLf0nHM6NV8LS","number":25,"title":"Telegram GitHub Issue \"Workroom\"","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609484,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jTA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C1%20Week","name":"Time: <1 Week","color":"ededed","default":false,"description":null},{"id":6922609603,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jww","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":6952524237,"node_id":"LA_kwDOLf0nHM8AAAABnmcZzQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%20600%20USD","name":"Price: 600 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":19,"created_at":"2024-06-25T00:11:26Z","updated_at":"2024-10-12T05:57:47Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I realize that some projects require collaboration, and our team has a natural tendency to direct message each other. The problem with this approach is that the collaborative research in direct messages is not auditable. The conversation that occurred would be useful for future reference to post a summary to the completed task. \n\nIt would be nice if as soon as a task is started, the bot can post a link to a freshly generated telegram chat room that acts as a collaborative \"work room\" to solve that particular task \n\nOnce the task is closed as complete, we can use ChatGPT to summarize the essential details from the telegram group chat and post it to the GitHub issue as a conversation summary for future reference \n\nInventing the telegram integration will probably take some time so I'll set this to a week.\n\n---\n\nIt would be nice to get automatically kicked from the chat when the task is completed so that our telegrams don't get cluttered with these. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/25/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":1},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/25/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/24","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/24/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/24/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/24/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/24","id":2369505964,"node_id":"I_kwDOLf0nHM6NO8qs","number":24,"title":"KYC Permits","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609500,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jXA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":6952524237,"node_id":"LA_kwDOLf0nHM8AAAABnmcZzQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%20600%20USD","name":"Price: 600 USD","color":"1f883d","default":false,"description":null},{"id":7098679006,"node_id":"LA_kwDOLf0nHM8AAAABpx0-3g","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C2%20Weeks","name":"Time: <2 Weeks","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":19,"created_at":"2024-06-24T07:52:15Z","updated_at":"2024-10-06T09:30:06Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"[Powerhouse](https://powerhouse.inc/) inquired about KYC for payments. \r\n\r\n- We can fork our permit generation module and then add a KYC check. \r\n- We should use an API for a third party KYC provider. \r\n\r\nTodo:\r\n\r\n- Research a suitable KYC provider.\r\n- Decide if we should intercept the `/start` command and check if they already KYC'd (seems like the best UX to warn them up front.) \r\n- Ensure that the permit is not generated if KYC did not pass. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/24/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/24/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/22","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/22/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/22/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/22/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/22","id":2359308363,"node_id":"I_kwDOLf0nHM6MoDBL","number":22,"title":"Generalized \"GitHub Webhook + Contributor Role -> Rewards\" Plugin","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-06-18T08:47:42Z","updated_at":"2024-09-25T13:25:57Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"- [ ] #46\r\n- [ ] #48\r\n- [ ] #47\r\n- [ ] #49\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/22/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":1,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/22/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/21","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/21/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/21/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/21/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/21","id":2347274332,"node_id":"I_kwDOLf0nHM6L6JBc","number":21,"title":"failed workflow catcher","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-06-11T20:43:01Z","updated_at":"2024-06-14T19:24:51Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"See [this](https://github.com/ubiquity/pay.ubq.fi/actions/runs/9472156534/job/26097027405?pr=246) workflow run regarding `Build` CI failing during the `yarn` step. I've came across this in testing plugin workflows where the workflow fails for reasons out of user control during a step it shouldn't such as `yarn`.\r\n\r\nIt's reasonable to expect this to happen again for plugin workflows and the kernel wouldn't know the wf has failed (afaik)\r\n\r\n
\r\n\r\nEvents to work with below, I think it's possible to track workflow steps by name that fail that are expected to never fail. If so, it would be a beneficial plugin to have that can automatically refire these runs.\r\n\r\n\r\n```yml\r\nworkflow_dispatch: [],\r\nworkflow_job: [],\r\n'workflow_job.completed': [],\r\n'workflow_job.in_progress': [],\r\n'workflow_job.queued': [],\r\n'workflow_job.waiting': [],\r\nworkflow_run: [],\r\n'workflow_run.completed': [],\r\n'workflow_run.in_progress': [],\r\n'workflow_run.requested': []\r\n```\r\n\r\n
\r\n\r\nI feel I lack the insight to properly define the spec for this one, if it is possible at all given the kernel structure.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/21/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/21/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/19","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/19/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/19/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/19/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/19","id":2332610127,"node_id":"I_kwDOLf0nHM6LCM5P","number":19,"title":"`read.ai` Reports for \"Communications Team\" Management","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-06-04T05:50:16Z","updated_at":"2024-06-10T07:47:36Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"# Integrate Read.AI Webhooks with Task Management System\r\n\r\n## Overview\r\nIntegrate Read.AI webhooks to automate action item tracking for the communications team. The goal is to ensure sales personnel are paid based on their performance, which includes:\r\n1. Taking scheduled calls (and being on time)\r\n2. Covering key points on the calls\r\n3. Handling follow-up tasks\r\n\r\nThis integration focuses on managing investor relations associates who pitch high-level information about Ubiquity DAO Series A round to prospective investors.\r\n\r\n## Background\r\nOur communications team consists of lead generation and investor relations associates. Investor relations associates take the first wave of investor candidates, pitch the high-level overview of Ubiquity, and loop in the technical team for detailed due diligence if the investors are interested. Associates follow a script regarding the investment opportunity while focusing on relationship building with the investors.\r\n\r\nRead.AI records Zoom calls and generates summaries, including post-call action items. We aim to automate task assignment and management for salespersons by creating GitHub issues for follow-up tasks based on Read.AI's analysis.\r\n\r\n## 1/3 Taking the Scheduled Calls\r\nThe basic function of their job is to make it to the scheduled calls. The lead generation team, familiar with setting up webhooks, can send information about when a call is booked and whose calendar it is on. They also monitor when bookings are rescheduled, which could be useful to capture.\r\n\r\nBy cross-referencing the call start and end times, we can easily determine if the associate attended the scheduled call.\r\n\r\n## 2/3 Covering Key Points\r\nAssociates must communicate key points to qualify the investor candidate. Important points to cover include:\r\n- Series A $10-$20m raise at $100-$200m valuation (explain the valuation strategy)\r\n- Kernel-plugin architecture and the potential for an \"Apple App Store\" of agents\r\n- MakerDAO partnership\r\n- Card issuance\r\n- Stablecoin history\r\n\r\n### Sales Team Key Points to Emphasize\r\nFrom the [Sales Team Handbook](https://docs.google.com/document/d/13HR8GgPq0zHfr74YwYotRQaC3Fzxio4CGgBpw31Jg1I/edit):\r\n- Series A fundraising specifics and timeline\r\n- Current financial status and previous seed round details\r\n- Overview of the Ubiquity Operating System and its benefits\r\n- Dynamic compensation system for improved productivity\r\n- Potential revenue streams and current stage of monetization\r\n- Commitment to open-source and efficient global team management\r\n- Unique value proposition and competitive advantages\r\n- Plans for partnerships and pilot programs\r\n- Clear closing with an invitation for further engagement\r\n\r\nRead.AI summarizes what points were covered, and we can run it through another ChatGPT prompt to identify any points that were not hit, according to the Read.AI payload.\r\n\r\n## 3/3 Handling Follow-Up Tasks\r\nRead.AI generates a bullet point list of follow-up tasks, including the Zoom username per task. We can extract these follow-up tasks and assign them to the associate on GitHub as separate issues. One issue per week with all the follow-up tasks could be created, with default priority and time levels set, so that when tasks are completed, associates can receive a reward.\r\n\r\n## Example Read.AI Payload\r\n\r\n```json\r\n{\r\n \"payload\": {\r\n \"session_id\": \"01HZJ1FY5RRM6NR0W87J5ZBHC1\",\r\n \"trigger\": \"meeting_end\",\r\n \"title\": \"Meet Meeting\",\r\n \"start_time\": \"2024-06-04T16:32:28+00:00\",\r\n \"end_time\": \"2024-06-04T17:47:25+00:00\",\r\n \"participants\": [\r\n {\r\n \"name\": \"アレクサンダー\",\r\n \"first_name\": \"アレクサンダー\",\r\n \"last_name\": null,\r\n \"email\": null\r\n },\r\n {\r\n \"name\": \"K77 Dewhales\",\r\n \"first_name\": \"K77\",\r\n \"last_name\": \"Dewhales\",\r\n \"email\": null\r\n },\r\n {\r\n \"name\": \"[redacted]\",\r\n \"first_name\": \"[redacted]\",\r\n \"last_name\": null,\r\n \"email\": \"[redacted]\"\r\n }\r\n ],\r\n \"owner\": {\r\n \"name\": \"[redacted]\",\r\n \"first_name\": \"[redacted]\",\r\n \"last_name\": null,\r\n \"email\": \"[redacted]\"\r\n },\r\n \"summary\": \"The meeting began with Alexander discussing his transition from a developer to focusing on fundraising, highlighting the challenges faced with existing investors and the strategy behind the previous seed round. K77 Dewhales inquired about the potential involvement of previous backers in the current round, and Alexander emphasized the importance of finding partners to help the company and discussed the approach of extending the round to existing investors as a courtesy. \\n\\nK77 Dewhales presented an in-depth overview of DeWales Capital, emphasizing its role as a crypto native organization operating at the intersection of an investment DAO and a VC. They detailed the collective decision-making process involving over 200 members with a combined portfolio of 350 million, the comprehensive VC structure, advisory services, liquidity provision capabilities, connections to portfolio companies and partners, and the meticulous voting and pledge phases for project approval and investment. \\n\\nAlexander provided insights into the fundraising strategy, highlighting the original window for fundraising and the need to refine pitch materials and onboard investor relations associates. He also delved into the potential partnership with Microsoft's fund for GitHub, emphasizing the importance of open source products in encouraging new developers to join the movement. Additionally, he explained the impact of the Bitcoin halving cycle on the fundraising timeline and the objective to secure partners unaffected by the price of Bitcoin.\\n\\nThe meeting also covered Ubiquity's future plans and funding strategy, including the development of an on-chain neobank with a stablecoin, aiming to build an ecosystem of useful applications and incentivize settlement in their stablecoin. Alexander elaborated on the plan to offer banking services, such as providing lines of credit based on users' income and offering prepaid Visa and Mastercards with no KYC requirements, which can be used for cashing out or making payments via mobile wallets. The discussion also touched on the challenges of working with card issuers and the prototype solution developed by Ubiquity to provide banking services.\",\r\n \"action_items\": [\r\n {\r\n \"text\": \"Alexander will develop and implement the XP system for governance within the Ubiquity platform.\"\r\n },\r\n {\r\n \"text\": \"Alexander will research and select a company for smart contract audits and security assessments.\"\r\n },\r\n {\r\n \"text\": \"Alexander will finalize the fundraising strategy and terms for the current round.\"\r\n },\r\n {\r\n \"text\": \"Alexander will refine the go-to-market strategy for attracting developers to the Ubiquity platform and contributing to DAO tasks.\"\r\n },\r\n {\r\n \"text\": \"K77 will pass the information gathered from the meeting to the members for voting.\"\r\n },\r\n {\r\n \"text\": \"Alexander will send the developer onboarding document to K77.\"\r\n },\r\n {\r\n \"text\": \"Alexander will identify and pursue additional strategic partnerships with DAOs beyond the current list.\"\r\n },\r\n {\r\n \"text\": \"アレクサンダー will send the read AI report and await feedback from [K77 Dewhales].\"\r\n },\r\n {\r\n \"text\": \"Alexander will send the read AI report to K77.\"\r\n },\r\n {\r\n \"text\": \"Alexander will keep in touch with K77 on Telegram for further discussions.\"\r\n }\r\n ],\r\n \"key_questions\": [\r\n {\r\n \"text\": \"Which companies are being considered for smart contract audits and security assessments?\"\r\n },\r\n {\r\n \"text\": \"What is the developer onboarding process like at Ubiquity?\"\r\n },\r\n {\r\n \"text\": \"What is the go-to-market strategy for attracting developers to use the Ubiquity platform and contribute to DAO tasks?\"\r\n },\r\n {\r\n \"text\": \"Is the payment processing system fully reliant on human reviewers?\"\r\n },\r\n {\r\n \"text\": \"What is the jurisdiction of the company and the token issuer?\"\r\n }\r\n ],\r\n \"topics\": [\r\n {\r\n \"text\": \"Development of DAO Operating System\"\r\n },\r\n {\r\n \"text\": \"Fundraising Strategy and Objectives\"\r\n },\r\n {\r\n \"text\": \"Smart Contract Auditing and Security\"\r\n },\r\n {\r\n \"text\": \"Payment processing and bot review system\"\r\n },\r\n {\r\n \"text\": \"Company jurisdiction and token issuer\"\r\n }\r\n ],\r\n \"report_url\": \"https://app.read.ai/analytics/meetings/01HZJ1FY5RRM6NR0W87J5ZBHC1\",\r\n \"chapter_summaries\": [\r\n {\r\n \"title\": \"Fundraising Strategy and Investor Relations\",\r\n \"description\": \"Alexander shares his shift from a developer role to focusing on fundraising, the challenges faced with existing investors, and the strategy behind the previous seed round. K77 Dewhales asks about the potential involvement of previous backers in the current round and expresses understanding of the situation.\",\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Introduction to DeWales Capital\",\r\n \"description\": \"K77 Dewhales introduces DeWales Capital, highlighting its unique position as a crypto native organization combining an investment DAO and a VC. They outline the collaborative decision-making process, the comprehensive VC structure, advisory services, liquidity provision capabilities, connections to portfolio companies and partners, and the detailed voting and pledge phases for project approval and investment.\",\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Discussion on Fundraising and Potential Partnerships\",\r\n \"description\": \"Alexander outlines the fundraising plans, mentioning the original window for fundraising and the need to refine pitch materials and onboard investor relations associates. He also discusses the potential partnership with Microsoft's fund for GitHub and the importance of open source products in incentivizing new developers to join the open source movement.\",\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Development of DAO Operating System\",\r\n \"description\": null,\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Fundraising Strategy and Objectives\",\r\n \"description\": null,\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Project Overview and Partnerships\",\r\n \"description\": \"K77 Dewhales requests a quick intro about the project from Alexander, who then shares the backstory, highlighting the pilot phase and partnerships with Powerhouse and Yearn Finance. Alexander explains the focus on engineering and decentralized values, as well as the intention to work with a select few DAOs before going public with the project.\",\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Alexander's Experience with Self-Employment and Payroll Solution\",\r\n \"description\": \"Alexander discusses his transition from self-employment to founding a digital agency and later developing a payroll solution for his team. He details the use of time tracking software to create a productive work environment without a traditional clock-in, clock-out system, allowing team members to work on their own time while being compensated based on their productive hours.\",\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Operational Efficiency and DAO Solutions\",\r\n \"description\": \"Alexander shares his experiences with operational efficiency and the crypto world, emphasizing the importance of managing a global workforce in DAOs. He introduces the concept of dynamic compensation and discusses the AI manager for DAOs, which monitors work contributions and offers financial incentives across various platforms.\",\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Ubiquity's Ecosystem Expansion\",\r\n \"description\": \"Alexander outlines the revenue share model for projects using Ubiquity's plugin and the development of an on-chain neobank with a stablecoin. He emphasizes the goal of building an ecosystem of useful applications and incentivizing settlement in their stablecoin. Additionally, he discusses the prototype of prepaid Visa and Mastercards with no KYC requirements, which can be used for cashing out or making payments via mobile wallets.\",\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Governance and Auditing Discussion\",\r\n \"description\": \"Alexander presents the XP system for governance, highlighting the significance of contributors' influence based on their contributions. He also outlines the auditing process for smart contracts and the company's financial stability, expressing openness to strategic partnerships.\",\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Smart Contract Auditing and Security\",\r\n \"description\": null,\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Future Vision for Contributor Ecosystem and Matchmaking Market\",\r\n \"description\": \"Alexander presents the future vision for Ubiquity, envisioning a contributor ecosystem where developers and DAOs can efficiently find and work on tasks. He highlights the use of AI for matchmaking and the potential exposure through partnerships with large organizations, emphasizing the goal of creating a highly efficient marketplace for tasks.\",\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Payment Process and Workflow\",\r\n \"description\": \"アレクサンダー explained the system's process, where bot reviews and human reviewers play a crucial role in approving projects and generating payment permits. He also demonstrated how the system handles simultaneous submissions and assigns tasks to contributors, along with the allocation of rewards and bounties based on contributions and code reviews. K77 Dewhales expressed interest and noted the need to wrap up the discussion due to time constraints.\",\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Payment processing and bot review system\",\r\n \"description\": null,\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Presentation on Ubiquity's Future Plans and Funding Strategy\",\r\n \"description\": \"Alexander, representing Ubiquity, presents the company's future plans, focusing on deep vertical integration, user experience, and revenue strategies. He highlights the company's R&D efforts, treasury status, and the integration of DeFi and AI. Additionally, he addresses the jurisdiction of the company and token issuer, emphasizing compliance and transparency.\",\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Company jurisdiction and token issuer\",\r\n \"description\": null,\r\n \"topics\": []\r\n }\r\n ]\r\n }\r\n}\r\n```\r\n\r\n## Implementation Details\r\n\r\n- We need a webhook endpoint to receive these events from read.ai. These are transmitted as soon as the Zoom call ends. \r\n\r\n## Order of Implementation\r\n\r\n1. I think for the first version, we can focus on \"covering key points\" \r\n - This will essentially automate training, which makes our recruiting efforts a lot easier.\r\n2. Next would be \"follow up tasks\"\r\n3. Last would be \"taking the scheduled calls\" \r\n - They should be terminated if they miss calls, which can be audited through other means.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/19/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/19/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/12","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/12/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/12/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/12/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/12","id":2294447023,"node_id":"I_kwDOLf0nHM6Iwnuv","number":12,"title":"Comment metadata command","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":10,"created_at":"2024-05-14T05:35:24Z","updated_at":"2024-09-24T10:22:04Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"The bot comment metadata system is very useful for error logs, but sometimes the error logs dont show enough information and this should be fixed.\r\n\r\n[See source code](https://github.com/ubiquity/ubiquibot/blob/8aaf055c091cc3e7f2b42c9f1cf88f45b1d86d17/src/handlers/shared/structured-metadata.ts)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/12/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/12/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/8","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/8/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/8/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/8/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/8","id":2292579147,"node_id":"I_kwDOLf0nHM6IpftL","number":8,"title":"push/check modified base rate on base rate change","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[{"id":6922609409,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jAQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C4%20Hours","name":"Time: <4 Hours","color":"ededed","default":false,"description":null},{"id":6922609603,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jww","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":6952525870,"node_id":"LA_kwDOLf0nHM8AAAABnmcgLg","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%20300%20USD","name":"Price: 300 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":14,"created_at":"2024-05-13T11:42:17Z","updated_at":"2024-09-10T05:04:14Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"A plugin that will update all the price labels if a base rate change is detected. Should most likely be carried out within https://github.com/ubiquibot/assistive-pricing if not already there.\r\n\r\n[See code reference](https://github.com/ubiquity/ubiquibot/tree/4f15f0f294728e701cb9a2e1aac89e2f73623f31/src/handlers/push)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/8/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/8/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/5","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/5/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/5/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/5/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/5","id":2218509351,"node_id":"I_kwDOLf0nHM6EO8Qn","number":5,"title":"Porting Capabilities","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-04-01T15:33:32Z","updated_at":"2024-07-15T03:10:43Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We have many capabilities that should be ported from the old bot code. \r\n\r\nSome useful ones: \r\n\r\n- [x] #7\r\n- [x] #6\r\n- [ ] #8\r\n- [x] #9\r\n- [x] #10\r\n- [x] #11\r\n- [ ] #12\r\n\r\nWe can break this apart into separate tasks as we get closer to implementation. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/5/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/5/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/4","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/4/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/4/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/4/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/4","id":2217881913,"node_id":"I_kwDOLf0nHM6EMjE5","number":4,"title":"Developer Referrals","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":24,"created_at":"2024-04-01T09:11:57Z","updated_at":"2024-04-04T06:23:36Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"In order to increase the size of our developer community, we should pay who refer developers who contribute. Let's call them DevRels.\r\n\r\nThe vision is to generate a new permit for the DevRel upon task completion. \r\n- It is unclear to me exactly how to do default pricing (flat fee, percentage) \r\n- It can be easy to game and squeeze out extra rewards with a self referral unless the DevRel's cut is zero sum from the developer. If it is zero sum, then a percentage would be safest i.e. 5% or 10%. What is the highest percentage we can go before developers get annoyed? Perhaps we can also set a max cap, like 50 USD per reward in addition to the percentage. For example, if a developer receives a 1000 USD reward, perhaps the DevRel cap can be max 50 USD. \r\n- I fear the rewards may not be very competitive. We can consider high (non zero sum) rewards in the short term to kick things off, then switch it to zero sum mode later.\r\n- We should also consider a reward for every developer referred (this may be implemented as a separate tool though, because it seems incompatible with the percentage or zero sum system)\r\n\r\n### Configuration Requirements\r\n\r\n- For version one, lets go only with percentages support. Make sure that the percentage is configurable. \r\n - This will keep things simple in case the DevRel earns a tiny reward for leaving a small comment etc.\r\n- Make sure that we can toggle zero sum mode (subtract from developer reward to pay the DevRel.) \r\n\r\n### Implementation Overview\r\n\r\nWe can do this in a couple of parts:\r\n1. the new referral logs in with GitHub at `work.ubq.fi?ref=[github user id of DevRel]` \r\n2. we associate in a KV store the key being the DevRel GitHub ID and the value being an array of DevRel values. \r\n```typescript\r\ntype GitHubId = number;\r\ntype KV = { [key: GitHubId]: GitHubId[] };\r\n```\r\n\r\nThis feels a little parasitic if a developer accidentally clicks a DevRel's link at some point in the future, especially if they start losing some of their rewards. I think we need some type of system to \"undo\" a referral. This doesn't feel like the right solution but I'm unsure what is. \r\n\r\n### Sybils\r\nWe can protect against sybils based on the age of a GitHub profile as well as a minimum XP requirement. For example, if the developer XP is low then the rewards are zero sum?","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/4/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/4/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/3","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/3/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/3/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/3","id":2208105478,"node_id":"I_kwDOLf0nHM6DnQQG","number":3,"title":"Personal Agent","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609365,"node_id":"LA_kwDOLf0nHM8AAAABnJ6i1Q","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":6922609603,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jww","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":6970035825,"node_id":"LA_kwDOLf0nHM8AAAABn3JOcQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%20150%20USD","name":"Price: 150 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2024-03-26T12:24:26Z","updated_at":"2024-10-03T18:19:32Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"# Task\r\n\r\n- This will be registered under `issues_comment.created`\r\n- This will look for username tags at the beginning of any comment, and relay everything to their self hosted plugin. \r\n- The rest of the magic happens within their own self hosted plugin so this should be a super simple plugin to build.\r\n\r\n### Config\r\n\r\nThe host repository name. For example:\r\n\r\n```yml\r\nplugins:\r\n - uses:\r\n - plugin: ubiquity-os-marketplace/ubiquity-os-agent\r\n with:\r\n target: ubiquity-os-agent\r\n```\r\n\r\nThen comments starting with `@0x4007` will relay the full `issues_comment.created` payload to `0x4007/ubiquity-os-agent`\r\n\r\n# Context\r\n\r\nThis one I'm very excited about. The vision here is that we can make custom user \"agents\" (i.e. plugins with LLMs) that are hosted by the user's GitHub (so they can modify it) and will automate actions for the user (with their PAT to authorize as them) with the full context of a particular repository/organization. \r\n\r\n- We make a repository that power users are intended to fork, for example `@ubiquibot/personal-agent` -> `@pavlovcik/personal-agent`\r\n- A repository/organization configures personal agents command to be `/@` `/@pavlovcik` maybe something like that. This should also support arguments, for example a sentence that can be parsed by an LLM `/@pavlovcik review my pull #123`\r\n - This technically would allow other users to invoke other user's agents. We can easily see if the invoker is an \"authorized\" user by checking the event context, and hard coding authorized users (self) in the boilerplate plugin code. \r\n - I wonder if it would be more useful if we just look for comments that start with a username tag instead, it might be more natural to set up automations for common questions/requests i.e. `@pavlovcik can i work on this issue?` then my agent, with my PAT, and my custom prompt saying what to do in this situation, would just automatically assign them and explain the `/start` command.\r\n- The kernel will invoke a request (and pass all parameters) to that user's plugin/agent (hosted at `@username/personal-agent` actions)\r\n- The user can grant access to their PAT from their agent, allowing the agent to act on behalf of the owner inheriting their permissions. \r\n\r\nThere are some ways we can make the template code which will be forked:\r\n1. simple starting point would be just template/boilerplate that doesn't do anything\r\n2. code makes a call to an LLM (we could even run a small model locally on the GitHub Action runner potentially in order to make dealing with credentials/API keys more hands off, at the tradeoff of it being dumber than ChatGPT etc but decentralization/free is cool)\r\n 1. this LLM has a big prompt in the template that explains the context (you're running in a github action runner and a user invoked you from this repo...) and its capabilities (we can provide some local functions from our SDK that it can invoke to perform specific tasks by using an authenticated octokit instance using the person's PAT. It also receives all of the context of the event invocation (which user called the function, what repository and organization is it coming in from? possibly even scraping all the linked issues and pull requests for more context)\r\n 2. If we can reliably get the LLM to write working code with Octokit (or just raw CURLs with the PAT) then we can have a context aware and english language input to any function a user can perform on GitHub (limited to the PAT permissions) which is quite interesting. \r\n 3. The user can \"fine-tune\" their LLM by adding extra details and preferences to their prompt in their forked code. I imagine that I would continue to add new sections as I see repetitive questions/queries.\r\n\r\n---\r\n\r\nAssuming that the org config enables support for personal agents, technically we can extend personal agent capabilities beyond GitHub. Generic telegram example: `@pavlovcik send me the credentials on Telegram @username` with the right code in my personal agent, the GitHub Action can send information to their Telegram. All invoked from the GitHub Action runner!\r\n\r\nThis could make plugin development a lot more exciting and rapid. If the team all works on their own agents, and tests them in production, we could extract useful bits from eachothers' and release \"official\" plugins which may normally have slower r&d cycles. \r\n\r\nIn the further future, our kernel can support webhooks coming in from other services (like Telegram) and invoke user agents which can be a very powerful architecture for platform composability. For example, a bot call (can be \"inline\" in a dm to someone as well) that will pass along the conversation context to our kernel, then to a user's personal agent (github action) back to kernel and then back to Telegram\r\n\r\n### Notes for @pavlovcik/personal-agent\r\n\r\n- I want to make use of the XP system (as an admin) to soft incentivize/disincentivize behaviors. \r\n - Prompt follow ups: there are situations where I tag team members for input and they take days to reply. I think if they take longer than 24 hours to reply, I would want to dock XP, and include an automated follow up (perhaps even on Telegram dm!) High performing team members generally reply promptly. XP can be used as a heartbeat for how actively engaged the contributor is, and how well they are performing, which is important for performance evaluations regarding base pay. \r\n - On the other end of the spectrum: unnecessary tags[^1^]. If I make it clear to team members that I am around to help but more for emergencies, I would appreciate not being pinged on things unless its essential. Would be interesting to make a personal agent that will automatically reply (like an away message) explaining this, while also scrubbing out the tag from their message. Assuming it is during my awake/working hours, I would still receive a push notification on my device from the original tag. \r\n\r\n## Planned Capabilities\r\n\r\n### Comment rewrites:\r\n\r\nFrom my phone sometimes writing comments can be arduous with the custom vocabulary we use and the autocorrect. A simple agent that will save me from a lot of frustration is to edit my comments posted, and correct any typos when I post from my phone. \r\n\r\n### Review and follow up:\r\n\r\nSometimes a pull request will be 99% of the way there. It will be something like \"just make sure CI passes\" or \"fix merge conflicts\" \r\n\r\nIdeally the personal agent should monitor pulls that I approved and are still opened. If I said something like this, and if those conditions are met, it should merge the pull. \r\n\r\n- Example: https://github.com/ubiquity-os/plugin-template/pull/23#issuecomment-2391416311\r\n\r\n[^1^]: Although it is not clear to me how we can capture the event from this. I suppose I would need to manually add in the org/repo config for `issue_comment.created`.\r\n\r\n###### Similar [^01^]\r\n\r\n[^01^]: [2025 Plugins Wishlist](https://www.github.com/ubiquity-os/plugins-wishlist/issues/52) 84%\r\n[^02^]: [New Task Or Edit Pull Arbiter](https://www.github.com/ubiquity-os/plugins-wishlist/issues/53) 82%","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/3/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/3/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/2","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/2/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/2/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/2/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/2","id":2204223494,"node_id":"I_kwDOLf0nHM6DYcgG","number":2,"title":"Rewrite Specification","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609484,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jTA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C1%20Week","name":"Time: <1 Week","color":"ededed","default":false,"description":null},{"id":6922609500,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jXA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":7191503619,"node_id":"LA_kwDOLf0nHM8AAAABrKWjAw","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%20200%20USD","name":"Price: 200 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":11,"created_at":"2024-03-24T07:27:00Z","updated_at":"2024-09-08T03:29:20Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Sometimes issues are submitted but not finalized until the team contributes more ideas and research. This leads to the issue specification being out of sync with the latest information, leading to the contributors having to be sure to read the full conversation before starting the task and delivering their work. \r\n\r\n- A simple tech solution to this would be some type of `/rewrite` specification command (I'm unsure whats the best default slash command for this.) \r\n- This will feed the entire GitHub conversation into an LLM to rewrite the issue specification. \r\n- This command can directly edit the issue specification with the results (we have revision history built in so no information is lost.)\r\n- We can also place more weight on the issue author's comments as they likely have the clearest vision. \r\n- It would be nice to think of a way for this to be automatically called instead of relying on manual invocation. \r\n- Perhaps when a pricing related label is adjusted (like `Time: ` in particular) as this is what I recall having to change based on new information being added to an issue.\r\n\r\n### Recommended Default Invocations\r\n\r\nRemember invocations should be fully customizable based on a repo/org's config. However we should support defaults/recommended invocations based on our dogfooding to give the best default experience to new partners. \r\n\r\n- Listen for `/rewrite` command\r\n- Listen for `Time: ` label change\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/2/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/2/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/1","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/1/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/1/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/1","id":2184179291,"node_id":"I_kwDOLf0nHM6CL-5b","number":1,"title":"Daily Streak Multiplier","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-03-13T14:38:28Z","updated_at":"2024-03-14T04:17:35Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"> [!WARNING]\r\n> This is an incomplete draft\r\n\r\n### Overview\r\n\r\nA way for the system to pay extra rewards for contributors working on a regular basis. Consistency is key! It's a bit inspired by how some games provide rewards for logging in once a day.\r\n\r\n### Objective\r\n\r\n- It may yield better performance if we incentivize contributors to work \"full time.\"\r\n- Take into consideration that sometimes days off are needed, and not necessarily exactly on weekends. \r\n\r\n### Examples\r\n\r\nI asked ChatGPT to design a system that takes those factors into account and produce a math formula, then simulate. This still needs refinement, and I don't think this proposal is ready for primetime because the math should be figured out first.\r\n\r\n> can you please plot these scenarios?\r\n> 1. normal 40 hour work week. \r\n> 2. part timer doing 20 hours in a week.\r\n> 3. hardcore contributor doing two weeks straight then taking a double weekend break\r\n\r\n> ![image](https://github.com/ubiquibot/plugins-wishlist/assets/4975670/b7c005d0-c58d-4bbf-8c44-d9e9aed69f41)\r\n\r\nThe exploratory discussion continued on to attempt to figure out a means to see how many hours a contributor is working.\r\n\r\n### Necessary components\r\n\r\n- aggregator: aggregating all contributions across all repositories within a specific organization of a specific contributor, and collecting their timestamps\r\n- clustering: approximate the contributor's workday based on clusters of work. \r\n\r\nhttps://chat.openai.com/c/d765d6f7-56d2-460c-a9a7-a0c75334f97b","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/1/reactions","total_count":2,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":2,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/1/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/26","repository_url":"https://api.github.com/repos/ubiquity-os/plugin-template","labels_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/26/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/26/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/26/events","html_url":"https://github.com/ubiquity-os/plugin-template/issues/26","id":2563805590,"node_id":"I_kwDOMBcers6Y0JGW","number":26,"title":"Production Builds & Distribution","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7083000010,"node_id":"LA_kwDOMBcers8AAAABpi4Ayg","url":"https://api.github.com/repos/ubiquity-os/plugin-template/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-10-03T11:25:20Z","updated_at":"2024-10-03T11:27:13Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"- Semi related to https://github.com/ubiquity-os/plugin-template/issues/24 \r\n\r\nI was working on [this pull](https://github.com/m1guelpf/plz-cli/pull/40/files) and appreciate how they automated releases and distributions (based on label) \r\n\r\nWe should consider \"distributing\" as well with a special build script using `ncc` that will compile all the code and used dependencies into a single javascript string. This will make our plugins read for production as these should run almost immediately. \r\n\r\nThis essentially adds the `plz-cli` distribution logic on top of #24 when its implemented. \r\n###### Similar [^01^]\n\n[^01^]: [Optimize Update Manifest Configuration Speed](https://www.github.com/ubiquity-os/plugin-template/issues/25) 89%","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/26/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/26/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/25","repository_url":"https://api.github.com/repos/ubiquity-os/plugin-template","labels_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/25/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/25/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/25/events","html_url":"https://github.com/ubiquity-os/plugin-template/issues/25","id":2561877460,"node_id":"I_kwDOMBcers6YsyXU","number":25,"title":"Optimize Update Manifest Configuration Speed","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7082999692,"node_id":"LA_kwDOMBcers8AAAABpi3_jA","url":"https://api.github.com/repos/ubiquity-os/plugin-template/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":7082999910,"node_id":"LA_kwDOMBcers8AAAABpi4AZg","url":"https://api.github.com/repos/ubiquity-os/plugin-template/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":7097411771,"node_id":"LA_kwDOMBcers8AAAABpwnouw","url":"https://api.github.com/repos/ubiquity-os/plugin-template/labels/Price:%2025%20USD","name":"Price: 25 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-10-02T14:43:33Z","updated_at":"2024-10-02T14:44:26Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"> Probably best to compile the js with `ncc` \r\n> \r\n> This will allow us to skip on installing node and all the dependencies and allow for a near instant cold start time \r\n> \r\n> In exchange for possibly less maintainability because we won't have the original source code here \r\n> \r\n> However we can store the source code (typescript) in a separate file and have a simple comment inside explaining how to compile it to be placed within this file.\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquity-os/plugin-template/pull/23#discussion_r1783925398_\r\n ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/25/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/25/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/13","repository_url":"https://api.github.com/repos/ubiquity-os/plugin-template","labels_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/13/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/13/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/13/events","html_url":"https://github.com/ubiquity-os/plugin-template/issues/13","id":2410069247,"node_id":"I_kwDOMBcers6Pprz_","number":13,"title":"Make Knip and Jest workflows reusable","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-07-16T02:47:23Z","updated_at":"2024-09-25T12:43:53Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":" @0x4007 I would propose to convert the Knip workflow into a reusable workflow (https://docs.github.com/en/actions/using-workflows/reusing-workflows) . There is a correct Knip setup now but it needs to be propagated into multiple repositories. The differences between Knip workflow configurations between repositories are minor: bun vs yarn and different yarn versions. I can work on this as soon as I finish the plugin screencasts.\r\n\r\n_Originally posted by @gitcoindev in https://github.com/ubiquibot/permit-generation/issues/35#issuecomment-2216602242_\r\n \r\nWhat we are aiming to solve is the changes needed within all the repositories that inherited from the template when we are fixing a workflow. Having it as a template could solve the synching thus not requiring to update all the workflows across the repositories. This change also applies to https://github.com/ubiquity/ts-template/","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/13/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/13/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/2","repository_url":"https://api.github.com/repos/ubiquity-os/plugin-template","labels_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/2/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/2/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/2/events","html_url":"https://github.com/ubiquity-os/plugin-template/issues/2","id":2333453394,"node_id":"I_kwDOMBcers6LFaxS","number":2,"title":"Standard Storage Solution","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":14,"created_at":"2024-06-04T12:49:50Z","updated_at":"2024-10-05T11:01:49Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"# Standardizing Plug-in Data Storage in Organization-Wide Configuration Repository\r\n\r\n## Objective\r\nEstablish a standardized method for storing plug-in data in the `.ubiquibot-config` repository, ensuring data integrity and security. An additional benefit is that this allows partners full control over their data and decentralizes the data storage.\r\n\r\n## Specification\r\n\r\n### Storage Structure\r\n- Each plug-in will have its own JSON database file.\r\n- The filename of each JSON database will be the plug-in ID.\r\n- This ensures that plug-ins cannot tamper with each other's data.\r\n\r\n### JSON Database Format\r\n- Each JSON file will store data specific to its corresponding plug-in.\r\n- The structure within the JSON file is determined by the plug-in's requirements.\r\n\r\n### Example\r\nFor a plug-in with ID `@ubiquibot/command-start-stop`, the JSON file will be named `ubiquibot-command-start-stop.json`.\r\n\r\n```json\r\n{\r\n \"dataKey1\": \"value1\",\r\n \"dataKey2\": \"value2\",\r\n ...\r\n}\r\n```\r\n\r\n### Access Control\r\n- The kernel will manage read and write permissions.\r\n- Write access will be restricted to ensure plug-ins can only modify their own JSON file.\r\n- Read access can be granted based on plug-in ID, allowing access to other plug-ins' data as needed.\r\n\r\n### Implementation\r\n1. **Repository Setup**\r\n - Use the `.ubiquibot-config` repository as the general-purpose utility repository per organization.\r\n - Configure GitHub App permissions to allow the kernel to manage repository access.\r\n\r\n2. **Kernel Configuration**\r\n - Ensure the kernel has write access to the repository.\r\n - Implement read access control based on plug-in IDs.\r\n\r\n### Security Considerations\r\n- Restrict write permissions to prevent unauthorized modifications.\r\n\r\n### GitHub App Permissions\r\n- The kernel requires the following GitHub App permissions:\r\n - Read and write access to the configuration repository.\r\n\r\n## Benefits\r\n- **Data Integrity and Security**: By isolating each plug-in's data in its own JSON file, we ensure that plug-ins cannot interfere with each other’s data.\r\n- **Partner Control**: Partners have full control over their data, enhancing privacy and security.\r\n- **Decentralized Storage**: Decentralizing data storage minimizes the risk of data breaches and central points of failure.\r\n- **Simplified Development**: Standardizing data storage eliminates the need to handle different data providers when developing plugins. Methods in our SDK will make it simple for plugin developers to store and access data.\r\n\r\n## Summary\r\nBy standardizing the storage of plug-in data in separate JSON files named after the plug-in ID, we ensure data integrity and security. The kernel will manage access control, providing a robust framework for plug-in data management, and simplifying the development process for plugin developers.\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/2/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/2/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/7","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/7/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/7/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/7/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-plugin-installer/issues/7","id":2535411936,"node_id":"I_kwDOMyHsAM6XH1Dg","number":7,"title":"Import Kernel Config Parser","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7469052357,"node_id":"LA_kwDOMyHsAM8AAAABvTCxxQ","url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null},{"id":7469052409,"node_id":"LA_kwDOMyHsAM8AAAABvTCx-Q","url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":7469052423,"node_id":"LA_kwDOMyHsAM8AAAABvTCyBw","url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-09-19T06:32:27Z","updated_at":"2024-09-25T15:20:28Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We should import the same parser logic that the kernel uses to keep behavior consistent. \n\nThere should also be another render function to write the config reliably as well.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/7/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/7/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/6","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/6/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/6/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/6/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-plugin-installer/issues/6","id":2530243224,"node_id":"I_kwDOMyHsAM6W0HKY","number":6,"title":"Marketplace","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":6,"created_at":"2024-09-17T07:07:40Z","updated_at":"2024-10-05T05:32:02Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Depends on https://github.com/ubiquity-os/ubiquity-os-plugin-installer/issues/1\r\n\r\nThe `ubiquity-os-plugin-installer` repository is basically one of the core features of ubiquibot plugins marketplace. We can transform current repository in a plugin marketplace.\r\n\r\nAll plugins will reside in the https://github.com/ubiquity-os-marketplace organization:\r\n- \"official\" plugins (like [conversation-rewards](https://github.com/ubiquity-os/conversation-rewards) or [command-start-stop](https://github.com/ubiquity-os/command-start-stop)) will be transferred to the https://github.com/ubiquity-os-marketplace organization\r\n- partner plugins will have to be forked\r\n\r\nWhat should be done:\r\n1. Create a new UI page that will:\r\n a) Fetch all available plugins from the https://github.com/ubiquity-os-marketplace organization\r\n b) Fetch plugins' manifests from the `manifest.json` file located in a plugin github repository ([example](https://github.com/ubiquibot/conversation-rewards/blob/e46ac5ca9c7c0ca09d7299bed7daee334af4be53/manifest.json))\r\n c) Display all available plugins\r\n3. Implement a caching mechanism (similar to the one in `work.ubq.fi`) so that target github users are not rate limited by github\r\n\r\nIn the end we should support this flow:\r\n1. User opens the marketplace UI\r\n2. User selects a plugin that he wants to install or edit\r\n3. User clicks the \"Install\" or \"Edit\" button and user's `ubiquibot-os` config is updated\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/6/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/6/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/3","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/3/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/3/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-plugin-installer/issues/3","id":2527172531,"node_id":"I_kwDOMyHsAM6WoZez","number":3,"title":"Create add/remove config logic","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7469052380,"node_id":"LA_kwDOMyHsAM8AAAABvTCx3A","url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/labels/Price:%20600%20USD","name":"Price: 600 USD","color":"1f883d","default":false,"description":null},{"id":7469052413,"node_id":"LA_kwDOMyHsAM8AAAABvTCx_Q","url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":7469052421,"node_id":"LA_kwDOMyHsAM8AAAABvTCyBQ","url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":11,"created_at":"2024-09-15T20:05:10Z","updated_at":"2024-10-10T13:08:22Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"1. We need to be able to select which `ubiquibot-config.yml` to edit, so we at minimum need an organization picker after GitHub authentication. \r\n2. We need to parse the YML file, and target the config based on the plugin's URL/location. Then edit the YML file and push the commit using the user's credentials.\r\n\r\nMore thoughts on [the readme](https://github.com/Ubiquity-OS/ubiquity-os-plugin-installer?tab=readme-ov-file#add--remove-config).\r\n\r\n### LLM \r\n\r\nWithout research, the lazy answer is that LLMs can easily solve the problem. We could even consider passing in the most important/relevant files of the plugin so that the LLM can figure out all the default values and other miscellaneous details. \r\n\r\nBut it would certainly be preferred to implement this with traditional code. I think with a bit of research it can be pretty straightforward.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/3/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/3/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/1","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/1/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/1/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-plugin-installer/issues/1","id":2527168033,"node_id":"I_kwDOMyHsAM6WoYYh","number":1,"title":"Install Plugin UI","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-15T19:57:14Z","updated_at":"2024-09-15T20:05:24Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"When visiting a plugin URL from web browser, this UI should help us install the plugin and see/configure the default values. \r\n\r\nThis will require GitHub authentication to commit on behalf of the user and make changes to one's `ubiquibot-config.yml` file. \r\n\r\n- [ ] #2\r\n- [ ] #3\r\n- [ ] #4","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/1/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/1/timeline","performed_via_github_app":null,"state_reason":null}]
\ No newline at end of file
+[{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/972","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/972/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/972/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/972/events","html_url":"https://github.com/ubiquity/ubiquity-dollar/issues/972","id":2563432779,"node_id":"I_kwDOF4fVBs6YyuFL","number":972,"title":"CI: fix `check_storage_layout` for new contracts","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":5898797887,"node_id":"LA_kwDOF4fVBs8AAAABX5iDPw","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":5898805638,"node_id":"LA_kwDOF4fVBs8AAAABX5ihhg","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":7516302001,"node_id":"LA_kwDOF4fVBs8AAAABwAGqsQ","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2024-10-03T08:26:32Z","updated_at":"2024-10-15T05:45:01Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"There's the [core-contracts-storage-check](https://github.com/ubiquity/ubiquity-dollar/blob/20799bedf5ee4d40d2863653f7bc2fe68a2ce3fa/.github/workflows/core-contracts-storage-check.yml) workflow which checks that contracts' storage is not messed on contract upgrades.\r\n\r\nCheck these CI runs which fails with the `No workflow run found with an artifact named...` error:\r\n- https://github.com/ubiquity/ubiquity-dollar/actions/runs/11125075713/job/30912062971?pr=959\r\n- https://github.com/ubiquity/ubiquity-dollar/actions/runs/11145695030/job/30975996318?pr=971\r\n\r\nThe issue is that when a **new contract** is added the [core-contracts-storage-check](https://github.com/ubiquity/ubiquity-dollar/blob/20799bedf5ee4d40d2863653f7bc2fe68a2ce3fa/.github/workflows/core-contracts-storage-check.yml) starts to fail while the expected behavior for the CI workflow to pass because we don't need to check storage layout for newly added contracts (because storage of the newly added contract hasn't been updated hence storage collision could not occur).\r\n\r\nSo as a part of this issue we should make sure that [core-contracts-storage-check](https://github.com/ubiquity/ubiquity-dollar/blob/20799bedf5ee4d40d2863653f7bc2fe68a2ce3fa/.github/workflows/core-contracts-storage-check.yml) is not failing for newly added contracts.\r\n\r\nP.S. Pls provide a QA in the related PR with these scenarios:\r\n1) No storage updates, CI passing\r\n2) Storage update, no collision, CI passing\r\n3) Storage update, collision, CI failing\r\n4) New contract added, CI passing","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/972/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/972/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/968","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/968/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/968/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/968/events","html_url":"https://github.com/ubiquity/ubiquity-dollar/issues/968","id":2558678117,"node_id":"I_kwDOF4fVBs6YglRl","number":968,"title":"Aave AMO v2","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2024-10-01T09:28:07Z","updated_at":"2024-10-14T13:29:21Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"[This](https://github.com/ubiquity/ubiquity-dollar/pull/956) PR intoduced AMO minter and aave AMO which should help to receive yield on the collateral provided in the Ubiquity pool.\r\n\r\nOriginal contracts:\r\n- [FraxAMOMinter](https://github.com/FraxFinance/frax-solidity/blob/85039d4dff2fb24d8a1ba6efc1ebf7e464df9dcf/src/hardhat/contracts/Frax/FraxAMOMinter.sol)\r\n- [AaveAMO_V2](https://github.com/FraxFinance/frax-solidity/blob/master/src/hardhat/contracts/Misc_AMOs/Lending_AMOs/AaveAMO_V2.sol)\r\n\r\nWhat should be done:\r\n1. Make contracts upgradeable\r\n2. Refactor unit tests to use locally deployed aave contracts instead of forked testing\r\n3. Prepare deployment migration\r\n4. Prepare tests for the deployment migration \r\n5. Fix semgrep CI [errors](https://github.com/ubiquity/ubiquity-dollar/actions/runs/11158301208)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/968/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/968/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/958","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/958/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/958/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/958/events","html_url":"https://github.com/ubiquity/ubiquity-dollar/issues/958","id":2520765704,"node_id":"I_kwDOF4fVBs6WP9UI","number":958,"title":"Arbitrage bot","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":5898797883,"node_id":"LA_kwDOF4fVBs8AAAABX5iDOw","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":5898805715,"node_id":"LA_kwDOF4fVBs8AAAABX5ih0w","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":5898814734,"node_id":"LA_kwDOF4fVBs8AAAABX5jFDg","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Price:%20400%20USD","name":"Price: 400 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":10,"created_at":"2024-09-11T21:02:06Z","updated_at":"2024-10-14T13:29:24Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"In order to maintain [Dollar token](https://github.com/ubiquity/ubiquity-dollar/blob/0a230f977ad91bbfb01dd28bc1d2ea77faed5237/packages/contracts/src/dollar/core/UbiquityDollarToken.sol) USD peg [LibUbiquityPool](https://github.com/ubiquity/ubiquity-dollar/blob/0a230f977ad91bbfb01dd28bc1d2ea77faed5237/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol) provides the following arbitrage mechanic:\r\n1. If Dollar token USD price >1$ (on a secondary market) then arbitragers are incentivised to \r\na) Mint 1 Dollar token for 1 USD of collateral in the [LibUbiquityPool](https://github.com/ubiquity/ubiquity-dollar/blob/0a230f977ad91bbfb01dd28bc1d2ea77faed5237/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol)\r\nb) Sell 1 Dollar token on a secondary market\r\n2. On the contrary, If Dollar token USD price <1$ (on a secondary market) then arbitragers are incentivised to:\r\na) Buy cheap Dollar token on a secondary market\r\nb) Redeem Dollar token for collateral worth 1 USD in the [LibUbiquityPool](https://github.com/ubiquity/ubiquity-dollar/blob/0a230f977ad91bbfb01dd28bc1d2ea77faed5237/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol)\r\n\r\nOn early project stage any large swap may affect the Dollar token price greatly and the pool (where the swap occurred) may remain unbalanced for a long time which in turn depegs the Dollar token.\r\n\r\nAs a part of this issue we should create an arbitrage bot (i.e. `nodejs` app) which could be run on VPS or any suitable PAAS (heroku, cloudflare, etc...) to catch arbitrage opportunities in order to keep the Dollar token USD pegged on early project stage.\r\n\r\nWhat should be done:\r\n1. Create a new `nodejs` app that will catch arbitrage opportunities for the Dollar token\r\n2. Add unit tests for basic functionality\r\n3. Prepare a clear README of how to run the bot\r\n\r\nNotes:\r\n- It makes sense to create the arbitrage bot in a separate repository.\r\n- Deployed contract addresses (mainnet): [here](https://github.com/ubiquity/ubiquity-dollar/blob/0a230f977ad91bbfb01dd28bc1d2ea77faed5237/packages/contracts/broadcast/Deploy001_Diamond_Dollar_Governance.s.sol/1/run-latest.json)\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/958/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/958/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/939","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/939/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/939/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/939/events","html_url":"https://github.com/ubiquity/ubiquity-dollar/issues/939","id":2309724903,"node_id":"I_kwDOF4fVBs6Jq5rn","number":939,"title":"Investigate and confirm the behaviour for new staking users for uad-contracts and diamond","user":{"login":"gitcoindev","id":88761781,"node_id":"MDQ6VXNlcjg4NzYxNzgx","avatar_url":"https://avatars.githubusercontent.com/u/88761781?v=4","gravatar_id":"","url":"https://api.github.com/users/gitcoindev","html_url":"https://github.com/gitcoindev","followers_url":"https://api.github.com/users/gitcoindev/followers","following_url":"https://api.github.com/users/gitcoindev/following{/other_user}","gists_url":"https://api.github.com/users/gitcoindev/gists{/gist_id}","starred_url":"https://api.github.com/users/gitcoindev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gitcoindev/subscriptions","organizations_url":"https://api.github.com/users/gitcoindev/orgs","repos_url":"https://api.github.com/users/gitcoindev/repos","events_url":"https://api.github.com/users/gitcoindev/events{/privacy}","received_events_url":"https://api.github.com/users/gitcoindev/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":10,"created_at":"2024-05-22T06:55:19Z","updated_at":"2024-09-27T20:05:30Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Right now the behaviour for new staking users is this one:\r\n1) User deposits 1000 `UAD3CRV LP` to https://etherscan.io/address/0xc251ecd9f1bd5230823f9a0f99a44a87ddd4ca38 for 1 week\r\n2) User waits for 1 week\r\n3) User withdraws 1000 `UAD3CRV LP` and gets 178 `UAD3CRV LP` + 72 `UBQ`. User would expect to get 1000 `UAD3CRV LP` instead of 178.\r\n\r\n_Originally posted by @rndquu in https://github.com/ubiquity/ubiquity-dollar/issues/752#issuecomment-2078849441_\r\n ","closed_by":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/939/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/939/timeline","performed_via_github_app":null,"state_reason":"reopened"},{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/937","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/937/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/937/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/937/events","html_url":"https://github.com/ubiquity/ubiquity-dollar/issues/937","id":2284873479,"node_id":"I_kwDOF4fVBs6IMGcH","number":937,"title":"Final Pre-Seed/Seed Investor Debt UBQ","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":5898797927,"node_id":"LA_kwDOF4fVBs8AAAABX5iDZw","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Time:%20%3C4%20Hours","name":"Time: <4 Hours","color":"ededed","default":false,"description":null},{"id":5898805810,"node_id":"LA_kwDOF4fVBs8AAAABX5iiMg","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":6922903766,"node_id":"LA_kwDOF4fVBs8AAAABnKMg1g","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Price:%20450%20USD","name":"Price: 450 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":27,"created_at":"2024-05-08T07:20:20Z","updated_at":"2024-10-07T07:19:19Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"> So what's next steps to watch out for? Do we need to fix the amounts again when the stakes are withdrawn?\r\n\r\nFinally!\r\n\r\nThe next 'final' batch should be done after bonds expiry. Only then the remaining exact payout amounts will be available.\r\n\r\nThe algorithm will be:\r\n\r\n1) Update network block number in https://github.com/gitcoindev/uad-contracts/blob/staking-mutliplier-fix/tasks/simulateBondingDebt.ts and execute the script again using the following command:\r\n\r\n`$ npx hardhat simulateBondingDebt`\r\n\r\nThis will fork the blockchain, get the current inflation rate and output missing stake values for the same set of bonds. What was paid / disbursed today, should be subtracted from the amount that will be shown.\r\n\r\n2) The BondingDebtV2 / BondingDebtFinal contract will be deployed in the same way BondingDebt, but with remaining UBQ values for the bond holders.\r\n\r\n\r\n\r\n\n\n_Originally posted by @gitcoindev in https://github.com/ubiquity/ubiquity-dollar/issues/752#issuecomment-2098994982_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/937/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/937/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/930","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/930/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/930/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/930/events","html_url":"https://github.com/ubiquity/ubiquity-dollar/issues/930","id":2253321255,"node_id":"I_kwDOF4fVBs6GTvQn","number":930,"title":"Adding collateral enabled checks for redemption collections might make users uncapable of redeming their funds.","user":{"login":"0xadrii","id":56537955,"node_id":"MDQ6VXNlcjU2NTM3OTU1","avatar_url":"https://avatars.githubusercontent.com/u/56537955?v=4","gravatar_id":"","url":"https://api.github.com/users/0xadrii","html_url":"https://github.com/0xadrii","followers_url":"https://api.github.com/users/0xadrii/followers","following_url":"https://api.github.com/users/0xadrii/following{/other_user}","gists_url":"https://api.github.com/users/0xadrii/gists{/gist_id}","starred_url":"https://api.github.com/users/0xadrii/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0xadrii/subscriptions","organizations_url":"https://api.github.com/users/0xadrii/orgs","repos_url":"https://api.github.com/users/0xadrii/repos","events_url":"https://api.github.com/users/0xadrii/events{/privacy}","received_events_url":"https://api.github.com/users/0xadrii/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-04-19T15:43:58Z","updated_at":"2024-04-19T16:30:36Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"[MEDIUM] - Adding collateral enabled checks for redemption collections might make users uncapable of redeming their funds.\r\n\r\nThis PR is intended to fix [the bug described in this Sherlock issue](https://github.com/sherlock-audit/2023-12-ubiquity-judging/issues/29). However, the Sherlock report is actually wrong and the vulnerability described must not be considered as an issue in the first place, so the collateralEnabled check should not be added on collecting redemptions.\r\n\r\nEnabling/disabling collaterals allows the protocol to add or remove supported collaterals, not to be used under uncertain situations, such as a hack. In such type of situations, the `isRedeemPaused` check can be enabled to prevent users from redeeming if something wrong is currently happening.\r\n\r\nThe problem with adding the `collateralEnabled` check here is that if Ubiquity decides to disable a collateral in the future, some redemptions might be already queued, so users won't be able to withdraw their funds.\r\n\r\n\r\nRecommendation: Remove the `collateralEnabled` check for collecting redemptions.\r\n\r\n_Originally posted by @0xadrii in https://github.com/ubiquity/ubiquity-dollar/pull/894#discussion_r1572571068_\r\n ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/930/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/930/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/928","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/928/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/928/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/928/events","html_url":"https://github.com/ubiquity/ubiquity-dollar/issues/928","id":2246043014,"node_id":"I_kwDOF4fVBs6F3-WG","number":928,"title":"Better security","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2024-04-16T13:19:04Z","updated_at":"2024-10-04T16:02:22Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"After the deployment we'll have most of the liquidity resided in the [LibUbiquityPool](https://github.com/ubiquity/ubiquity-dollar/blob/a1b11e1b944227144d7cc19ab320220d9fce8b69/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol) so it makes sense to make its security better by imlementing more fuzzing and invariant tests, adding formal verification and monitoring solution.\r\n\r\n- [x] https://github.com/ubiquity/ubiquity-dollar/issues/925\r\n- [x] https://github.com/ubiquity/ubiquity-dollar/issues/563\r\n- [ ] https://github.com/ubiquity/ubiquity-dollar/issues/926\r\n- [ ] https://github.com/ubiquity/ubiquity-dollar/issues/927\r\n\r\n@0x4007 FYI","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/928/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/928/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/927","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/927/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/927/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/927/events","html_url":"https://github.com/ubiquity/ubiquity-dollar/issues/927","id":2246035577,"node_id":"I_kwDOF4fVBs6F38h5","number":927,"title":"Security monitoring","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":5898797883,"node_id":"LA_kwDOF4fVBs8AAAABX5iDOw","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":5898805715,"node_id":"LA_kwDOF4fVBs8AAAABX5ih0w","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":5898830518,"node_id":"LA_kwDOF4fVBs8AAAABX5kCtg","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Price:%20600%20USD","name":"Price: 600 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":40,"created_at":"2024-04-16T13:16:42Z","updated_at":"2024-10-14T13:29:29Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"In case of a security incident we should:\r\n1. Pause all of the contracts\r\n2. Notify the core team that something went wrong\r\n\r\nPossible solutions for monitoring:\r\n- https://docs.chain.link/chainlink-automation\r\n- https://www.openzeppelin.com/defender\r\n- https://cyvers.ai/\r\n\r\nWhat should be done:\r\n1. Setup monitoring for [LibUbiquityPool](https://github.com/ubiquity/ubiquity-dollar/blob/a1b11e1b944227144d7cc19ab320220d9fce8b69/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol). In case of a possible security incident (let's say >30% of liquidity is withdrawn) we should:\r\na) Pause the [UbiquityDollarToken](https://github.com/ubiquity/ubiquity-dollar/blob/a1b11e1b944227144d7cc19ab320220d9fce8b69/packages/contracts/src/dollar/core/UbiquityDollarToken.sol)\r\nb) Pause [LibUbiquityPool](https://github.com/ubiquity/ubiquity-dollar/blob/a1b11e1b944227144d7cc19ab320220d9fce8b69/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol) by [disabling collateral](https://github.com/ubiquity/ubiquity-dollar/blob/a1b11e1b944227144d7cc19ab320220d9fce8b69/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol#L1129)\r\n2. Send notification to https://t.me/UbiquityDAO (you may create a new topic there like `Dollar monitoring`)\r\n\r\nP.S. Mainnet contract addresses can be found [here](https://github.com/ubiquity/ubiquity-dollar/blob/e4c1fae5ef5e9ba40bcb84c671f2ba39f0ab5208/packages/contracts/broadcast/Deploy001_Diamond_Dollar_Governance.s.sol/1/run-latest.json)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/927/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/927/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/926","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/926/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/926/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/926/events","html_url":"https://github.com/ubiquity/ubiquity-dollar/issues/926","id":2246031922,"node_id":"I_kwDOF4fVBs6F37oy","number":926,"title":"Formal verification","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":5898797883,"node_id":"LA_kwDOF4fVBs8AAAABX5iDOw","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":5898805638,"node_id":"LA_kwDOF4fVBs8AAAABX5ihhg","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":5898837553,"node_id":"LA_kwDOF4fVBs8AAAABX5keMQ","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Price:%20300%20USD","name":"Price: 300 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":17,"created_at":"2024-04-16T13:15:22Z","updated_at":"2024-10-14T13:29:30Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We should implement formal verification for [LibUbiquityPool](https://github.com/ubiquity/ubiquity-dollar/blob/a1b11e1b944227144d7cc19ab320220d9fce8b69/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol). \r\n\r\nSo collaborator who's going to take this issue should carefully study the [LibUbiquityPool](https://github.com/ubiquity/ubiquity-dollar/blob/a1b11e1b944227144d7cc19ab320220d9fce8b69/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol) and think of the invariants that should be tested.\r\n\r\nInvariants could be:\r\n- user can not mint more Dollars in USD than provided collateral\r\n- user can not redeem more collateral in USD than provided Dollar tokens\r\n\r\nPossible solutions for formal verification:\r\n- https://github.com/a16z/halmos\r\n- https://docs.runtimeverification.com/kontrol\r\n\r\nWe already had a try with formal verification, you may find related scripts [here](https://github.com/ubiquity/ubiquity-dollar/tree/a1b11e1b944227144d7cc19ab320220d9fce8b69/packages/contracts/scripts/smt-checker).\r\n\r\nWhat should be done:\r\n1. Impelent formal verification for the [LibUbiquityPool](https://github.com/ubiquity/ubiquity-dollar/blob/a1b11e1b944227144d7cc19ab320220d9fce8b69/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol) contract (you may create tests in a separate test file like `UbiquityPoolFacet.formal.t.sol` so we could distinguish unit, fuzz, invariant and formal verification tests)\r\n2. Setup testing CI to run formal verification tests on merge to the `development` branch (keep in mind that github action runnners can run for 6 hours). We don't need to run formal verification tests on eash PR since they're really time consuming.\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/926/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/926/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/908","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/908/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/908/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/908/events","html_url":"https://github.com/ubiquity/ubiquity-dollar/issues/908","id":2162993767,"node_id":"I_kwDOF4fVBs6A7Kpn","number":908,"title":"Research: overcollateralization mechanic","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":5898805715,"node_id":"LA_kwDOF4fVBs8AAAABX5ih0w","url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":22,"created_at":"2024-03-01T09:36:57Z","updated_at":"2024-10-08T06:02:37Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"There is only one audit's issue that we haven't fixed yet: https://github.com/sherlock-audit/2023-12-ubiquity-judging/issues/60\r\n\r\nThis is not critical but during a black swan event it will make the pool insolvent to some extent. We should add the overcollateralization mechanic (similar to `DAI`, `CRVUSD` or `LUSD`) which is much more resistant to sudden collateral depegs.\r\n\r\nThis is a research issue, as a result we should get a detailed step by step guide of what audited contracts we should fork/revamp and how they fit (i.e. how we should use them) in the overall Dollar protocol architecture.\r\n\r\nWhen the overcollateralization mechanic is implemented we could:\r\n1. Pause the Ubiquity pool used by arbitrageurs (and allow operations with `Dollar` tokens only on secondary markets)\r\n2. Rely only on the overcollateralization mechanic for the `Dollar` token USD peg which is much more resistant to sudden collateral depegs\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/908/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/908/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/2","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/2/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/2/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/2/events","html_url":"https://github.com/ubiquity/ubiquity-instadapp/issues/2","id":1042595914,"node_id":"I_kwDOGKs3-84-JMBK","number":2,"title":"Instadapp UI on PR Finish","user":{"login":"marcomow","id":4977000,"node_id":"MDQ6VXNlcjQ5NzcwMDA=","avatar_url":"https://avatars.githubusercontent.com/u/4977000?v=4","gravatar_id":"","url":"https://api.github.com/users/marcomow","html_url":"https://github.com/marcomow","followers_url":"https://api.github.com/users/marcomow/followers","following_url":"https://api.github.com/users/marcomow/following{/other_user}","gists_url":"https://api.github.com/users/marcomow/gists{/gist_id}","starred_url":"https://api.github.com/users/marcomow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/marcomow/subscriptions","organizations_url":"https://api.github.com/users/marcomow/orgs","repos_url":"https://api.github.com/users/marcomow/repos","events_url":"https://api.github.com/users/marcomow/events{/privacy}","received_events_url":"https://api.github.com/users/marcomow/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2021-11-02T16:48:57Z","updated_at":"2024-09-12T17:47:40Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":null,"closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/2/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/2/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/1","repository_url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp","labels_url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/1/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/1/events","html_url":"https://github.com/ubiquity/ubiquity-instadapp/issues/1","id":1041359800,"node_id":"I_kwDOGKs3-84-EeO4","number":1,"title":"implement Assembly Snowball integration","user":{"login":"marcomow","id":4977000,"node_id":"MDQ6VXNlcjQ5NzcwMDA=","avatar_url":"https://avatars.githubusercontent.com/u/4977000?v=4","gravatar_id":"","url":"https://api.github.com/users/marcomow","html_url":"https://github.com/marcomow","followers_url":"https://api.github.com/users/marcomow/followers","following_url":"https://api.github.com/users/marcomow/following{/other_user}","gists_url":"https://api.github.com/users/marcomow/gists{/gist_id}","starred_url":"https://api.github.com/users/marcomow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/marcomow/subscriptions","organizations_url":"https://api.github.com/users/marcomow/orgs","repos_url":"https://api.github.com/users/marcomow/repos","events_url":"https://api.github.com/users/marcomow/events{/privacy}","received_events_url":"https://api.github.com/users/marcomow/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2021-11-01T16:27:58Z","updated_at":"2024-09-12T17:47:42Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":null,"closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/1/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquity-instadapp/issues/1/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/launch-party/issues/4","repository_url":"https://api.github.com/repos/ubiquity/launch-party","labels_url":"https://api.github.com/repos/ubiquity/launch-party/issues/4/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/launch-party/issues/4/comments","events_url":"https://api.github.com/repos/ubiquity/launch-party/issues/4/events","html_url":"https://github.com/ubiquity/launch-party/issues/4","id":1062838846,"node_id":"I_kwDOGYrTic4_WaI-","number":4,"title":"NFT sale strategy","user":{"login":"marcomow","id":4977000,"node_id":"MDQ6VXNlcjQ5NzcwMDA=","avatar_url":"https://avatars.githubusercontent.com/u/4977000?v=4","gravatar_id":"","url":"https://api.github.com/users/marcomow","html_url":"https://github.com/marcomow","followers_url":"https://api.github.com/users/marcomow/followers","following_url":"https://api.github.com/users/marcomow/following{/other_user}","gists_url":"https://api.github.com/users/marcomow/gists{/gist_id}","starred_url":"https://api.github.com/users/marcomow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/marcomow/subscriptions","organizations_url":"https://api.github.com/users/marcomow/orgs","repos_url":"https://api.github.com/users/marcomow/repos","events_url":"https://api.github.com/users/marcomow/events{/privacy}","received_events_url":"https://api.github.com/users/marcomow/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":true,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2021-11-24T19:49:06Z","updated_at":"2021-11-24T19:49:06Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"- sell on a legit platform (Opensea, showyunft)\r\n- pricing -> bonding curve","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/launch-party/issues/4/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/launch-party/issues/4/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/34","repository_url":"https://api.github.com/repos/ubiquity/ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/34/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/34/comments","events_url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/34/events","html_url":"https://github.com/ubiquity/ubq.fi/issues/34","id":2580722252,"node_id":"I_kwDOIBgTD86Z0rJM","number":34,"title":"More Logos","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6498679050,"node_id":"LA_kwDOIBgTD88AAAABg1n5Cg","url":"https://api.github.com/repos/ubiquity/ubq.fi/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-11T07:59:24Z","updated_at":"2024-10-11T08:00:11Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We need more logos on our site for social credibility. \nWe should have logos of all 12 EVMs we support payouts on\nUniswap to mention its permit2\nPartners like MakerDAO\nand more. TBC","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/34/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/34/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/29","repository_url":"https://api.github.com/repos/ubiquity/ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/29/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/29/comments","events_url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/29/events","html_url":"https://github.com/ubiquity/ubq.fi/issues/29","id":2376041678,"node_id":"I_kwDOIBgTD86Nn4TO","number":29,"title":"Toy \"Demo\" Illustrating the Flow","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":5348034116,"node_id":"LA_kwDOIBgTD88AAAABPsSGRA","url":"https://api.github.com/repos/ubiquity/ubq.fi/labels/Time:%20%3C1%20Week","name":"Time: <1 Week","color":"ededed","default":false,"description":null},{"id":6498679050,"node_id":"LA_kwDOIBgTD88AAAABg1n5Cg","url":"https://api.github.com/repos/ubiquity/ubq.fi/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":7130901582,"node_id":"LA_kwDOIBgTD88AAAABqQjsTg","url":"https://api.github.com/repos/ubiquity/ubq.fi/labels/Price:%201200%20USD","name":"Price: 1200 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":46,"created_at":"2024-06-26T18:45:30Z","updated_at":"2024-10-16T00:13:29Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"![dxos org_](https://github.com/ubiquity/ubq.fi/assets/4975670/3d7044f1-ee8f-45c1-a933-53028fa904bc)\r\n\r\n[DXOS](https://dxos.org/) demonstrates their tech above-the-fold, which is the most concise way to explain their offering.\r\n\r\nWe should make a simple example like this that is a simplified model of our flow. \r\n\r\nFor example:\r\n\r\n- There is a simple description \"Move the box\" \r\n- There already is a priority level set\r\n- User is prompted to set a time estimate\r\n- It shows the price label\r\n- It prompts the user to \"start\" the task\r\n- It renders a box that you can drag and drop to a goal box. \r\n- As soon as its complete, a payment permit is shown with the reward\r\n- The user can actually claim an NFT etc. \r\n\r\nThis can be handled in a separate repo and we can iframe it in since this seems a bit involved. Also I think we need to create an NFT contract for this demo. \r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/29/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubq.fi/issues/29/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/.github/issues/119","repository_url":"https://api.github.com/repos/ubiquity/.github","labels_url":"https://api.github.com/repos/ubiquity/.github/issues/119/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/.github/issues/119/comments","events_url":"https://api.github.com/repos/ubiquity/.github/issues/119/events","html_url":"https://github.com/ubiquity/.github/issues/119","id":2443440763,"node_id":"I_kwDOIaGAy86Ro_J7","number":119,"title":"Recruitment: leverage reddit ","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[{"id":5295864391,"node_id":"LA_kwDOIaGAy88AAAABO6h6Rw","url":"https://api.github.com/repos/ubiquity/.github/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":6006396257,"node_id":"LA_kwDOIaGAy88AAAABZgJVYQ","url":"https://api.github.com/repos/ubiquity/.github/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":6772883661,"node_id":"LA_kwDOIaGAy88AAAABk7IAzQ","url":"https://api.github.com/repos/ubiquity/.github/labels/Price:%20600%20USD","name":"Price: 600 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":10,"created_at":"2024-08-01T21:05:29Z","updated_at":"2024-09-10T05:15:41Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"This is borderline I'm unsure about this one but it would be very effective if done well and in reality causes no harm to anyone and in fact the types of people that generally respond well to these types of posts are the types of people we want to target\r\n\r\n## What is it?\r\nSimply put: We clickbait some of our tasks in subreddits like r/typescript for example\r\n\r\nI'm not sure of the term for it in advertising you see it a lot these days. Basically you'll see gameplay of the app and they will either deliberately fail an easy task so the viewer goes \"I could have completed that\" or they intentionally move into the path of the lesser upgrade power (smg vs tank eg) so they go \"I want to see the tank, I'd have chosen the tank\"\r\n\r\n## What it requires?\r\nWe pick a couple of our open tasks and then open posts into these particular subreddits from a new/noob account and we lay it out as if we are struggling with the problem and post links to the code/the issue whatever.\r\n\r\nThe people on these subs with real knowledge and are keen to help out are the target demographic here, they are quick to peruse links and random code to help a stranger \"just because\" or maybe it's to test their own knowledge or they are curious that way, we want them.\r\n\r\n## Why do it?\r\nWell we have ways to target solidity and web3 minded folks but not so much Web2 folks that would excel in TS related projects for example.\r\n\r\nThis approach can be applied to any language or skillset our tasks contain, AI, Web3, TS etc.\r\n\r\n## Is it a poor show from us?\r\nI don't think so. While we are not interested in the help we are asking for exactly, we are interested in those who can see the problem and resolve it on the spot like many do on these subs, just for fun so no one is losing anything here. They do as they also do and potentially we catch their interest enough to pick up a task or two \r\n\r\n## Pros vs other socials like X\r\n\r\n- Way less effort, set and forget.\r\n- effectiveness is not tied to followers-count\r\n- very quick turnover we'll see most traffic in the first 24-48hrs on these posts (as far as I have noticed)\r\n- we will become better at this with each post\r\n- each post is also a great SEO anchor ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/.github/issues/119/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/.github/issues/119/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/.github/issues/118","repository_url":"https://api.github.com/repos/ubiquity/.github","labels_url":"https://api.github.com/repos/ubiquity/.github/issues/118/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/.github/issues/118/comments","events_url":"https://api.github.com/repos/ubiquity/.github/issues/118/events","html_url":"https://github.com/ubiquity/.github/issues/118","id":2443341080,"node_id":"I_kwDOIaGAy86Rom0Y","number":118,"title":"Recruitment: 3rd Party Bounty Postings","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2024-08-01T20:19:31Z","updated_at":"2024-08-02T00:27:03Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"## What is it?\r\n\r\nSimilar to [our DoraHacks bounty post](https://github.com/ubiquity/.github/issues/116) we should leverage similar channels and create a similar post/structure. Primarily it acts as just advertising space they are not considered full hackathons or anything remotely close. \r\n\r\nWe should stick to the same format and just call them something like `Newcomers Bonus` and have it follow the same pattern where it's a bonus on top of your first task.\r\n\r\n## Where would we post?\r\n\r\n- https://earn.superteam.fun/\r\n- https://bounties.network/\r\n- add more here\r\n\r\n## Analytics\r\n\r\n- we can perform the same test conditions across all of them then consider dropping poor performing ones from any future usage of this strategy\r\n\r\n## What's required?\r\n\r\n- No uniform or automated way of handling submissions (as of yet) as each platform handles things in their own way so would require manually handling things until we can automate/improve our end. \r\n- It likely requires minimal effort probably a quick check of the site(s) once per week and validating submissions\r\n\r\n#### STILL TO-DOS:\r\n\r\n- find more places to post/validate their usefulness i.e userbase, social proofs etc\r\n- either improve the current DoraHacks bounty post and we'll replicate it across all postings, use it as-is or create a varied post for each platform.\r\n\r\nCreating a slightly different post for each platform might be a great idea for SEO","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/.github/issues/118/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/.github/issues/118/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/.github/issues/111","repository_url":"https://api.github.com/repos/ubiquity/.github","labels_url":"https://api.github.com/repos/ubiquity/.github/issues/111/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/.github/issues/111/comments","events_url":"https://api.github.com/repos/ubiquity/.github/issues/111/events","html_url":"https://github.com/ubiquity/.github/issues/111","id":2330410014,"node_id":"I_kwDOIaGAy86K5zwe","number":111,"title":"Cloudflare as a Risk","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6006396257,"node_id":"LA_kwDOIaGAy88AAAABZgJVYQ","url":"https://api.github.com/repos/ubiquity/.github/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2024-06-03T07:42:27Z","updated_at":"2024-06-11T16:14:09Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I've received a few emails from Cloudflare sales but didn't make time to speak with them. Turns out they are developing a reputation for extortion. It's something we should have a plan for/think about. I'm expecting them to pull the plug just when we start onboarding partners. \r\n\r\n- https://robindev.substack.com/p/cloudflare-took-down-our-website\r\n- https://www.youtube.com/watch?v=8zj7ei5Egk8","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/.github/issues/111/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/.github/issues/111/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/.github/issues/110","repository_url":"https://api.github.com/repos/ubiquity/.github","labels_url":"https://api.github.com/repos/ubiquity/.github/issues/110/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/.github/issues/110/comments","events_url":"https://api.github.com/repos/ubiquity/.github/issues/110/events","html_url":"https://github.com/ubiquity/.github/issues/110","id":2319919681,"node_id":"I_kwDOIaGAy86KRypB","number":110,"title":"Ubiquity Credit","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":16,"created_at":"2024-05-28T00:25:18Z","updated_at":"2024-06-29T12:35:18Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I think we have a shot at making the crypto industry's first under collateralized credit program. \n\nNormally you need to be over collateralized to borrow, but, we have two key points of leverage in our infrastructure that can make under collateralized credit work. \n\n1. Contributor reputation: we can track a contributor's earnings over time and extend credit based on their monthly average earnings. For example, a user earns on average $5000 a month for the last three months, so they can borrow $5000 from us at X% APR if they need liquidity. Not sure what a good minimum threshold is but obviously the shorter the riskier. We could start a pilot with a whitelist of OG contributors first. We can consider only allowing card minting to disincentivize the use of leverage/trading with the funds. \n\n2. Permits: wages are distributed through our system and could be used for automatic payback (or garnishing wages) which could help make financing easier to payback. \n\nI think the biggest piece of advantage is the reputation system though. Contributors who have old GitHub profiles can be more inclined to pay back debts to continue using the system if they have an old GitHub profile and worked for a long time in the system.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/.github/issues/110/reactions","total_count":3,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":2,"eyes":1},"timeline_url":"https://api.github.com/repos/ubiquity/.github/issues/110/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/.github/issues/109","repository_url":"https://api.github.com/repos/ubiquity/.github","labels_url":"https://api.github.com/repos/ubiquity/.github/issues/109/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/.github/issues/109/comments","events_url":"https://api.github.com/repos/ubiquity/.github/issues/109/events","html_url":"https://github.com/ubiquity/.github/issues/109","id":2303921430,"node_id":"I_kwDOIaGAy86JUw0W","number":109,"title":"Backfill DB with legacy permits","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[{"id":5295864391,"node_id":"LA_kwDOIaGAy88AAAABO6h6Rw","url":"https://api.github.com/repos/ubiquity/.github/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":5502940439,"node_id":"LA_kwDOIaGAy88AAAABSAA1Fw","url":"https://api.github.com/repos/ubiquity/.github/labels/Price:%20200%20USD","name":"Price: 200 USD","color":"1f883d","default":false,"description":null},{"id":6006396164,"node_id":"LA_kwDOIaGAy88AAAABZgJVBA","url":"https://api.github.com/repos/ubiquity/.github/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":9,"created_at":"2024-05-18T08:16:32Z","updated_at":"2024-09-12T17:47:45Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Required by https://github.com/ubiquity/work.ubq.fi/pull/46\r\n\r\nUsing the CLI as-is or with required changes: \r\n\r\na) Collect permit data across ubiquity and ubiquibot orgs\r\nb) Insert this data in the permits table (idempotently)\r\n\r\n_original comment https://github.com/ubiquity/work.ubq.fi/pull/46#issuecomment-2115014677_\r\n\r\n##### time estimate: < 4 hrs\r\n\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/.github/issues/109/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/.github/issues/109/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/.github/issues/106","repository_url":"https://api.github.com/repos/ubiquity/.github","labels_url":"https://api.github.com/repos/ubiquity/.github/issues/106/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/.github/issues/106/comments","events_url":"https://api.github.com/repos/ubiquity/.github/issues/106/events","html_url":"https://github.com/ubiquity/.github/issues/106","id":2272446115,"node_id":"I_kwDOIaGAy86Hcsaj","number":106,"title":"[Airdrop CLI] - parse multiple orgs","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-04-30T21:03:06Z","updated_at":"2024-09-12T17:47:47Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Requirement for https://github.com/ubiquity/work.ubq.fi/pull/46\r\n\r\nThe CLI is only parsing the `Ubiquity` org for payments and needs to include at least:\r\n\r\n- `ubiquibot`\r\n\r\nPotentially User(s) too (I doubt it but needs clarity):\r\n\r\n- `0x4007`\r\n- `pavlovcik`\r\n\r\n> Also the numbers don't look right. I'm pretty sure the core team members collected more that what is shown on your screenshot.\r\n\r\n_Original comment https://github.com/ubiquity/work.ubq.fi/pull/46#issuecomment-2076581576_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/.github/issues/106/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/.github/issues/106/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/.github/issues/105","repository_url":"https://api.github.com/repos/ubiquity/.github","labels_url":"https://api.github.com/repos/ubiquity/.github/issues/105/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/.github/issues/105/comments","events_url":"https://api.github.com/repos/ubiquity/.github/issues/105/events","html_url":"https://github.com/ubiquity/.github/issues/105","id":2221044579,"node_id":"I_kwDOIaGAy86EYnNj","number":105,"title":"Autonomous Coding Agent","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":5295864391,"node_id":"LA_kwDOIaGAy88AAAABO6h6Rw","url":"https://api.github.com/repos/ubiquity/.github/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":6006396257,"node_id":"LA_kwDOIaGAy88AAAABZgJVYQ","url":"https://api.github.com/repos/ubiquity/.github/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":6772883661,"node_id":"LA_kwDOIaGAy88AAAABk7IAzQ","url":"https://api.github.com/repos/ubiquity/.github/labels/Price:%20600%20USD","name":"Price: 600 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":32,"created_at":"2024-04-02T17:20:14Z","updated_at":"2024-09-09T14:25:12Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"https://github.com/nus-apr/auto-code-rover\n\nhttps://x.com/abhikroychoudh1/status/1777494000611852515\n\nThis might be worth setting up as an experiment first, and then a github action that responds to new issues being opened, with an event dispatcher so that we can run when specifications are modified and finalized. \n\nFinally we can make it a plugin for our kernel as part of a future task. \n\nI imagine it will do well with the simpler, and tighter scoped tasks!","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/.github/issues/105/reactions","total_count":2,"+1":2,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/.github/issues/105/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/.github/issues/104","repository_url":"https://api.github.com/repos/ubiquity/.github","labels_url":"https://api.github.com/repos/ubiquity/.github/issues/104/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/.github/issues/104/comments","events_url":"https://api.github.com/repos/ubiquity/.github/issues/104/events","html_url":"https://github.com/ubiquity/.github/issues/104","id":2217770915,"node_id":"I_kwDOIaGAy86EMH-j","number":104,"title":"`ethcon.ubq.fi` and `ethcon-banner.ubq.fi`","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6006396118,"node_id":"LA_kwDOIaGAy88AAAABZgJU1g","url":"https://api.github.com/repos/ubiquity/.github/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":6006396164,"node_id":"LA_kwDOIaGAy88AAAABZgJVBA","url":"https://api.github.com/repos/ubiquity/.github/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":6766133725,"node_id":"LA_kwDOIaGAy88AAAABk0sB3Q","url":"https://api.github.com/repos/ubiquity/.github/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":14,"created_at":"2024-04-01T08:05:45Z","updated_at":"2024-05-02T08:19:30Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We have some swag bags we gave out with QR codes that go to those URLs. The banner is not on display these days but I figured we would fix it at the same time. Currently the QR codes are broken (they go to [ethcon.ubq.fi](https://dao.ubq.fi/ethcon))\r\n\r\nWe have a system that dynamically will link to our subdomains based on the repository name. For example, if I create a new repository called `test.ubq.fi` our continuous deploys script will automatically 1. create `test-ubq-fi.pages.dev` and 2. link our subdomain to it so that its immediately accessible on the internet from our subdomain. \r\n\r\nThe core magic is inside of this Cloudflare Worker logic:\r\n\r\n```js\r\naddEventListener('fetch', event => {\r\n event.respondWith(handleRequest(event.request))\r\n})\r\n\r\nasync function handleRequest(request) {\r\n const url = new URL(request.url)\r\n let address\r\n \r\n if (url.hostname === 'ubq.fi') {\r\n // Route root domain\r\n address = 'https://ubq-fi.pages.dev' + url.pathname\r\n } else {\r\n // Route subdomains\r\n const subdomain = url.hostname.split('.')[0]\r\n address = `https://${subdomain}-ubq-fi.pages.dev` + url.pathname\r\n }\r\n\r\n return fetch(address, request)\r\n}\r\n\r\n```\r\n\r\nWe should have some type of exceptions capability for simple forwarding. Perhaps a key/value map. \r\n\r\n```js\r\n{\r\n \"ethcon.ubq.fi\": \"https://dao.ubq.fi/ethcon\",\r\n \"ethcon-banner.ubq.fi\": \"https://dao.ubq.fi/ethcon-banner\",\r\n}\r\n```\r\n\r\nThis might be simple enough to just post the code as a comment here or something. I can manually test it and then we can complete the task. You really should attempt to test the code though, even if its substitute code that does the same thing.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/.github/issues/104/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":1,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/.github/issues/104/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/2","repository_url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator","labels_url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/2/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/2/comments","events_url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/2/events","html_url":"https://github.com/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/2","id":1454375703,"node_id":"I_kwDOIbdbd85WsAMX","number":2,"title":"Graph Compounding","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2022-11-18T03:28:59Z","updated_at":"2022-11-18T03:38:33Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I'm focusing on the \"breakeven line\" idea and its ability to accurately express when a position is compounded (yield is withdrawn, and redeposited.) Instead of graphing it as a ray (a line with one \"extended\" point) we can instead graph it as a line segment (no extended points) from the position deposit time, to when a position's size is modified. \r\n\r\nIf we add to the position size, then the breakeven line should be steeper (more fees should be accrued due to a larger position size.) I made a quick mockup using TradingView to illustrate this idea.\r\n\r\n![ETHUSDT_2022-11-18_11-36-13](https://user-images.githubusercontent.com/4975670/202611303-0420fcc3-b379-46c0-a8d8-fba435562108.png)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/2/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/2/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/1","repository_url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator","labels_url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/1/comments","events_url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/1/events","html_url":"https://github.com/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/1","id":1447349075,"node_id":"I_kwDOIbdbd85WRMtT","number":1,"title":"Dynamic Data Input","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2022-11-14T04:08:55Z","updated_at":"2022-11-14T04:23:59Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"# Dynamic Data Input on TradingView Indicator\r\n\r\nThe first major engineering challenge in order for this to be useful in realtime decision making is to allow for the script to have the capability to dynamically read position data from external data sources. I did quite a bit of research on this, and it appears that TradingView's PineScript does not currently have this capability. \r\n\r\nCurrently the variables must be manually input on the indicator. This can be done by double clicking the indicator on TradingView.\r\n\r\n![tv](https://user-images.githubusercontent.com/4975670/201572439-f6443b3e-5f1c-4abc-bc15-e8a0be86a129.jpg)\r\n\r\nThose variables are manually imported off of the data presented by Revert's UI\r\n\r\nhttps://revert.finance/#/uniswap-position/mainnet/312741\r\n\r\nThe founder of Revert passed me along this draft documentation of their private API. This was current as of 12 July 2022, as such there may have been some changes introduced since. This will allow you to access the information in JSON format. \r\n\r\n[apidocs.md](https://github.com/ubiquity/uniswap-v3-liquidity-provider-indicator/files/9999366/apidocs.md)\r\n\r\n---\r\n\r\n# Research\r\n\r\nI would encourage you to explore workarounds.\r\n\r\n### Workaround Strategy A - API Reverse Engineering\r\n\r\nI would highly recommend API reverse engineering so that there is FAR LESS infrastructure to support for this capability. Then we could have a super simple node program that simply pings Revert (GET) and TradingView (POST) APIs every minute or so.\r\n\r\n### Workaround Strategy B - Scraper\r\n\r\nHave a remote invoked [scraper](http://github.com/ubiquity/scraper) to manually log in to your TradingView account, and\r\n\r\n1. pass in the updated parameters using the settings panel (this might be possible by directly making the API request to update the user's settings vs having to navigate through the UI) or \r\n2. to hardcode the parameters and update the PineScript code.\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/1/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/uniswap-v3-liquidity-provider-indicator/issues/1/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/339","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/339/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/339/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/339/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/339","id":2589415772,"node_id":"I_kwDOI-EJSM6aV1lc","number":339,"title":"Restore Clobbered Header Styles","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":5347112003,"node_id":"LA_kwDOI-EJSM8AAAABPrZ0Qw","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":""},{"id":7607987623,"node_id":"LA_kwDOI-EJSM8AAAABxXitpw","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Price:%206%20USD","name":"Price: 6 USD","color":"1f883d","default":false,"description":null},{"id":7607987625,"node_id":"LA_kwDOI-EJSM8AAAABxXitqQ","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Time:%20%3C15%20Minutes","name":"Time: <15 Minutes","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-10-15T17:24:32Z","updated_at":"2024-10-15T17:30:36Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Needs to be restored as my fixes were clobbered in pay.css at https://github.com/ubiquity/pay.ubq.fi/commit/84c49d8#diff-ac07c029a5c9ea7b89c95149341910381772e0a5d90f6470ca24d96ec55f2748\r\n\r\nCurrent incorrect header:\r\n\r\n![pay ubq fi__claim=W3sidHlwZSI6ImVyYzIwLXBlcm1pdCIsInBlcm1pdCI6eyJwZXJtaXR0ZWQiOnsidG9rZW4iOiIweGU5MUQxNTNFMGI0MTUxOEEyQ2U4RGQzRDc5NDRGYTg2MzQ2M2E5N2QiLCJhbW91bnQiOiI4NDkwMDAwMDAwMDAwMDAwMDAwIn0sIm5vbmNlIjoiNzY5NjUzNjc0NDQwNTQ3MzkwNTYzOTgwMT](https://github.com/user-attachments/assets/de6d5346-0c24-4a86-b29f-db44d15c8fa1)\r\n\r\n\r\nCorrect header: \r\n\r\n![694833ca pay-ubq-fi pages dev__claim=W3sidHlwZSI6ImVyYzIwLXBlcm1pdCIsInBlcm1pdCI6eyJwZXJtaXR0ZWQiOnsidG9rZW4iOiIweGU5MUQxNTNFMGI0MTUxOEEyQ2U4RGQzRDc5NDRGYTg2MzQ2M2E5N2QiLCJhbW91bnQiOiIwIn0sIm5vbmNlIjoiNTA3MjU2MTcyNzI2MzU2MTU0OTk1NjU0NDE0ODE](https://github.com/user-attachments/assets/cc5a9bf1-241f-4872-a3a0-ac8398574f66)\r\n\r\n\r\nhttps://694833ca.pay-ubq-fi.pages.dev/?claim=W3sidHlwZSI6ImVyYzIwLXBlcm1pdCIsInBlcm1pdCI6eyJwZXJtaXR0ZWQiOnsidG9rZW4iOiIweGU5MUQxNTNFMGI0MTUxOEEyQ2U4RGQzRDc5NDRGYTg2MzQ2M2E5N2QiLCJhbW91bnQiOiIwIn0sIm5vbmNlIjoiNTA3MjU2MTcyNzI2MzU2MTU0OTk1NjU0NDE0ODE0MDg1MDk0OTY4MTUwODI4MTcxMjQwNDM1NTUyNDAxMzM2ODYyNTM4MTUyNDM3NTQiLCJkZWFkbGluZSI6IjExNTc5MjA4OTIzNzMxNjE5NTQyMzU3MDk4NTAwODY4NzkwNzg1MzI2OTk4NDY2NTY0MDU2NDAzOTQ1NzU4NDAwNzkxMzEyOTYzOTkzNSJ9LCJ0cmFuc2ZlckRldGFpbHMiOnsidG8iOiIweGVmQzBlNzAxQTgyNDk0M2I0NjlhNjk0YUM1NjRBYTFlZkY3QWI3ZGQiLCJyZXF1ZXN0ZWRBbW91bnQiOiIwIn0sIm93bmVyIjoiMHhmMzlGZDZlNTFhYWQ4OEY2RjRjZTZhQjg4MjcyNzljZmZGYjkyMjY2Iiwic2lnbmF0dXJlIjoiMHg2ODJiYmVlOGNlMDg3Y2M0NGJlNzdkMjk0MzUyZjFhZGEzNWRlZGNmZWM1Yzk4NDE3ODg1MmI0ZTU2MmY1ZGUxMzQ0ZDljNTJlNWQ5M2FiZTEyNjBkOWYzMjU2N2I4YTA5YzY5OTEwZTM4MzFhMTkwMmY5MTE5ZTZiN2Q2ZDBhYTFjIiwibmV0d29ya0lkIjoxMDB9LHsidHlwZSI6ImVyYzIwLXBlcm1pdCIsInBlcm1pdCI6eyJwZXJtaXR0ZWQiOnsidG9rZW4iOiIweGU5MUQxNTNFMGI0MTUxOEEyQ2U4RGQzRDc5NDRGYTg2MzQ2M2E5N2QiLCJhbW91bnQiOiI5MDAwMDAwMDAwMDAwMDAwMDAwIn0sIm5vbmNlIjoiNDE3OTg2MDI4ODA3MjE5NTU4MDQ0MjcxNjAzNDY3NDM5MjA1MDkyMTU5MDk2MzkwNTcyODEyNDE5MTAxNTQzNTcxMTYwMDQyOTIzNSIsImRlYWRsaW5lIjoiMTE1NzkyMDg5MjM3MzE2MTk1NDIzNTcwOTg1MDA4Njg3OTA3ODUzMjY5OTg0NjY1NjQwNTY0MDM5NDU3NTg0MDA3OTEzMTI5NjM5OTM1In0sInRyYW5zZmVyRGV0YWlscyI6eyJ0byI6IjB4ZWZDMGU3MDFBODI0OTQzYjQ2OWE2OTRhQzU2NEFhMWVmRjdBYjdkZCIsInJlcXVlc3RlZEFtb3VudCI6IjkwMDAwMDAwMDAwMDAwMDAwMDAifSwib3duZXIiOiIweGYzOUZkNmU1MWFhZDg4RjZGNGNlNmFCODgyNzI3OWNmZkZiOTIyNjYiLCJzaWduYXR1cmUiOiIweDY4MmJiZWU4Y2UwODdjYzQ0YmU3N2QyOTQzNTJmMWFkYTM1ZGVkY2ZlYzVjOTg0MTc4ODUyYjRlNTYyZjVkZTEzNDRkOWM1MmU1ZDkzYWJlMTI2MGQ5ZjMyNTY3YjhhMDljNjk5MTBlMzgzMWExOTAyZjkxMTllNmI3ZDZkMGFhMWMiLCJuZXR3b3JrSWQiOjEwMH1d","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/339/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/339/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/305","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/305/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/305/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/305/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/305","id":2526554642,"node_id":"I_kwDOI-EJSM6WmCoS","number":305,"title":"RPC Handler","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-09-14T18:29:51Z","updated_at":"2024-09-14T18:30:04Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I don't know why you couldn't handle it in that pull but please address asap \n\n> I'd use the new single RPC provider method from the `rpc-handler` and use `networkId: \"1\"`. The reason why the single, is because mainnet has a lot of RPCs and there's no need for us to hit them all just for a single read op in my opinion.\n\n_Originally posted by @Keyrxng in https://github.com/ubiquity/pay.ubq.fi/pull/297#discussion_r1754236706_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/305/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/305/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/292","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/292/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/292/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/292/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/292","id":2510717284,"node_id":"I_kwDOI-EJSM6VpoFk","number":292,"title":"Add a style inversion script and bundle css in single file on build","user":{"login":"EresDev","id":11886219,"node_id":"MDQ6VXNlcjExODg2MjE5","avatar_url":"https://avatars.githubusercontent.com/u/11886219?v=4","gravatar_id":"","url":"https://api.github.com/users/EresDev","html_url":"https://github.com/EresDev","followers_url":"https://api.github.com/users/EresDev/followers","following_url":"https://api.github.com/users/EresDev/following{/other_user}","gists_url":"https://api.github.com/users/EresDev/gists{/gist_id}","starred_url":"https://api.github.com/users/EresDev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EresDev/subscriptions","organizations_url":"https://api.github.com/users/EresDev/orgs","repos_url":"https://api.github.com/users/EresDev/repos","events_url":"https://api.github.com/users/EresDev/events{/privacy}","received_events_url":"https://api.github.com/users/EresDev/received_events","type":"User","site_admin":false},"labels":[{"id":5347112003,"node_id":"LA_kwDOI-EJSM8AAAABPrZ0Qw","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":""},{"id":5574937316,"node_id":"LA_kwDOI-EJSM8AAAABTErK5A","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null},{"id":5831150872,"node_id":"LA_kwDOI-EJSM8AAAABW5BNGA","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-09-06T15:41:24Z","updated_at":"2024-09-30T12:28:25Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"reference: https://github.com/ubiquity/pay.ubq.fi/pull/277#discussion_r1739996098\r\n\r\nWe want to write css that is used for the dark theme by default. And the styling for the light theme should be generated automatically by a script on build. There is a [script](https://github.com/ubiquity/work.ubq.fi/blob/development/build/plugins/invert-colors.ts) that does similar work in `work.ubq.fi` repository. Don't hesitate to use it if it is helpful. \r\n\r\nWith this script, you will also have to refactor the existing CSS. \r\n\r\nCurrently, multiple CSS files exist for different purposes, e.g., light mode, gift card, rewards. It will be a good idea to bundle the CSS in a single CSS file on build so that the web page loads only one CSS file. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/292/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/292/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/291","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/291/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/291/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/291/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/291","id":2501478904,"node_id":"I_kwDOI-EJSM6VGYn4","number":291,"title":"Add retry mechanism for partially failed virtual card order","user":{"login":"EresDev","id":11886219,"node_id":"MDQ6VXNlcjExODg2MjE5","avatar_url":"https://avatars.githubusercontent.com/u/11886219?v=4","gravatar_id":"","url":"https://api.github.com/users/EresDev","html_url":"https://github.com/EresDev","followers_url":"https://api.github.com/users/EresDev/followers","following_url":"https://api.github.com/users/EresDev/following{/other_user}","gists_url":"https://api.github.com/users/EresDev/gists{/gist_id}","starred_url":"https://api.github.com/users/EresDev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EresDev/subscriptions","organizations_url":"https://api.github.com/users/EresDev/orgs","repos_url":"https://api.github.com/users/EresDev/repos","events_url":"https://api.github.com/users/EresDev/events{/privacy}","received_events_url":"https://api.github.com/users/EresDev/received_events","type":"User","site_admin":false},"labels":[{"id":5347112118,"node_id":"LA_kwDOI-EJSM8AAAABPrZ0tg","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":""},{"id":5831150944,"node_id":"LA_kwDOI-EJSM8AAAABW5BNYA","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Time:%20%3C4%20Hours","name":"Time: <4 Hours","color":"ededed","default":false,"description":null},{"id":6508028441,"node_id":"LA_kwDOI-EJSM8AAAABg-iiGQ","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Price:%20150%20USD","name":"Price: 150 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-09-02T19:06:45Z","updated_at":"2024-09-09T18:15:47Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"In the virtual card feature, we have two parts in a single transaction to mint a virtual card.\r\n\r\n1. Claim the permit by transferring the permit reward to the treasury wallet\r\n2. If the step-1 is successful, order the virtual card at Reloadly\r\n\r\nThe problem is that the transaction isn't atomic because each step happens in a different system. Step-2 can fail while still leaving the permit amount in the treasury. Why would step-2 fail? There could be one of the many reasons.\r\n\r\n- virtual card suddenly becoming out of stock\r\n- any network error on user side or Reloadly side\r\n- user closing browser before the permit transaction confirmation\r\n- change in the best picked card, suddenly a better card becomes available or currently picked card becomes unavailable\r\n- [RPC-handler](https://github.com/ubiquity/rpc-handler) failing to find rpc for backend to use, or if it finds one but the rpc stops working\r\n\r\nCurrently, the solution to this problem is manual. It is either a manual refund or manual resending of the card order request to `/post-order` with some parameters (productId, tx hash, country).\r\n\r\nWe can improve this by implementing one of the following solutions.\r\n- a manual refund can become automatic by issuing a new permit of the same amount\r\n- resend the mint request to backend to `/post-order`\r\n\r\nI am inclined towards resending the mint request. One problem is that `/post-order` needs the transaction hash of the permit transfer to the treasury. Sometimes you will have it, and you can store it in the cookies/local storage. But sometimes you will not have it and you will have to read it either from blockchain or ask the user to manually insert the transaction hash to retry minting. I think you can read it from blockchain by looking into [permit2 events](https://gnosisscan.io/address/0x000000000022d473030f116ddee9f6b43ac78ba3#events) \r\n\r\nThe goal of this issue is to implement a mechanism to resend the mint request or a better solution if you can think of one. \r\n\r\nSince the best-picked virtual card can change in this duration, a better option is to rename the mint button to \"Retry Mint\" and let the user click first so that user can see they are ordering a different card now. \r\n\r\nPlease note that the virtual cards feature is present in `beta` branch at the moment. But it can move to development branch anytime. So, keep an eye on that and open a PR accordingly.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/291/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/291/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/289","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/289/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/289/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/289/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/289","id":2491491906,"node_id":"I_kwDOI-EJSM6UgSZC","number":289,"title":"Generate rolled up payouts","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":5347111904,"node_id":"LA_kwDOI-EJSM8AAAABPrZz4A","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Time:%20%3C1%20Week","name":"Time: <1 Week","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":22,"created_at":"2024-08-28T08:57:47Z","updated_at":"2024-10-01T21:40:34Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Depends on https://github.com/ubiquibot/conversation-rewards/issues/64\r\n\r\n[This](https://github.com/ubiquibot/conversation-rewards/issues/64) issue adds the \"reward amount rollup\" feature which adds a new DB table `rewards`.\r\n\r\nOverall right now (when https://github.com/ubiquibot/conversation-rewards/issues/64 is solved) there are 2 tables related to contributors' rewards:\r\n1. `rewards`: matches a single github issue with a single user reward\r\n2. `permits`: stores generated accumulated rewards\r\n\r\nThe plan is to allow contributors to select the reward amount they want to redeem (either via permits either via gift cards).\r\n\r\nExample flow with permits:\r\n1. User solves an issue worth 10 WXDAI (permit is not generated, the `rewards` table has 1 DB entity).\r\n2. User solves another issue worth 20 WXDAI. (permit is not generated, at this point the `rewards` table has 2 entities)\r\n3. User opens `pay.ubq.fi`, selects 25 WXDAI to redeem and generates a single permit worth 25 WXDAI (a new entity is added to the `permits` table).\r\n4. User opens `pay.ubq.fi` again, selects 5 WXDAI to redeem and generates a single permit worth 5 WXDAI (a new entity is added to the `permits` table).\r\n5. User opens `pay.ubq.fi` again, selects 100 WXDAI to redeem and gets an error since there are no more funds available\r\n\r\nExample flow with gift cards:\r\n1. User solves an issue worth 10 WXDAI (the `rewards` table has 1 DB entity).\r\n2. User solves another issue worth 20 WXDAI. (at this point the `rewards` table has 2 entities)\r\n3. User opens `pay.ubq.fi`, selects 25 WXDAI to redeem and generates a new gift card worth 25 WXDAI (a new entity is added to the `gift_cards` table).\r\n4. User opens `pay.ubq.fi` again, selects 5 WXDAI to redeem and generates another gift card worth 5 WXDAI (a new entity is added to the `gift_cards` table).\r\n5. User opens `pay.ubq.fi` again, selects 100 WXDAI to redeem and gets an error since there are no more funds available\r\n\r\nSo as a part of this issue we should:\r\n1. Allow users to select available rewards amount (on the backend subtract the sum of redeemed permits and gift cards from total rewards stored in the `rewards` table).\r\n2. On gift card creation save it to a DB (to the newly added `gift_cards` table)\r\n3. On permit generation save it to a DB (to the `permits` table that already exists)\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/289/reactions","total_count":3,"+1":3,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/289/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/284","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/284/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/284/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/284/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/284","id":2479425235,"node_id":"I_kwDOI-EJSM6TyQbT","number":284,"title":"Update testing scripts","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[{"id":5347112003,"node_id":"LA_kwDOI-EJSM8AAAABPrZ0Qw","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":""},{"id":5379629267,"node_id":"LA_kwDOI-EJSM8AAAABQKag0w","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Price:%2025%20USD","name":"Price: 25 USD","color":"1f883d","default":false,"description":null},{"id":5831150872,"node_id":"LA_kwDOI-EJSM8AAAABW5BNGA","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-08-21T23:37:39Z","updated_at":"2024-08-22T01:03:33Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Requires #274\r\n\r\nThe linked PR introduces support for stacked permits and extends multi-network capabilities.\r\n\r\n**Proposed changes for streamlined testing:**\r\n\r\n- **Setup two Anvil instances:**\r\n - One targeting Gnosis (current setup).\r\n - Another targeting Ethereum.\r\n\r\n- **Configuration requirements:**\r\n - The new instance should operate on port `8546` with networkId `31338`.\r\n\r\n- **Funding script updates:**\r\n - Update the funding script to reflect the \"whale\" address as the updated \"WXDAI\" token holder for this network.\r\n - Set distinct approvals and balances compared to the first instance for clarity.\r\n\r\n- **Script adjustments:**\r\n - Eliminate `process.env` usage and hardcode necessary values to enhance clarity and prevent operational errors during script execution.\r\n\r\n- **Permit generation:**\r\n - Generate two permits from the original instance and one from the new instance, to avoid breaking old tests.\r\n\r\n- **Additional testing scripts:**\r\n - Introduce `test:anvil-eth` and `test:fund-eth` scripts, to be utilized only when testing this feature.\r\n\r\n- **RPC Handler Update:**\r\n - Implement a `NODE_ENV` check in `use-rpc-handler` to ensure compatibility:\r\n ```javascript\r\n return new ethers.providers.JsonRpcProvider(\r\n networkId === 31337 ? \"http://localhost:8545\" : \"http://localhost:8546\", networkId\r\n );\r\n ```\r\n This ensures the correct provider is returned since `31338` is not a supported network in the `rpcHandler` package\r\n\r\n##### time: 2 hours","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/284/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/284/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/271","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/271/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/271/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/271/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/271","id":2445781871,"node_id":"I_kwDOI-EJSM6Rx6tv","number":271,"title":"Unit tests for virtual cards backend","user":{"login":"EresDev","id":11886219,"node_id":"MDQ6VXNlcjExODg2MjE5","avatar_url":"https://avatars.githubusercontent.com/u/11886219?v=4","gravatar_id":"","url":"https://api.github.com/users/EresDev","html_url":"https://github.com/EresDev","followers_url":"https://api.github.com/users/EresDev/followers","following_url":"https://api.github.com/users/EresDev/following{/other_user}","gists_url":"https://api.github.com/users/EresDev/gists{/gist_id}","starred_url":"https://api.github.com/users/EresDev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EresDev/subscriptions","organizations_url":"https://api.github.com/users/EresDev/orgs","repos_url":"https://api.github.com/users/EresDev/repos","events_url":"https://api.github.com/users/EresDev/events{/privacy}","received_events_url":"https://api.github.com/users/EresDev/received_events","type":"User","site_admin":false},"labels":[{"id":5347111904,"node_id":"LA_kwDOI-EJSM8AAAABPrZz4A","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Time:%20%3C1%20Week","name":"Time: <1 Week","color":"ededed","default":false,"description":null},{"id":5347112068,"node_id":"LA_kwDOI-EJSM8AAAABPrZ0hA","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":""},{"id":6563954076,"node_id":"LA_kwDOI-EJSM8AAAABhz39nA","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Price:%20800%20USD","name":"Price: 800 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":13,"created_at":"2024-08-02T21:26:53Z","updated_at":"2024-09-10T05:15:47Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"The tests with this repository are e2e tests. That's how I started the virtual cards feature and used e2e tests. \r\nAs the feature is getting refined, I think it would be good idea to bring in unit tests for the backend functions. Cloudflare [recommends vitest](https://developers.cloudflare.com/workers/testing/vitest-integration/get-started/) because backend functions are Cloudflare pages function. Along with the general advantages of unit tests over e2e tests, I see following reasons to have them. \r\n\r\n- These tests will mock Reloadly, which e2e is not doing and the recent problem with their API slowed our progress.\r\n- Testing edge cases for the security of order placement will be easier \r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/271/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/271/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/252","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/252/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/252/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/252/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/252","id":2358275306,"node_id":"I_kwDOI-EJSM6MkGzq","number":252,"title":"Safe{Wallet} First Class Support on Gnosis Chain","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-06-17T21:17:01Z","updated_at":"2024-06-17T21:22:52Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"This solution isn't fully developed as it only works for a single chain, making it cumbersome for users if partners use different chains. Deploying a SAFE with the same address across multiple chains is challenging.\r\n\r\nHowever, by adding a special feature for Gnosis Chain, which sponsors up to five transactions per hour, we can enhance the user experience by eliminating gas fee concerns.\r\n\r\nThis approach addresses our issues related to creating a faucet.\r\n\r\n[More about gas fee sponsoring](https://help.safe.global/en/articles/59203-what-is-gas-fee-sponsoring)\r\n\r\n### An idea for seamless UX: \r\n\r\nThis may require generating a private signing key in browser, proposal [here](https://github.com/ubiquity/pay.ubq.fi/issues/219). Once the signing key has been added to the user's SAFE as an authorized signer, it should be able to prompt the SAFE that new transactions are waiting to be approved. This would work well on mobile due to the push notifications SAFE produces when a signature request occurs. \r\n\r\nAs for desktop I am not 100% sure.\r\n\r\nThe best part about this is that the gas fee will be sponsored, so the in browser signing key never has to hold any value. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/252/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":1,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/252/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/228","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/228/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/228/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/228/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/228","id":2321682172,"node_id":"I_kwDOI-EJSM6KYg78","number":228,"title":"Gnosis Pay Integration","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-05-28T18:29:57Z","updated_at":"2024-06-04T12:37:35Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Related https://github.com/ubiquity/pay.ubq.fi/pull/226\r\n\r\nI met the Gnosis Pay team at EthBerlin last week, and they reached back out expressing light interest in a partnership. I proposed that we can integrate Gnosis Pay card signups in our UI. The primary benefit of this from our perspective is: \r\n\r\n1. The end user experience can be superior with a single card vs needing to mint prepaid cards all the time.\r\n2. Relationship building with the Gnosis team for future collaboration. \r\n3. Can propose co-marketing (and ideally even piloting with our system) so that we can have more users. \r\n\r\nTo start, we can link users to the Gnosis Pay website for registration, and then potentially have the card details displayed on the rewards UI. We should have a \"claim to Gnosis Card\" button once the user's card is set up. \r\n\r\nWe can consider a separate page (separate UI code) to streamline the logic and ensure that Gnosis Pay users UI isn't co-mingled with the prepaid card logic. This can make the codebase more manageable as well. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/228/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/228/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/219","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/219/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/219/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/219/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/219","id":2237382475,"node_id":"I_kwDOI-EJSM6FW79L","number":219,"title":"research `EIP-4337` (account abstraction)","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-04-11T10:14:50Z","updated_at":"2024-04-13T07:26:50Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Research task for implementing AA\r\n\r\n# Current available options\r\n\r\n- https://github.com/ubiquity/pay.ubq.fi/issues/219#issuecomment-2049546074\r\n\r\n# High level overview of changes\r\n\r\n...\r\n\r\n# Breaking Changes introduced\r\n\r\n- Viem will definitely be a requirement\r\n\r\n_additional context_\r\n\r\n- https://github.com/ubiquity/pay.ubq.fi/issues/218#issuecomment-2049331282\r\n\r\n> I really dislike wallet connect, or any of the existing UX. I think modern web3/wallet UX is horrible. I would like to implement something different.\r\n\r\n> To be honest, in regards to innovation, I would prefer to figure a way for a user without a web3 enabled wallet to be able to claim. For example, generating an in-browser wallet based on some webauth API etc. They can use on-device biometrics as a type of seed key. There's even a way to share the biometric seed across all iCloud connected devices (I've done with with logging into Cloudflare, GitHub, from iPhone and Mac.\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquity/pay.ubq.fi/issues/218#issuecomment-2047117130_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/219/reactions","total_count":1,"+1":0,"-1":0,"laugh":1,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/219/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/196","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/196/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/196/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/196/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/196","id":2178269668,"node_id":"I_kwDOI-EJSM6B1cHk","number":196,"title":"Redo Carousel","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":5347111851,"node_id":"LA_kwDOI-EJSM8AAAABPrZzqw","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":5347112068,"node_id":"LA_kwDOI-EJSM8AAAABPrZ0hA","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":""},{"id":5831151032,"node_id":"LA_kwDOI-EJSM8AAAABW5BNuA","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Price:%20400%20USD","name":"Price: 400 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":35,"created_at":"2024-03-11T05:36:03Z","updated_at":"2024-10-14T13:29:49Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I think the aesthetics are not good with the carousel. \r\n\r\n\r\n\r\n![localhost_8080__claim=W3sidHlwZSI6ImVyYzIwLXBlcm1pdCIsInBlcm1pdCI6eyJwZXJtaXR0ZWQiOnsidG9rZW4iOiIweGU5MUQxNTNFMGI0MTUxOEEyQ2U4RGQzRDc5NDRGYTg2MzQ2M2E5N2QiLCJhbW91bnQiOiIwIn0sIm5vbmNlIjoiNzk2NDgxODQwMDA5MzQ0ODI4NzA0NjE0NjAzMDE2NDE5NzU4NTM0Nz](https://github.com/ubiquity/pay.ubq.fi/assets/4975670/5ec55e3d-80bc-4c7c-9620-a65fa198add6)\r\n\r\n\r\nInstead we should render all the permits vertically stacked all at once. Something like the following:\r\n\r\n![localhost_8080__claim=W3sidHlwZSI6ImVyYzIwLXBlcm1pdCIsInBlcm1pdCI6eyJwZXJtaXR0ZWQiOnsidG9rZW4iOiIweGU5MUQxNTNFMGI0MTUxOEEyQ2U4RGQzRDc5NDRGYTg2MzQ2M2E5N2QiLCJhbW91bnQiOiIwIn0sIm5vbmNlIjoiNzk2NDgxODQwMDA5MzQ0ODI4NzA0NjE0NjAzMDE2NDE5NzU4NT (1)](https://github.com/ubiquity/pay.ubq.fi/assets/4975670/ca63949d-0599-4f78-bbfd-a3d11ffa618c)\r\n\r\nI suspect that we will need to redo quite a bit of logic, as the app seems to be designed only to render one at a time.","closed_by":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/196/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/196/timeline","performed_via_github_app":null,"state_reason":"reopened"},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/174","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/174/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/174/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/174/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/174","id":2148459485,"node_id":"I_kwDOI-EJSM6ADuPd","number":174,"title":"Payouts v2","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":18,"created_at":"2024-02-22T08:03:39Z","updated_at":"2024-05-06T09:59:07Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We have plans to support:\r\n1. Payouts to crypto wallets (we use them already)\r\n2. Payouts to virtual and physical bank cards\r\n3. Redeeming NFT rewards \r\n\r\nIt makes sense to redo the `pay.ubq.fi` page into a \"single payouts dashboard\" from a collaborator's point of view.\r\n\r\nUser stories which we should support:\r\n1. As a contributor I want to connect a crypto wallet to have access to the payout dashboard\r\n2. As a contributor I want to see the rewards amount\r\n3. As a contributor I want to see a list of NFT rewards\r\n4. As a contributor I want to get rewards to a crypto wallet\r\n5. As a contributor I want to get rewards to a virtual card\r\n\r\nThis is a draft wireframe: https://www.figma.com/file/vdjASBTDbYBFmL7CtAYXwM/Payouts-v2?type=whiteboard&node-id=0%3A1&t=uWa3OMqLSCoOvkDG-1\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/174/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/174/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/118","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/118/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/118/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/118/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/118","id":1845198806,"node_id":"I_kwDOI-EJSM5t-3_W","number":118,"title":"Relayer Support: Set Up Relayer Backend","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2023-08-10T13:31:03Z","updated_at":"2024-02-21T23:33:06Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"- So we can claim permits on behalf of users directly. \r\n- Or simulate that by invalidating the permit and doing a direct transfer to their wallet.\r\n\r\nWe must figure out how to calculate the fees so that the dynamic gas fee will always be covered, plus a profit.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/118/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/118/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/117","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/117/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/117/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/117/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/117","id":1845198711,"node_id":"I_kwDOI-EJSM5t-393","number":117,"title":"Relayer Support: Edit UI","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2023-08-10T13:31:00Z","updated_at":"2024-02-21T08:26:02Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"- [ ] Check if no wallet is connected\r\n- [ ] Display claim button always now\r\n- [ ] If wallet not connected then when user clicks a toaster should explain: \r\n - That they can connect their wallet and claim directly, which only will cost them gas fees. \r\n - Warn user about x% fee to use the Ubiquity relayer service. \r\n- [ ] User clicks button and relayer handles the claim. \r\n\r\nWe need to figure out how to calculate the total relayer cost because it must cover dynamic gas fees.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/117/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/117/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/116","repository_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/116/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/116/comments","events_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/116/events","html_url":"https://github.com/ubiquity/pay.ubq.fi/issues/116","id":1845191711,"node_id":"I_kwDOI-EJSM5t-2Qf","number":116,"title":"Payment Permit Relayer","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":5347111904,"node_id":"LA_kwDOI-EJSM8AAAABPrZz4A","url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Time:%20%3C1%20Week","name":"Time: <1 Week","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2023-08-10T13:27:03Z","updated_at":"2023-11-16T23:53:36Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I was looking at my permit claim on my phone and realized that it would be really convenient if I could claim from my phone browser which does NOT have web3 wallet support. \r\n\r\n- Let's set up a relayer that will allow users to claim their permits if they click claim without a wallet. \r\n- In case we can't execute the claim on their behalf directly, we can simulate it by invalidating the permit, and then transferring the DAI to them? Although I hope we can just execute the claim directly on their behalf. \r\n- The relayer should take a configurable fee. Let's say 1% to start. \r\n- [Reference claim](https://pay.ubq.fi/?claim=eyJwZXJtaXQiOnsicGVybWl0dGVkIjp7InRva2VuIjoiMHhlOTFEMTUzRTBiNDE1MThBMkNlOERkM0Q3OTQ0RmE4NjM0NjNhOTdkIiwiYW1vdW50IjoiNTYyNTAwMDAwMDAwMDAwMDAwMDAifSwibm9uY2UiOiI0NDAxODcxODUzMDE2Mzc5NjQ4MzU3NzczMTY3MDM2MTc1MDUyMDMwMTUyMzU0OTU4MTg5MTA3MDkxMzg1NDA1NTczMzE0NDcwNDEwNyIsImRlYWRsaW5lIjoiMTE1NzkyMDg5MjM3MzE2MTk1NDIzNTcwOTg1MDA4Njg3OTA3ODUzMjY5OTg0NjY1NjQwNTY0MDM5NDU3NTg0MDA3OTEzMTI5NjM5OTM1In0sInRyYW5zZmVyRGV0YWlscyI6eyJ0byI6IjB4NDAwN0NFMjA4M2M3RjNFMTgwOTdhZUIzQTM5YmI4ZUMxNDlhMzQxZCIsInJlcXVlc3RlZEFtb3VudCI6IjU2MjUwMDAwMDAwMDAwMDAwMDAwIn0sIm93bmVyIjoiMHhmODdjYTQ1ODNDNzkyMjEyZTUyNzIwZDEyN0U3RTBBMzhCODE4YUQxIiwic2lnbmF0dXJlIjoiMHhlMmRmNzhkYzJmYmVlMTZmZDU3ZTQ4Yzc0OGNlNDBiZGI2MGYwYWU1ZDQ5YzE0ODJhMWI5ZmUxY2EzODY1MGNhMjZlZjc5OWM5NjcxNDhkYWQ2MDBlMjY2MDg4NTVlZTdmYmViMzU5NDE4MzA4MDIwNWFjNmZlMjg3ZDQzZGIxMjFjIn0=&network=100).\r\n---\r\n- [ ] #117\r\n- [ ] #118","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/116/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/116/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ts-template/issues/67","repository_url":"https://api.github.com/repos/ubiquity/ts-template","labels_url":"https://api.github.com/repos/ubiquity/ts-template/issues/67/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ts-template/issues/67/comments","events_url":"https://api.github.com/repos/ubiquity/ts-template/issues/67/events","html_url":"https://github.com/ubiquity/ts-template/issues/67","id":2588143158,"node_id":"I_kwDOJGfp8c6aQ-42","number":67,"title":"Use js frontend framework","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":12,"created_at":"2024-10-15T09:14:37Z","updated_at":"2024-10-15T20:31:24Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"This is the 4th or 5th time the topic is discussed. Right now we don't use any JS framework for our frontend applications. Although this approach is probably fine for small scale apps it doesn't stand against frontend apps with a large codebase.\r\n\r\nCheck https://github.com/ubiquity/pay.ubq.fi/tree/development/static for example, which already became kind of a mess because it's hard to distinguish separate pages, separate components, render methods, utils, etc... Not to mention that unit/snapshort/e2e testing is complicated in such codebase.\r\n\r\nWe need a JS framework with these features:\r\n- it should take 1 hour to grasp the docs\r\n- popular\r\n- good for small scale apps\r\n- team members and contributors should be comfortable to use it\r\n\r\nI've personally heard good reviews about:\r\n- https://preactjs.com/\r\n- https://alpinejs.dev/\r\n\r\nSince I personally have more experience with react then, perhaps, https://preactjs.com/ worth a shot.\r\n\r\nSo as a part of this issue we should refactor https://github.com/ubiquity/ts-template to use a selected JS framework in a **structured** way:\r\n- pages\r\n- components\r\n- services\r\n- store\r\n- utils\r\n- test\r\n- etc...","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ts-template/issues/67/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ts-template/issues/67/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ts-template/issues/61","repository_url":"https://api.github.com/repos/ubiquity/ts-template","labels_url":"https://api.github.com/repos/ubiquity/ts-template/issues/61/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ts-template/issues/61/comments","events_url":"https://api.github.com/repos/ubiquity/ts-template/issues/61/events","html_url":"https://github.com/ubiquity/ts-template/issues/61","id":2565894806,"node_id":"I_kwDOJGfp8c6Y8HKW","number":61,"title":"Automatic sync v2","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":5440623867,"node_id":"LA_kwDOJGfp8c8AAAABRElU-w","url":"https://api.github.com/repos/ubiquity/ts-template/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":6498575088,"node_id":"LA_kwDOJGfp8c8AAAABg1hi8A","url":"https://api.github.com/repos/ubiquity/ts-template/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":7519278198,"node_id":"LA_kwDOJGfp8c8AAAABwC8Udg","url":"https://api.github.com/repos/ubiquity/ts-template/labels/Price:%20400%20USD","name":"Price: 400 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":19,"created_at":"2024-10-04T09:21:28Z","updated_at":"2024-10-14T17:01:57Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"[This](https://github.com/ubiquity/ts-template/pull/56) PR introduced a [workflow](https://github.com/zyrafal/ts-template/blob/89b942ed3a2d87c00f2bf61057586e0ead5119d3/.github/workflows/sync-template.yml) for syncing https://github.com/ubiquity/ts-template repository template with all of our other repositories.\r\n\r\nThere are a couple of issues:\r\n1. It doesn't work as expected. Check [this](https://github.com/ubiquity/work.ubq.fi/pull/101) PR for example which:\r\n a) [Clears](https://github.com/ubiquity/work.ubq.fi/pull/101/files#diff-3e8602c86d6cf04a5c74b954f9f957b652617102cf8f4b647fe46989f480861d) the main page\r\n b) [Removes](https://github.com/ubiquity/work.ubq.fi/pull/101/files#diff-7ae45ad102eab3b6d7e7896acd08c427a9b25b346470d7bc6507b6481575d519) required dependencies\r\n2. For \"auto sync\" to work we need to keep the [sync-template.yml](https://github.com/ubiquity/audit.ubq.fi/blob/205cc736abac8019debc28ab2d4a2d21344d3cef/.github/workflows/sync-template.yml) in all of our repositories\r\n\r\n\"Auto sync\" may be useful for small changes like CI updates, ts config edits, etc... [Such](https://github.com/ubiquity/work.ubq.fi/pull/101) PRs introduce too many changes which are hard to debug and fix.\r\n\r\nWhat should be done:\r\n1. Remove [sync-template.yml](https://github.com/ubiquity/ts-template/blob/858ab74ead68d8954a8e32074c9b0eb805c5b6ca/.github/workflows/sync-template.yml) from all of our repositories and keep it only in a single place like https://github.com/ubiquity/.github\r\n2. Refactor [sync-template.yml](https://github.com/ubiquity/ts-template/blob/858ab74ead68d8954a8e32074c9b0eb805c5b6ca/.github/workflows/sync-template.yml) to sync **only whitelisted files** (like `deploy.yml` or `tsconfig.json`) with the following strategy:\r\n - `ts-template`: file added, `target-repo`: file missing => propose adding a file\r\n - `ts-template`: file modified, `target-repo`: file exists => propose change\r\n - `ts-template`: file deleted, `target-repo`: file exists => propose delete\r\n\r\nP.S. For authentication you may use github PAT of this user https://github.com/ubiquity-devpool","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ts-template/issues/61/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ts-template/issues/61/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/45","repository_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties","labels_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/45/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/45/comments","events_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/45/events","html_url":"https://github.com/ubiquity/devpool-directory-bounties/issues/45","id":2572156857,"node_id":"I_kwDOJhaJks6ZT_-5","number":45,"title":"Fork Linkback Fix","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":5487930438,"node_id":"LA_kwDOJhaJks8AAAABRxssRg","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Priority:%204%20(Urgent)","name":"Priority: 4 (Urgent)","color":"ededed","default":false,"description":""},{"id":7573228815,"node_id":"LA_kwDOJhaJks8AAAABw2ZNDw","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Time:%20%3C15%20Minutes","name":"Time: <15 Minutes","color":"ededed","default":false,"description":null},{"id":7573228821,"node_id":"LA_kwDOJhaJks8AAAABw2ZNFQ","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Price:%2024%20USD","name":"Price: 24 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2024-10-08T05:52:57Z","updated_at":"2024-10-08T17:25:45Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"\r\n> Yes but to clarify this used to work as expected. The problem now is that it seems when the task is assigned and unassigned, it links back even on forks.\r\n\r\nSo the issue is:\r\n1. New devpool issue is created\r\n2. Fork of https://github.com/ubiquity/devpool-directory creates a new issue with `www` prefix (which is expected) in order not to reference (i.e. spam) the original issue ([example](https://github.com/jordan-ae/devpool-directory/issues/1025))\r\n3. Devpool issue is closed because somebody was assigned\r\n4. Devpool issue is reopened because somebody was unassigned\r\n5. Now the forked issue displays github issue URL without the `www` prefix (while expected behavior to display URL with the `www` prefix) thus spamming original issue ([example](https://github.com/jordan-ae/devpool-directory/issues/867))\r\n\r\n---\r\n\r\nhttps://github.com/jordan-ae/devpool-directory/issues/867\r\n\r\nWhen it is reopened, it writes the non `www.` prefixed link to the issue, which \"references\" the original issue which appears as spam \r\n\r\n\r\n\r\n![github com_ubiquity_ubiquity-dollar_issues_937](https://github.com/user-attachments/assets/fc1a3abd-c9a7-4588-b966-8e90995875de)\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/45/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/45/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/44","repository_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties","labels_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/44/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/44/comments","events_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/44/events","html_url":"https://github.com/ubiquity/devpool-directory-bounties/issues/44","id":2556872979,"node_id":"I_kwDOJhaJks6YZskT","number":44,"title":"Improve/Fix Jest Tests","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":5487930294,"node_id":"LA_kwDOJhaJks8AAAABRxsrtg","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":""},{"id":5905387945,"node_id":"LA_kwDOJhaJks8AAAABX_0RqQ","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Time:%20%3C4%20Hours","name":"Time: <4 Hours","color":"ededed","default":false,"description":null},{"id":6474952418,"node_id":"LA_kwDOJhaJks8AAAABge_u4g","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Price:%20200%20USD","name":"Price: 200 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-09-30T14:32:42Z","updated_at":"2024-09-30T15:13:35Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I broke them and we need to get them fixed. More tests are a plus!","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/44/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/44/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/42","repository_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties","labels_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/42/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/42/comments","events_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/42/events","html_url":"https://github.com/ubiquity/devpool-directory-bounties/issues/42","id":2540596143,"node_id":"I_kwDOJhaJks6Xbmuv","number":42,"title":"ID and Partner label mismatch","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[{"id":5487930368,"node_id":"LA_kwDOJhaJks8AAAABRxssAA","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-09-22T01:54:43Z","updated_at":"2024-10-08T16:04:14Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"So it seems that when an issue is transferred to another repository or organization that the issue takes on a new `node_id` so we must update our logic to handle out-of-sync labels.\r\n\r\nWe should also aim to remove any partner issues that have been deleted (I assume) but still exist within the devpool as they can belong to repos that have been deleted.\r\n\r\nSince we already have the `IssueRemover` class we can borrow it and delete any erroneous tasks before we perform any state changes.\r\n\r\nI think we should also delete any devpool issues that's body does not match the typical url formatting standard.\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/42/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/42/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/41","repository_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties","labels_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/41/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/41/comments","events_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/41/events","html_url":"https://github.com/ubiquity/devpool-directory-bounties/issues/41","id":2540391615,"node_id":"I_kwDOJhaJks6Xa0y_","number":41,"title":"Refactor Statistics","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-09-21T16:25:44Z","updated_at":"2024-10-08T16:00:26Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Related to #27 \r\n\r\nRight now the statistics are based on the collection of issues within the devpool. The `Unavailable` label is pretty central to how things are currently calculated\r\n\r\n```ts\r\n// devpool issue has unavailable label because it's assigned and so it's closed\r\nconst isAssigned = labels.find((label) => (label.name as string).includes(LABELS.UNAVAILABLE)) && issue.state === \"closed\";\r\n// devpool issue doesn't have unavailable label because it's unassigned and closed so it's merged therefore completed\r\nconst isCompleted = !labels.some((label) => (label.name as string).includes(LABELS.UNAVAILABLE)) && issue.state === \"closed\";\r\n```\r\n\r\nThe logic of the devpool dictates that any partner-assigned task will be closed upon assignment and only re-opened if it's priced and unassigned. Without the `Unavailable` label to indicate this for us we have a couple of options:\r\n\r\n- We could close devpool issues as `not_planned` while they are assigned instead, closing as `complete` once paid out.\r\n- We could simply use the partner issues. My approach builds a partner project Map on entry and we pass that to stats etc.\r\n\r\nSome problems with those approaches:\r\n\r\n- We'd need to author a script to update all devpool issues open and closed. Some issues remain assigned even after completion so we'd need to include additional logic to account for this.\r\n- Partner issue is obv a good source of data but it's in the partner' hands not ours. If they racked up 50k worth of stats and then deleted their org or nuked all of their issues/repos etc we'd lose a chunk of our stats.\r\n\r\nI think the best approach is to use the partner tasks directly although it comes with strings:\r\n\r\n- We persist our data better. Like a snapshot each month and store a timeline of stats which in the case of the above scenario we can recover easily. (Yeah we have git commit history but with 24 commits a day I don't think it's ideal. Plus with any changes to how stats etc are calculated it's far easier to audit.)\r\n- Use a combination of partner tasks and our devpool issues to validate `open/assigned/completed`\r\n\r\n---\r\n\r\nThe Stats themselves, big numbers and all that ;) but we have some grey areas I think. So we capture `open, assigned, completed` and we also have a bunch of repos excluded. \r\n\r\n- Should we exclude those same repos from all stat calculations or they should be added to the total only?\r\n- Tasks which are re-opened, should they be considered to be completed since it's been paid out or should they fall into `open/assigned`?\r\n- `completed` is considered to be what? partner task closed as `completed` and is currently closed (may not have a PR associated so we should not rely on that as a check)\r\n- Should we capture `reopened` or another similar category? (internal audit likes this)\r\n\r\n##### I'm refactoring tests for this right now and will PR soon","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/41/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/41/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/32","repository_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties","labels_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/32/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/32/comments","events_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/32/events","html_url":"https://github.com/ubiquity/devpool-directory-bounties/issues/32","id":2473769509,"node_id":"I_kwDOJhaJks6Tcrol","number":32,"title":"Close issues from archived repositories","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":5487929719,"node_id":"LA_kwDOJhaJks8AAAABRxspdw","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":5487930171,"node_id":"LA_kwDOJhaJks8AAAABRxsrOw","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":""},{"id":6563600031,"node_id":"LA_kwDOJhaJks8AAAABhziWnw","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Price:%2025%20USD","name":"Price: 25 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":6,"created_at":"2024-08-19T16:42:04Z","updated_at":"2024-09-30T12:29:53Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"There may be cases when issue exists in an archived repository (i.e. read only) so issues can't be self assigned there although all issue labels would be totally valid.\r\n\r\nWhat should be done:\r\n- if project issue exists in an archived partner's repository then the bot should close such issue\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/32/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":1},"timeline_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/32/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/25","repository_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties","labels_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/25/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/25/comments","events_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/25/events","html_url":"https://github.com/ubiquity/devpool-directory-bounties/issues/25","id":2300221547,"node_id":"I_kwDOJhaJks6JGphr","number":25,"title":"Sync code between `ubiquity/devpool-directory` and `ubiquity/devpool-directory-private`","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":5487929065,"node_id":"LA_kwDOJhaJks8AAAABRxsm6Q","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":5487930171,"node_id":"LA_kwDOJhaJks8AAAABRxsrOw","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":""},{"id":6474952418,"node_id":"LA_kwDOJhaJks8AAAABge_u4g","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Price:%20200%20USD","name":"Price: 200 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2024-05-16T12:04:32Z","updated_at":"2024-06-04T05:13:00Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"There are 2 repositories which collect issues available for contributors:\r\n1. https://github.com/ubiquity/devpool-directory: Public repo, any contributor can take issue there\r\n2. https://github.com/ubiquity/devpool-directory-private: Private repo, only core contributors can take issues there since that repo issues may contain sensitive/NDA data\r\n\r\nThe issue is that we somehow need to sync code changes between https://github.com/ubiquity/devpool-directory and https://github.com/ubiquity/devpool-directory-private. We can't simply fork https://github.com/ubiquity/devpool-directory-private from https://github.com/ubiquity/devpool-directory and use github UI since private repos can't be synced.\r\n\r\nWhat should be done:\r\n- when a new code change is introduced in https://github.com/ubiquity/devpool-directory then this code change should also appear in https://github.com/ubiquity/devpool-directory-private\r\n\r\nPossible solution described [here](https://github.com/ubiquity/work.ubq.fi/issues/2#issuecomment-2019912818)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/25/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/25/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/43","repository_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties","labels_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/43/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/43/comments","events_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/43/events","html_url":"https://github.com/ubiquity/devpool-directory-bounties/issues/43","id":2555893024,"node_id":"I_kwDOJhaJks6YV9Ug","number":43,"title":"@UbiquityDevPool Retweet Perpetual Bounty","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":5487929065,"node_id":"LA_kwDOJhaJks8AAAABRxsm6Q","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":5487930294,"node_id":"LA_kwDOJhaJks8AAAABRxsrtg","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":""},{"id":7045998297,"node_id":"LA_kwDOJhaJks8AAAABo_lm2Q","url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/labels/Price:%20400%20USD","name":"Price: 400 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2024-03-07T10:38:03Z","updated_at":"2024-10-08T15:27:43Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I did a quick search and couldn't find a tool that will allow me to do the following in perpetuity: \n\nIt would be really interesting to incentivize people to [retweet DevPool tasks](https://x.com/ubiquitydevpool/status/1765366994746937535?s=46&t=bdMjuqzO5LYxLUsloRROxQ). \n\nIn order to do this optimally, we can design the pay scheme based on what is [optimal according to the Twitter algorithm](https://x.com/alexfinnx/status/1758910031003586731?s=46&t=bdMjuqzO5LYxLUsloRROxQ). \n\n### Follower Count\n\n> You want your following to be max 60% of your followers\n\nWe can check for this, and then we can pay based on follower count. For example mine is 776, so if I had the correct ratio (I don't) I could get paid 7.76 xDAI up to once a week for retweeting. \n\nThen people like [my friend with 183.8k followers](https://x.com/eth_apple?s=21&t=bdMjuqzO5LYxLUsloRROxQ) could get paid up to 1,838 xDAI per week etc. \n\n### View Count\n\nI see some of his posts get around 800 views and some get like 27k views. Perhaps it's smarter to pay based on views (we can probably get this from the API)\n\nMaybe we can value a view at 0.05 xDAI or something.\n\n### Architecture\n\nI'm unsure what the simplest implementation looks like, but we could probably start semi manually and figure it out from there. \n\nMaybe a minimal UI that lists the Twitter handle of the retweeters of the previous month, and calculates the rewards next to them.\n\nWe need to monitor our tweets for retweets. For the first step we can manually handle payouts. Later if we get traction we can automate with permit payments. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/43/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/devpool-directory-bounties/issues/43/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/ubiquibot-logging/issues/10","repository_url":"https://api.github.com/repos/ubiquity/ubiquibot-logging","labels_url":"https://api.github.com/repos/ubiquity/ubiquibot-logging/issues/10/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/ubiquibot-logging/issues/10/comments","events_url":"https://api.github.com/repos/ubiquity/ubiquibot-logging/issues/10/events","html_url":"https://github.com/ubiquity/ubiquibot-logging/issues/10","id":1949021260,"node_id":"I_kwDOKRrzaM50K7RM","number":10,"title":"Apply new logs schema","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2023-10-18T07:13:16Z","updated_at":"2023-10-18T07:13:16Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Depends on https://github.com/ubiquity/ubiquibot/pull/644\r\n\r\nThis [PR](https://github.com/ubiquity/ubiquibot/pull/644) introduces updates to the `logs` table schema which should be reflected in the logging frontend app.\r\n\r\nNew logs schema [reference](https://github.com/ubiquity/ubiquibot/blob/0fa52534448a1c215b7366859c499f2e224e4cde/src/adapters/supabase/types/database.ts#L211)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/ubiquibot-logging/issues/10/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/ubiquibot-logging/issues/10/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/faucet/issues/3","repository_url":"https://api.github.com/repos/ubiquity/faucet","labels_url":"https://api.github.com/repos/ubiquity/faucet/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/faucet/issues/3/comments","events_url":"https://api.github.com/repos/ubiquity/faucet/issues/3/events","html_url":"https://github.com/ubiquity/faucet/issues/3","id":2001567048,"node_id":"I_kwDOKsAUgM53TX1I","number":3,"title":"Auto deploy to production","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2023-11-20T07:48:50Z","updated_at":"2023-11-20T07:48:50Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"This is a core team's task.\r\n\r\nOn any push to the `main` branch we should update the production instance of the faucet cloudflare worker.\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/faucet/issues/3/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/faucet/issues/3/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/122","repository_url":"https://api.github.com/repos/ubiquity/work.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/122/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/122/comments","events_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/122/events","html_url":"https://github.com/ubiquity/work.ubq.fi/issues/122","id":2580320068,"node_id":"I_kwDOKzVPS86ZzI9E","number":122,"title":"Add text filter query to URL and filter on render","user":{"login":"zugdev","id":155616000,"node_id":"U_kgDOCUaDAA","avatar_url":"https://avatars.githubusercontent.com/u/155616000?v=4","gravatar_id":"","url":"https://api.github.com/users/zugdev","html_url":"https://github.com/zugdev","followers_url":"https://api.github.com/users/zugdev/followers","following_url":"https://api.github.com/users/zugdev/following{/other_user}","gists_url":"https://api.github.com/users/zugdev/gists{/gist_id}","starred_url":"https://api.github.com/users/zugdev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zugdev/subscriptions","organizations_url":"https://api.github.com/users/zugdev/orgs","repos_url":"https://api.github.com/users/zugdev/repos","events_url":"https://api.github.com/users/zugdev/events{/privacy}","received_events_url":"https://api.github.com/users/zugdev/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":6,"created_at":"2024-10-11T03:02:37Z","updated_at":"2024-10-11T14:45:15Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"We should add a parameter to the URL according to the current \"Text Filter\" component's state. This will allow for people to share specific issues, organizations and repos. An example of how this could look is: `https://devpool.directory/?q=ubiquity-os-marketplace` where on page load a checker function should be called to set the text filter to be `ubiquity-os-marketplace` from the URL. The filter's state should be made persistent which it currently is not, this means that toggling between directory and proposals should keep the filter on.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/122/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/122/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/119","repository_url":"https://api.github.com/repos/ubiquity/work.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/119/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/119/comments","events_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/119/events","html_url":"https://github.com/ubiquity/work.ubq.fi/issues/119","id":2577778872,"node_id":"I_kwDOKzVPS86Zpci4","number":119,"title":"Client Side Embeddings Search","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6445149856,"node_id":"LA_kwDOKzVPS88AAAABgCkuoA","url":"https://api.github.com/repos/ubiquity/work.ubq.fi/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-10-10T06:35:59Z","updated_at":"2024-10-10T06:36:49Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"\r\n\r\nPerhaps we can improve our search experience by:\r\n1. Loading in all the vector embeddings of every issue and associated comments from our database\r\n2. Run the similarity search (i.e. cosine) to rank sort the most relevant issue\r\n\r\nIf performance is bad running all of these calculations, we can compile to wasm potentially. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/119/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/119/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/118","repository_url":"https://api.github.com/repos/ubiquity/work.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/118/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/118/comments","events_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/118/events","html_url":"https://github.com/ubiquity/work.ubq.fi/issues/118","id":2577012090,"node_id":"I_kwDOKzVPS86ZmhV6","number":118,"title":"Deep Links","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6445149632,"node_id":"LA_kwDOKzVPS88AAAABgCktwA","url":"https://api.github.com/repos/ubiquity/work.ubq.fi/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":6445149856,"node_id":"LA_kwDOKzVPS88AAAABgCkuoA","url":"https://api.github.com/repos/ubiquity/work.ubq.fi/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":6684609131,"node_id":"LA_kwDOKzVPS88AAAABjm8Kaw","url":"https://api.github.com/repos/ubiquity/work.ubq.fi/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":20,"created_at":"2024-10-09T21:40:19Z","updated_at":"2024-10-14T20:47:11Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"- We should push and pop browser history when opening issues. \r\n- We need to account for proposals and for tasks. \r\n- We need to automatically open the task/proposal when the page is loaded with the url representing it. Maybe a # in the URL with the issue ID will be sufficient.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/118/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/118/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/117","repository_url":"https://api.github.com/repos/ubiquity/work.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/117/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/117/comments","events_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/117/events","html_url":"https://github.com/ubiquity/work.ubq.fi/issues/117","id":2577000127,"node_id":"I_kwDOKzVPS86Zmea_","number":117,"title":"Notifications View/Filters","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2024-10-09T21:33:34Z","updated_at":"2024-10-15T11:31:51Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"## Remarks\r\n\r\nI'm still debating if we should consolidate all \"list like\" UIs on here, but I'm optimistic it could make sense to (like leaderboards as well.) If we include all these UIs here, it may make sense to rebrand to os.ubq.fi. Also the title bar from DevPool Directory to UbiquityOS: \r\n- Directory\r\n- Proposals\r\n- Notifications\r\n- XP Leaderboard \r\n\r\n## Overview\r\n\r\nAs activity continues to pick up and my notifications become slower to get through, it would be useful to make a simple ui that allows for more intelligent notification filtering. \r\n\r\n### Prioritization Sorting Algorithm\r\n\r\n- We need to detect the priority level of the task the notification is associated with.\r\n - If the notification is not associated with a task, consider not showing it on this view at all. \r\n - If the notification is a pull request, it must be linked to a task with a priority label.\r\n- Reverse chronological order, meaning that neglected/old notifications should appear higher than new ones. \r\n- Top of list is highest priority, then work your way down to low priority. \r\n\r\n### Blocking Tasks\r\n\r\nIf it thinks without my input the task is blocked, it's a higher priority notification.\r\n- Linkbacks: if the notification is associated with a task with many linkbacks then it should be considered higher priority, it usually means its blocking other pulls/tasks\r\n\r\n\r\nPerhaps we could have an AI layer on top one day to summarize and/or reorder notifications from most important to least.\r\n\r\n### Remarks\r\n- Always exclude draft pulls.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/117/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/117/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/103","repository_url":"https://api.github.com/repos/ubiquity/work.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/103/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/103/comments","events_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/103/events","html_url":"https://github.com/ubiquity/work.ubq.fi/issues/103","id":2563336259,"node_id":"I_kwDOKzVPS86YyWhD","number":103,"title":"Task Gating & Filtered Task Display on UI","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6445149899,"node_id":"LA_kwDOKzVPS88AAAABgCkuyw","url":"https://api.github.com/repos/ubiquity/work.ubq.fi/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-10-03T07:33:37Z","updated_at":"2024-10-05T05:06:57Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"When this is implemented, we should detect if the user is a collaborator and then only display what they are eligible to start on: \r\n- https://github.com/ubiquity-os-marketplace/command-start-stop/issues/62\r\n\r\nI think increasing coupling between this plugin and this UI is fine because otherwise it is not possible for external DAO contributors to work on tasks. I can't think of another way around this. \r\n\r\n1. Check if they are a collaborator of the org\r\n2. If they are not, we need to parse the settings, possibly by exposing an API[^1^]\r\n3. Filter out the tasks they are not eligible for from the UI. \r\n\r\n\r\n[^1^]: We can make a new endpoint on `command-start-stop` worker endpoint to POST an array of repository IDs (because this can be configured down to the repository level) and then read the config. Is this possible to read the repository configs from a plugin endpoint? Also should we use GET with a header for caching purposes?","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/103/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/103/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/90","repository_url":"https://api.github.com/repos/ubiquity/work.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/90/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/90/comments","events_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/90/events","html_url":"https://github.com/ubiquity/work.ubq.fi/issues/90","id":2535210264,"node_id":"I_kwDOKzVPS86XHD0Y","number":90,"title":"Progressive Web App","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6445149748,"node_id":"LA_kwDOKzVPS88AAAABgCkuNA","url":"https://api.github.com/repos/ubiquity/work.ubq.fi/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":6445149856,"node_id":"LA_kwDOKzVPS88AAAABgCkuoA","url":"https://api.github.com/repos/ubiquity/work.ubq.fi/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":6491155094,"node_id":"LA_kwDOKzVPS88AAAABgucqlg","url":"https://api.github.com/repos/ubiquity/work.ubq.fi/labels/Price:%20400%20USD","name":"Price: 400 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":12,"created_at":"2024-09-19T03:44:32Z","updated_at":"2024-10-14T13:29:57Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"At this conference, there were several instances where I had bad signal, and I generally like to pitch by showing this interface. \n\nThe problem is that it loads the issues after you load the page so it takes a moment and I'm staring at an empty screen essentially.\n\nTurning this into a progressive Web app should allow us to instantly load the cached issues, even when off-line or disconnected","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/90/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/90/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/45","repository_url":"https://api.github.com/repos/ubiquity/work.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/45/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/45/comments","events_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/45/events","html_url":"https://github.com/ubiquity/work.ubq.fi/issues/45","id":2261246810,"node_id":"I_kwDOKzVPS86Gx-Na","number":45,"title":"Contributor leaderboard","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[{"id":6445149748,"node_id":"LA_kwDOKzVPS88AAAABgCkuNA","url":"https://api.github.com/repos/ubiquity/work.ubq.fi/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":6445149844,"node_id":"LA_kwDOKzVPS88AAAABgCkulA","url":"https://api.github.com/repos/ubiquity/work.ubq.fi/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":6615702049,"node_id":"LA_kwDOKzVPS88AAAABilOaIQ","url":"https://api.github.com/repos/ubiquity/work.ubq.fi/labels/Price:%20200%20USD","name":"Price: 200 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":6,"created_at":"2024-04-24T13:01:22Z","updated_at":"2024-10-14T13:30:02Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"It has been discussed across various issues, PRs and discussion threads and with recruitment on-going it might be a good thing for newbies to visually see what other contributors have earned, even 1x'ers like me 🤣\r\n\r\n
\r\n\r\n1. List contributors by earnings (only available marker right now)\r\n2. Display contributor's username in place of their EOA\r\n3. display a preview modal with additional metadata about the contributor\r\n4. Later the XP system, Karma, etc... can all be built into the metadata modal.\r\n5. Fetch the leaderboard data from an up to date source (new task for a GH action to run every 24hrs and update the source?)\r\n6. Cache what data we can\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/45/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/work.ubq.fi/issues/45/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/cloudflare-deploy-action/issues/14","repository_url":"https://api.github.com/repos/ubiquity/cloudflare-deploy-action","labels_url":"https://api.github.com/repos/ubiquity/cloudflare-deploy-action/issues/14/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/cloudflare-deploy-action/issues/14/comments","events_url":"https://api.github.com/repos/ubiquity/cloudflare-deploy-action/issues/14/events","html_url":"https://github.com/ubiquity/cloudflare-deploy-action/issues/14","id":2360732546,"node_id":"I_kwDOLGaFrM6MteuC","number":14,"title":"Prevent posting duplicated deployment URLs","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":6607732793,"node_id":"LA_kwDOLGaFrM8AAAABidoAOQ","url":"https://api.github.com/repos/ubiquity/cloudflare-deploy-action/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":6607732967,"node_id":"LA_kwDOLGaFrM8AAAABidoA5w","url":"https://api.github.com/repos/ubiquity/cloudflare-deploy-action/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":7098633150,"node_id":"LA_kwDOLGaFrM8AAAABpxyLvg","url":"https://api.github.com/repos/ubiquity/cloudflare-deploy-action/labels/Price:%2025%20USD","name":"Price: 25 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2024-06-18T21:16:34Z","updated_at":"2024-10-10T04:44:39Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Check [this](https://github.com/ubiquity/pay.ubq.fi/pull/253#issuecomment-2176013489) comment where commit hash `c124c0a` is duplicated multiple times. It happened because of multiple failed deploy attempts in [this](https://github.com/ubiquity/pay.ubq.fi/actions/runs/9567051444) CI run.\r\n\r\nExpected behavior is that commit hash `c124c0a` is posted only once.\r\n\r\nWhat should be done:\r\n- don't post deployment URL if it already exists\r\n","closed_by":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"reactions":{"url":"https://api.github.com/repos/ubiquity/cloudflare-deploy-action/issues/14/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/cloudflare-deploy-action/issues/14/timeline","performed_via_github_app":null,"state_reason":"reopened"},{"url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/11","repository_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/11/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/11/comments","events_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/11/events","html_url":"https://github.com/ubiquity/audit.ubq.fi/issues/11","id":2194943020,"node_id":"I_kwDOLZ8eH86C1Cws","number":11,"title":"Create correct Knip configuration for audit repository","user":{"login":"gitcoindev","id":88761781,"node_id":"MDQ6VXNlcjg4NzYxNzgx","avatar_url":"https://avatars.githubusercontent.com/u/88761781?v=4","gravatar_id":"","url":"https://api.github.com/users/gitcoindev","html_url":"https://github.com/gitcoindev","followers_url":"https://api.github.com/users/gitcoindev/followers","following_url":"https://api.github.com/users/gitcoindev/following{/other_user}","gists_url":"https://api.github.com/users/gitcoindev/gists{/gist_id}","starred_url":"https://api.github.com/users/gitcoindev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gitcoindev/subscriptions","organizations_url":"https://api.github.com/users/gitcoindev/orgs","repos_url":"https://api.github.com/users/gitcoindev/repos","events_url":"https://api.github.com/users/gitcoindev/events{/privacy}","received_events_url":"https://api.github.com/users/gitcoindev/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-03-19T13:13:34Z","updated_at":"2024-09-12T17:48:09Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"To goal is to fix Knip warnings to have clean Knip runs for CI and pull request checks.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/11/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/11/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/8","repository_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/8/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/8/comments","events_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/8/events","html_url":"https://github.com/ubiquity/audit.ubq.fi/issues/8","id":2190474977,"node_id":"I_kwDOLZ8eH86Cj_7h","number":8,"title":"Websocket RPC","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-03-17T04:31:14Z","updated_at":"2024-03-19T15:48:36Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I remember we had issues with the amount of requests we were making for the audit app. Maybe websockets are the solution.\n\n_Originally posted by @pavlovcik in https://github.com/pavlovcik/uad.ubq.fi/pull/2#discussion_r1527410702_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/8/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/8/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/12","repository_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/12/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/12/comments","events_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/12/events","html_url":"https://github.com/ubiquity/audit.ubq.fi/issues/12","id":2309910528,"node_id":"I_kwDOLZ8eH86JrnAA","number":12,"title":"Match ethereum tx with github issue onchain","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":6648112370,"node_id":"LA_kwDOLZ8eH88AAAABjEIk8g","url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2023-04-17T09:04:05Z","updated_at":"2024-05-22T08:29:42Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Right now in the [audit page](https://github.com/ubiquity/pay.ubq.fi/pull/34#issuecomment-1504890601) we match ethereum transactions for permit2 payouts using github API. So basically we get a list of issues, then get a unique nonce from a claim URL and try find a matching nonce in ethereum transactions from a bot's wallet address. We should be able to do the same thing without github API, purely onchain.\r\n\r\nWhat should be done:\r\n1. On permit2 claim URL generation pass the following query params to https://pay.ubq.fi:\r\n - owner name\r\n - repo name\r\n - issue number\r\n - permit2 nonce\r\n2. On \"claim\" button click a bounty hunter uses the [MultiSend](https://github.com/safe-global/safe-contracts/blob/main/contracts/libraries/MultiSend.sol) contract (find the deployed address in the gnosis safe docs or deploy your own) and sends 2 transactions (encoded in a single one):\r\n1) Permit2 claim (no updates in logic here)\r\n2) Onchain message to the bot's wallet address in the format `OEPRATION_TYPE;GITHUB_OWNER_NAME;GITHUB_REPOSITORY_NAME;GITHUB_ISSUE_NUMBER;PERMIT2_NONCE`. Example: `permit2_claim;ubuqity;ubiquity-dollar;112;2391127361723`\r\n\r\nThis way we would be able to match ethereum transactions with github issues purely onchain.\r\n\r\nP.S. Some folks may try to utilize a single claim transaction (without an onchain message) which would save them a little gas","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/12/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/audit.ubq.fi/issues/12/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/onboard.ubq.fi/issues/22","repository_url":"https://api.github.com/repos/ubiquity/onboard.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/onboard.ubq.fi/issues/22/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/onboard.ubq.fi/issues/22/comments","events_url":"https://api.github.com/repos/ubiquity/onboard.ubq.fi/issues/22/events","html_url":"https://github.com/ubiquity/onboard.ubq.fi/issues/22","id":2469700009,"node_id":"I_kwDOLaCxqM6TNKGp","number":22,"title":"Onboarding v2","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":6636525747,"node_id":"LA_kwDOLaCxqM8AAAABi5FYsw","url":"https://api.github.com/repos/ubiquity/onboard.ubq.fi/labels/Time:%20%3C1%20Week","name":"Time: <1 Week","color":"ededed","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-08-16T07:39:33Z","updated_at":"2024-08-16T08:00:10Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Right now `https://onboard.ubq.fi/` generates a bot's config for v1 which is obsolete.\r\n\r\nAs a part of this issue we should update `https://onboard.ubq.fi` to support the following features:\r\n1. Generate a new config for bot v2\r\n2. Update an existing config\r\n3. Encrypt plugin parameters (depends on https://github.com/ubiquity/ubiquibot-kernel/issues/90)\r\n4. Fetch and display available plugins with options and descriptions (depends on a \"marketplace\" issue which is not ready yet)\r\n5. Add an additional step of approves permit2 contract if https://github.com/ubiquibot/conversation-rewards plugin is used\r\n\r\nThis is a very high level description which might change in the future.\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/onboard.ubq.fi/issues/22/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/onboard.ubq.fi/issues/22/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/56","repository_url":"https://api.github.com/repos/ubiquity/rpc-handler","labels_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/56/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/56/comments","events_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/56/events","html_url":"https://github.com/ubiquity/rpc-handler/issues/56","id":2579929553,"node_id":"I_kwDOLaI9PM6ZxpnR","number":56,"title":"Proxy issues","user":{"login":"whilefoo","id":139262667,"node_id":"U_kgDOCEz6yw","avatar_url":"https://avatars.githubusercontent.com/u/139262667?v=4","gravatar_id":"","url":"https://api.github.com/users/whilefoo","html_url":"https://github.com/whilefoo","followers_url":"https://api.github.com/users/whilefoo/followers","following_url":"https://api.github.com/users/whilefoo/following{/other_user}","gists_url":"https://api.github.com/users/whilefoo/gists{/gist_id}","starred_url":"https://api.github.com/users/whilefoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whilefoo/subscriptions","organizations_url":"https://api.github.com/users/whilefoo/orgs","repos_url":"https://api.github.com/users/whilefoo/repos","events_url":"https://api.github.com/users/whilefoo/events{/privacy}","received_events_url":"https://api.github.com/users/whilefoo/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2024-10-10T21:58:05Z","updated_at":"2024-10-15T10:39:02Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Because we are having problems with RPCs I looked at the code and found some quirks that I don't understand and some improvements that could be made.\r\n\r\n@Keyrxng since you did this part, is there any reason why a JsonRpcProvider is wrapped with the Proxy two times, once here:\r\nhttps://github.com/ubiquity/rpc-handler/blame/7a24b8a491695bb2121d01e44f4e7a4745ec61e7/types/rpc-handler.ts#L271\r\nand here:\r\nhttps://github.com/ubiquity/rpc-handler/blame/7a24b8a491695bb2121d01e44f4e7a4745ec61e7/types/rpc-handler.ts#L93\r\nAnd is there a reason why we didn't just extend the BaseProvider from ethers?\r\n\r\nImprovements:\r\n- When the RPC request fails it retries with the list of RPCs which includes this same RPC that failed, we should skip it instead.\r\n- If a RPC fails a couple of times even across different requests, we can mark it as offline and not use it anymore\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/56/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/56/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/54","repository_url":"https://api.github.com/repos/ubiquity/rpc-handler","labels_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/54/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/54/comments","events_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/54/events","html_url":"https://github.com/ubiquity/rpc-handler/issues/54","id":2579280825,"node_id":"I_kwDOLaI9PM6ZvLO5","number":54,"title":"Unreliable","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6648751898,"node_id":"LA_kwDOLaI9PM8AAAABjEvnGg","url":"https://api.github.com/repos/ubiquity/rpc-handler/labels/Priority:%204%20(Urgent)","name":"Priority: 4 (Urgent)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-10T16:07:13Z","updated_at":"2024-10-10T16:07:13Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"pay.ubq.fi has not been working the last few days. rpc manager is not handling errors\r\n\r\n![telegram-cloud-photo-size-1-4918431621091274969-y](https://github.com/user-attachments/assets/39832108-72d3-4d6a-a5cb-a8f720a76850)\r\n\r\n![telegram-cloud-photo-size-1-4918431621091274966-y](https://github.com/user-attachments/assets/30ac5cf5-add9-441b-804b-f6b6729fc68b)\r\n\r\n![telegram-cloud-photo-size-1-4918431621091274963-y](https://github.com/user-attachments/assets/affc0539-ac54-430c-b8e7-dfd6c5b865ef)\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/54/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/54/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/30","repository_url":"https://api.github.com/repos/ubiquity/rpc-handler","labels_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/30/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/30/comments","events_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/30/events","html_url":"https://github.com/ubiquity/rpc-handler/issues/30","id":2422340465,"node_id":"I_kwDOLaI9PM6QYftx","number":30,"title":"Improving RPC health check robustness","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":10,"created_at":"2024-07-22T09:02:57Z","updated_at":"2024-10-14T13:30:05Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"The handler is now a proxy which routes on-chain read/writes through it handling retry and reselection logic. The original issue was that `eth_call is not supported` was being thrown by some endpoints due to network sync issues on the provider's part. While the proxy approach resolves this indirectly it could be beneficial to deal with the underlying issue.\r\n\r\nWhile we can do our best to serve a healthy provider from the beginning it's possible a user call may still fail although with an improved health check this is far less likely and with our proxy the other endpoints should be also be perfectly healthy\r\n\r\n---\r\n\r\n#### Option 1\r\n\r\nCurrent: fetch block number and ensure it's valid data\r\nProposed: block number + permit2 read op\r\n\r\nThe health check can be improved by a number of methods but one that makes sense to me is repeating the `eth_call` which highlighted the issue originally\r\n\r\n---\r\n\r\nThe downsides with this is:\r\n\r\n1. That it has been proven that the same `eth_call` can and will fail intermittently even with some of the best RPCs for that network, so would require best-of 3 calls for example \r\n2. If checks are 'fragile' like this then it's entirely possible we encounter a 'no providers found' scenario in error\r\n3. The more checks added the higher the chance the above happens\r\n4. It's still possible for a call to fail due to provider error\r\n5. The more calls we add the higher the network demand on load\r\n6. ^ the slower we are to returning a provider\r\n7. Our data/provider is static after load unless re-rendered/recalled\r\n\r\nThe upsides with this is:\r\n\r\n8. We are guaranteed healthy endpoints\r\n9. Less chance retry logic will be executed\r\n\r\n---\r\n\r\n#### Option 2\r\n\r\nAdopt a polling-based approach, first gather our healthy endpoints and then poll them according to config settings ensuring that they remain healthy and pop them if they fault. We could collect the first pool using just the block number check and then any that make it to round two are polled with `eth_call` read ops.\r\n\r\nDownsides:\r\n- Perpetual read ops called\r\n- runtime network demand depending on settings and amount of providers to poll\r\n- We may hit call limits with our check and serve it for the user to get rate limited (low chance)\r\n\r\nUpsides:\r\n- Dynamic health status\r\n- Potentially makes retry logic obsolete\r\n- network load demand is on par with option 1\r\n\r\n---\r\n\r\nOption two would require a pretty big overhaul of the current system as opposed to option one\r\n\r\nAny other suggestions are welcome\r\n\r\n_related issue context https://github.com/ubiquity/pay.ubq.fi/issues/235#issuecomment-2235154700_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/30/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/rpc-handler/issues/30/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/safe.ubq.fi/issues/3","repository_url":"https://api.github.com/repos/ubiquity/safe.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/safe.ubq.fi/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/safe.ubq.fi/issues/3/comments","events_url":"https://api.github.com/repos/ubiquity/safe.ubq.fi/issues/3/events","html_url":"https://github.com/ubiquity/safe.ubq.fi/issues/3","id":2469641605,"node_id":"I_kwDOMNZuas6TM72F","number":3,"title":"Save EOA to a DB","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":9,"created_at":"2024-08-16T07:03:46Z","updated_at":"2024-08-27T15:51:07Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Depends on https://github.com/ubiquity/safe.ubq.fi/pull/2\r\n\r\nRight now `safe.ubq.fi` is able to generate EOA address from a passkey but doesn't save it to a database.\r\n\r\nThis way user has to perform an additional registration step:\r\n1. User calls `/register` and the bot replies with \"Pls create an EOA at safe.ubq.fi\"\r\n2. User creates a new EOA at `safe.ubq.fi`\r\n3. User calls `/wallet` to register his address in our DB (additional step)\r\n\r\nWe should support the following flow:\r\n1. User calls `/register` and the bot replies with \"Pls create an EOA at safe.ubq.fi\"\r\n2. User creates a new EOA at `safe.ubq.fi` **and** `safe.ubq.fi`'s backend saves user's address to a DB\r\n\r\nIdeally for a DB we should use a partner's json storage (i.e. his `ubiquibot-config` repository) but if https://github.com/ubiquibot/plugin-template/issues/2 is not implemented at the time somebody starts this issue then we can simply use our supabase instance and leave \"json storage\" for the next feature iteration.\r\n\r\nOriginal [comment](https://github.com/ubiquibot/plugins-wishlist/issues/35#issuecomment-2292625984).","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/safe.ubq.fi/issues/3/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/safe.ubq.fi/issues/3/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/9","repository_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/9/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/9/comments","events_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/9/events","html_url":"https://github.com/ubiquity/uusd.ubq.fi/issues/9","id":2584139589,"node_id":"I_kwDOMhAZP86aBtdF","number":9,"title":"Integrate a Crypto Pricing API for Precise UUSD and Fees in Dollar Estimates","user":{"login":"zugdev","id":155616000,"node_id":"U_kgDOCUaDAA","avatar_url":"https://avatars.githubusercontent.com/u/155616000?v=4","gravatar_id":"","url":"https://api.github.com/users/zugdev","html_url":"https://github.com/zugdev","followers_url":"https://api.github.com/users/zugdev/followers","following_url":"https://api.github.com/users/zugdev/following{/other_user}","gists_url":"https://api.github.com/users/zugdev/gists{/gist_id}","starred_url":"https://api.github.com/users/zugdev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zugdev/subscriptions","organizations_url":"https://api.github.com/users/zugdev/orgs","repos_url":"https://api.github.com/users/zugdev/repos","events_url":"https://api.github.com/users/zugdev/events{/privacy}","received_events_url":"https://api.github.com/users/zugdev/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-13T17:40:32Z","updated_at":"2024-10-13T17:40:32Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"In #4 the user will be able to input any token accepted by CoW Swap, however this currencies have each a respective price in USD. This means that to offer the user an estimate of how many UUSD tokens he will get (approx. 1:1 to USD), we must integrate a pricing API. This will allow us to display the amount inputted in dollars, the total fee cost in dollars, the cost of each fee in dollars according to #8 and the expected amount of UUSD. A good free solution could be [CoinCap API](https://docs.coincap.io), the one used by CoW Swap is [CoinGecko](https://www.coingecko.com/en/api) but it's paid and costly.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/9/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/9/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/8","repository_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/8/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/8/comments","events_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/8/events","html_url":"https://github.com/ubiquity/uusd.ubq.fi/issues/8","id":2584129055,"node_id":"I_kwDOMhAZP86aBq4f","number":8,"title":"Fees and Slippage Tracking + Breakdown","user":{"login":"zugdev","id":155616000,"node_id":"U_kgDOCUaDAA","avatar_url":"https://avatars.githubusercontent.com/u/155616000?v=4","gravatar_id":"","url":"https://api.github.com/users/zugdev","html_url":"https://github.com/zugdev","followers_url":"https://api.github.com/users/zugdev/followers","following_url":"https://api.github.com/users/zugdev/following{/other_user}","gists_url":"https://api.github.com/users/zugdev/gists{/gist_id}","starred_url":"https://api.github.com/users/zugdev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zugdev/subscriptions","organizations_url":"https://api.github.com/users/zugdev/orgs","repos_url":"https://api.github.com/users/zugdev/repos","events_url":"https://api.github.com/users/zugdev/events{/privacy}","received_events_url":"https://api.github.com/users/zugdev/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-10-13T17:29:12Z","updated_at":"2024-10-13T19:16:34Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"In #4 the optimal UX is having the user know not only the estimated total fees but understand where each fee comes from. This involves integrating CoW Swap quote API, tracking gas costs on-chain, quoting bridge fees with another API. Depending on which bridge we go with we even have to swap into another currency to pay it's fee. It also involves adding / estimating slippage into each of this steps. This would allow for a precise on-ramp cost calculation, ensuring user understand's the output amount of UUSD.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/8/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/8/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/7","repository_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/7/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/7/comments","events_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/7/events","html_url":"https://github.com/ubiquity/uusd.ubq.fi/issues/7","id":2584123451,"node_id":"I_kwDOMhAZP86aBpg7","number":7,"title":"Handle Swap Orders in On-Ramp Experience","user":{"login":"zugdev","id":155616000,"node_id":"U_kgDOCUaDAA","avatar_url":"https://avatars.githubusercontent.com/u/155616000?v=4","gravatar_id":"","url":"https://api.github.com/users/zugdev","html_url":"https://github.com/zugdev","followers_url":"https://api.github.com/users/zugdev/followers","following_url":"https://api.github.com/users/zugdev/following{/other_user}","gists_url":"https://api.github.com/users/zugdev/gists{/gist_id}","starred_url":"https://api.github.com/users/zugdev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zugdev/subscriptions","organizations_url":"https://api.github.com/users/zugdev/orgs","repos_url":"https://api.github.com/users/zugdev/repos","events_url":"https://api.github.com/users/zugdev/events{/privacy}","received_events_url":"https://api.github.com/users/zugdev/received_events","type":"User","site_admin":false},"labels":[{"id":7306247727,"node_id":"LA_kwDOMhAZP88AAAABs3x-Lw","url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":8,"created_at":"2024-10-13T17:17:16Z","updated_at":"2024-10-14T17:17:21Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"In developing the UUSD on-ramp experience to Gnosis we must handle swapping from any available token in CoW Swap to LUSD and UBQ. The suggested approach in #4 is just bundling swap, mint and bridge into a multicall. However that's not viable since CoW Swap operates in an asynchronous way, you don't get your tokens as soon as you send a swap transaction, a relayer has to send your order to solvers and then it settles which can take up to minutes. This also means that we must track potentially multiple orders at the same time in our backend without mixing, which needs extra care. Another super delicate case is order expiration: what if CoW Swap fails to resolve the swap in sufficient time? The solution should return funds in that case and should warn possible failure based on pool liquidity even before the user submits a transaction.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/7/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/7/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/5","repository_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi","labels_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/5/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/5/comments","events_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/5/events","html_url":"https://github.com/ubiquity/uusd.ubq.fi/issues/5","id":2558753338,"node_id":"I_kwDOMhAZP86Yg3o6","number":5,"title":"Update UBQ Farming UI","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7306247496,"node_id":"LA_kwDOMhAZP88AAAABs3x9SA","url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":7306247727,"node_id":"LA_kwDOMhAZP88AAAABs3x-Lw","url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":7453409626,"node_id":"LA_kwDOMhAZP88AAAABvEIBWg","url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/labels/Price:%20600%20USD","name":"Price: 600 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":11,"created_at":"2022-11-23T18:26:51Z","updated_at":"2024-10-10T06:41:02Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We changed the flow from manual steps (add liquidity in curve, then lockup LP token in our staking contract) to now “ape in” which handles both in a single transaction. Check `packages/contracts/src/dollar/DirectGovernanceFarmer.sol`\r\n\r\nThe new UI should be built on top of the related smart contact code changes. The context is available in https://github.com/ubiquity/ubiquity-dollar/issues/243\r\n\r\n\r\n\r\nYou can upgrade the \"Stake Liquidity to Receive UBQ\" panel with one that allows users to: \r\n1. Deposit their uAD+3pool stables (uAD/USDC/USDT/DAI) allow them to select the amount of each of course.\r\n2. Specify the amount of weeks for lockup.\r\n3. Be sure to leave the MAX button functionality in here as well.\r\n\r\nUsing the `apeIn` method!","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/5/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/5/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/155","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/155/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/155/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/155/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/155","id":2579216666,"node_id":"I_kwDOLUK0B86Zu7ka","number":155,"title":"Crediting for unique links only","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6694362633,"node_id":"LA_kwDOLUK0B88AAAABjwPeCQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":6694362897,"node_id":"LA_kwDOLUK0B88AAAABjwPfEQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":6772581392,"node_id":"LA_kwDOLUK0B88AAAABk61kEA","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Price:%2075%20USD","name":"Price: 75 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-10T15:39:19Z","updated_at":"2024-10-10T15:39:56Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"- When aggregating rewards, collect every link into a single data store and only credit the first instance of a link. \r\n- In the following issue specification, I got way too much in rewards which can be solved by checking the redundant link (the only difference is the hash, which shouldn't count) I should have only received credit for basically one link. \r\n- https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/143\r\n\r\n###### Similar [^01^]\r\n\r\n[^01^]: [Missing defaults for html tags](https://www.github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/153) 76%","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/155/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/155/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/152","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/152/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/152/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/152/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/152","id":2575933840,"node_id":"I_kwDOLUK0B86ZiaGQ","number":152,"title":"Failed to save permit","user":{"login":"whilefoo","id":139262667,"node_id":"U_kgDOCEz6yw","avatar_url":"https://avatars.githubusercontent.com/u/139262667?v=4","gravatar_id":"","url":"https://api.github.com/users/whilefoo","html_url":"https://github.com/whilefoo","followers_url":"https://api.github.com/users/whilefoo/followers","following_url":"https://api.github.com/users/whilefoo/following{/other_user}","gists_url":"https://api.github.com/users/whilefoo/gists{/gist_id}","starred_url":"https://api.github.com/users/whilefoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whilefoo/subscriptions","organizations_url":"https://api.github.com/users/whilefoo/orgs","repos_url":"https://api.github.com/users/whilefoo/repos","events_url":"https://api.github.com/users/whilefoo/events{/privacy}","received_events_url":"https://api.github.com/users/whilefoo/received_events","type":"User","site_admin":false},"labels":[{"id":6694362961,"node_id":"LA_kwDOLUK0B88AAAABjwPfUQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Priority:%204%20(Urgent)","name":"Priority: 4 (Urgent)","color":"ededed","default":false,"description":null},{"id":7556960102,"node_id":"LA_kwDOLUK0B88AAAABwm4PZg","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C15%20Minutes","name":"Time: <15 Minutes","color":"ededed","default":false,"description":null},{"id":7556960107,"node_id":"LA_kwDOLUK0B88AAAABwm4Paw","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Price:%2024%20USD","name":"Price: 24 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-10-09T13:24:35Z","updated_at":"2024-10-10T12:09:01Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"```\r\nFailed to create a new location {\r\n code: '42501',\r\n details: null,\r\n hint: null,\r\n message: 'new row violates row-level security policy for table \"locations\"'\r\n}\r\nFailed to save permits to the database Error: Failed to retrieve the related location from issue [object Object]\r\n at PermitGenerationModule._getOrCreateIssueLocation (/home/runner/work/conversation-rewards/conversation-rewards/src/parser/permit-generation-module.ts:248:13)\r\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\r\n at PermitGenerationModule._savePermitsToDatabase (/home/runner/work/conversation-rewards/conversation-rewards/src/parser/permit-generation-module.ts:257:28)\r\n at PermitGenerationModule.transform (/home/runner/work/conversation-rewards/conversation-rewards/src/parser/permit-generation-module.ts:122:9)\r\n at Processor.run (/home/runner/work/conversation-rewards/conversation-rewards/src/parser/processor.ts:37:24)\r\n at run (/home/runner/work/conversation-rewards/conversation-rewards/src/run.ts:25:5)\r\n```\r\nhttps://github.com/ubiquity-os-marketplace/text-conversation-rewards/actions/runs/11165001249/job/31035657102#step:7:443","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/152/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/152/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/149","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/149/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/149/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/149/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/149","id":2572406404,"node_id":"I_kwDOLUK0B86ZU86E","number":149,"title":"Ensure Assignee on Linked Pull Merge","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6694362851,"node_id":"LA_kwDOLUK0B88AAAABjwPe4w","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":7556960102,"node_id":"LA_kwDOLUK0B88AAAABwm4PZg","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C15%20Minutes","name":"Time: <15 Minutes","color":"ededed","default":false,"description":null},{"id":7556960106,"node_id":"LA_kwDOLUK0B88AAAABwm4Pag","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Price:%2012%20USD","name":"Price: 12 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":9,"created_at":"2024-10-08T07:58:12Z","updated_at":"2024-10-10T05:48:39Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"> Maybe we could a feature if the issue has a linked PR that has been merged, it should assign the user to the issue and close it?\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquity/pay.ubq.fi/issues/267#issuecomment-2399122707_\r\n ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/149/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/149/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/137","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/137/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/137/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/137/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/137","id":2563831967,"node_id":"I_kwDOLUK0B86Y0Pif","number":137,"title":"Footnotes","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6694362659,"node_id":"LA_kwDOLUK0B88AAAABjwPeIw","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":6694362851,"node_id":"LA_kwDOLUK0B88AAAABjwPe4w","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":6768021882,"node_id":"LA_kwDOLUK0B88AAAABk2fReg","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Price:%20100%20USD","name":"Price: 100 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":8,"created_at":"2024-10-03T11:37:35Z","updated_at":"2024-10-10T22:38:50Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"> https://github.com/ubiquity-os-marketplace/generate-vector-embeddings/issues/25#issuecomment-2388870939 caught my eye as being too high but I'm reviewing the statistics:\r\n> \r\n> \r\n> ```yml\r\n> content:\r\n> content: # strange there's content.content\r\n> p:\r\n> score: 0\r\n> elementCount: 3\r\n> a:\r\n> score: 5 # looks like its counting the footnotes as links. I only see three related to the footnotes (these should be hardcoded to be removed.) but there is one unaccounted for that I cant find?\r\n> elementCount: 2\r\n> pre:\r\n> score: 0\r\n> elementCount: 1\r\n> h6:\r\n> score: 1\r\n> elementCount: 1\r\n> result: 11\r\n> \r\n> regex:\r\n> wordCount: 116\r\n> wordValue: 0.2\r\n> result: 11.37\r\n> ```\r\n> \r\n> I think we have an unaddressed scenario of dealing with footnotes. So we'll need to make a new task then. I also have a feeling that it is counting words within the code block, we should not have this. This should be indicated in the analytics overview if a tag words are being ignored. Also its strange to me that it parsed it as `pre` instead of `code` perhaps its because I didn't include the syntax highlighting header?\r\n> \r\n> Regarding config, I think wordCount should probably default to 0.1 including for author, not sure why its 0.2!\r\n> \r\n> 1. Ignore links related to footnotes\r\n> 2. Do not include footnotes in word count credit\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquity-os-marketplace/generate-vector-embeddings/issues/25#issuecomment-2391197361_\r\n ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/137/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/137/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/113","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/113/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/113/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/113/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/113","id":2519406762,"node_id":"I_kwDOLUK0B86WKxiq","number":113,"title":"`-`&`0`","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6694362659,"node_id":"LA_kwDOLUK0B88AAAABjwPeIw","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":6694362851,"node_id":"LA_kwDOLUK0B88AAAABjwPe4w","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":7007792071,"node_id":"LA_kwDOLUK0B88AAAABobJrxw","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Price:%20150%20USD","name":"Price: 150 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2024-09-11T10:56:31Z","updated_at":"2024-10-14T12:53:22Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"If relevance scoring is skipped for a specific role, use a hyphen. \n\nIf it actually scored a perfect zero, then use zero. \n\nThis is more expressive. \n\n> Interesting point. If relevance evaluation was skipped due to the config, then - makes sense. If it evaluated to 0 then we should write 0. Let's do this. \n\n_Originally posted by @0x4007 in https://github.com/ubiquibot/conversation-rewards/pull/79#issuecomment-2342453056_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/113/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/113/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/106","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/106/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/106/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/106/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/106","id":2491843925,"node_id":"I_kwDOLUK0B86UhoVV","number":106,"title":"Check if the proper linked pull-request is evaluated","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-08-28T11:39:31Z","updated_at":"2024-10-14T12:53:23Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"It is just a suspicion because it didn't happen yet, but I am not sure if the proper linked pull request is evaluated in the following scenario:\r\n- user a opens a pull request\r\n- user b DRAFTS a pull request\r\n- issue is closed by user a\r\n\r\nMy suspicion is that the pull-request by user b might be evaluated because it got open last. We should make sure that the closing PR is the one that is evaluated. Again, it is just a suspicion so this scenario should be tested first (writing it down not to forget).\r\n\r\nRelates to https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/128","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/106/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":1},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/106/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/102","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/102/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/102/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/102/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/102","id":2487074749,"node_id":"I_kwDOLUK0B86UPb-9","number":102,"title":"Implement a way to easily run tests results on an issue","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[{"id":6694362741,"node_id":"LA_kwDOLUK0B88AAAABjwPedQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C1%20Week","name":"Time: <1 Week","color":"ededed","default":false,"description":null},{"id":6694362897,"node_id":"LA_kwDOLUK0B88AAAABjwPfEQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":7175176690,"node_id":"LA_kwDOLUK0B88AAAABq6yB8g","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Price:%20600%20USD","name":"Price: 600 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":11,"created_at":"2024-08-26T14:55:23Z","updated_at":"2024-10-14T15:22:07Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"For testing purposes and fine tuning, it would be handy to have a way to run the `conversation-rewards` manually against any pull-request within a sandbox to test and fine tune the incentives as desired.\r\n\r\nMy first thought would be to have a `/simulate-rewards issue_url` or some similar command that would generate the results within the issue / pr where it is run, without generating the permits, which would allow for testing and tuning without needed to open / close issues manually to trigger a run.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/102/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/102/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/96","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/96/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/96/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/96/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/96","id":2484394877,"node_id":"I_kwDOLUK0B86UFNt9","number":96,"title":"Typebox error handling and issue feedback","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[{"id":6694362633,"node_id":"LA_kwDOLUK0B88AAAABjwPeCQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":6694362851,"node_id":"LA_kwDOLUK0B88AAAABjwPe4w","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":6737248669,"node_id":"LA_kwDOLUK0B88AAAABkZJBnQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Price:%2025%20USD","name":"Price: 25 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":11,"created_at":"2024-08-24T09:01:26Z","updated_at":"2024-10-14T12:53:24Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"An issue exists with the usage of `T.Union` which should be investigated and resolved.\r\n\r\nIt would also be handy to improve user feedback on the issue as a user must head to the workflow run to get a hint at what is going on.\r\n\r\nI'm unsure what labels to assign, you would know better @gentlementlegen\r\n\r\n\r\n_original [context](https://github.com/ubiquibot/conversation-rewards/pull/68#issuecomment-2304210635)_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/96/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/96/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/77","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/77/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/77/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/77/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/77","id":2435484238,"node_id":"I_kwDOLUK0B86RKopO","number":77,"title":"Decimal is not properly displayed","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[{"id":6694362633,"node_id":"LA_kwDOLUK0B88AAAABjwPeCQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":6694362782,"node_id":"LA_kwDOLUK0B88AAAABjwPeng","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":6737248669,"node_id":"LA_kwDOLUK0B88AAAABkZJBnQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Price:%2025%20USD","name":"Price: 25 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2024-07-29T13:47:02Z","updated_at":"2024-10-14T12:53:26Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"In the following result, a lot of decimals are displayed when it should not: https://github.com/ubiquibot/plugins-wishlist/issues/20#issuecomment-2255900756\r\n\r\nThe number should properly be computed using `Decimal.js` library like the other values.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/77/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":1},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/77/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/74","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/74/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/74/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/74/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/74","id":2431326220,"node_id":"I_kwDOLUK0B86Q6xgM","number":74,"title":"\"Originally posted by\" crediting","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6694362659,"node_id":"LA_kwDOLUK0B88AAAABjwPeIw","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":6694362851,"node_id":"LA_kwDOLUK0B88AAAABjwPe4w","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":6768021882,"node_id":"LA_kwDOLUK0B88AAAABk2fReg","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Price:%20100%20USD","name":"Price: 100 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-07-26T03:14:25Z","updated_at":"2024-09-24T10:19:10Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"In a conversation, using the context menu, we are able to instantly create a new issue and prefill the body with the comment contents. It is common that the original author of the comment does not receive credit for creating the issue (when another team member creates the issue for them.)\r\n\r\nDetect when the following string is detected (full example with context):\r\n\r\n```\r\nOriginally posted by @0x4007 in https://github.com/ubiquibot/conversation-rewards/pull/58#discussion_r1691159526\r\n```\r\n\r\nSo it will be a regex like `^Originally posted by @ in $`\r\n\r\nAnd when calculating the rewards, the original author should receive part of the author credit. Make it configurable with a percentage. I would default to 50% of the credit. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/74/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/74/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/73","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/73/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/73/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/73/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/73","id":2431323099,"node_id":"I_kwDOLUK0B86Q6wvb","number":73,"title":"Telegram DM Rewards","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6694362704,"node_id":"LA_kwDOLUK0B88AAAABjwPeUA","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C4%20Hours","name":"Time: <4 Hours","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":10,"created_at":"2024-07-26T03:10:21Z","updated_at":"2024-09-25T18:40:44Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Perhaps its more convenient for a Telegram bot to message the rewards. This module can come with a registration command[^1^] and then direct message the reward link. \r\n\r\nThis could be more convenient to some users until we finish the database side and collect all the unclaimed rewards for the contributors. \r\n\r\n[^1^]: /telegram pavlovcik\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/73/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/73/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/64","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/64/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/64/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/64/events","html_url":"https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/64","id":2419273910,"node_id":"I_kwDOLUK0B86QMzC2","number":64,"title":"Reward amount rollup","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":6694362731,"node_id":"LA_kwDOLUK0B88AAAABjwPeaw","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":6694362851,"node_id":"LA_kwDOLUK0B88AAAABjwPe4w","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":6813756143,"node_id":"LA_kwDOLUK0B88AAAABliGq7w","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Price:%20400%20USD","name":"Price: 400 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":16,"created_at":"2024-07-19T16:06:55Z","updated_at":"2024-09-11T08:17:33Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Right now the permit redeem flow is the following:\r\n1. Contributor solves an issue\r\n2. `conversation-rewards` plugin generates a permit, saves it to a DB and displays it in github comments\r\n3. Contributor redeems permit at `pay.ubq.fi`\r\n\r\n[This](https://github.com/ubiquity/pay.ubq.fi/pull/226) PR introduces claiming rewards to gift cards.\r\n\r\nThe updated flow of the permit redeem should be following:\r\n1. Contributor solves an issue\r\n2. Permit reward amount is accumulated in a DB\r\n3. Contributor opens `pay.ubq.fi`, generates either an on-chain single permit (possibly for multiple solved issues) either redeems to a gift card\r\n\r\nSo as a part of this issue we should accumulate contributor rewards in a DB similar to how `0x4007` initially implemented it with the `debits, cerdits, settlements` tables.\r\n\r\n\r\n\r\nWhen this issue of accumulated rewards is ready we can just disable permit generation (via the plugin's `permitGeneration.enabled` option) and let contributors redeem only at `pay.ubq.fi`.\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/64/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/64/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/43","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/43/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/43/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/43/events","html_url":"https://github.com/ubiquity-os-marketplace/daemon-pricing/issues/43","id":2586022325,"node_id":"I_kwDOLcmjKM6aI5G1","number":43,"title":"Automatically Handling Prerequisites","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6724629305,"node_id":"LA_kwDOLcmjKM8AAAABkNGzOQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":6724629447,"node_id":"LA_kwDOLcmjKM8AAAABkNGzxw","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":7436352921,"node_id":"LA_kwDOLcmjKM8AAAABuz29mQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-10-14T13:15:42Z","updated_at":"2024-10-14T13:17:35Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"- There's situations where we price tasks that actually aren't ready to be worked on due to prerequisite tasks that need to be completed first. \r\n- It could be useful to set the `priority` and `time` level but then use a new command like `/requires `\r\n- In this case, the price label can be removed, indicating that it is not ready to be worked on. \r\n- When the prerequisite issue is merged, it would be great to add pricing again, which will automatically allow contributors to `/start` again. \r\n\r\nThis needs to listen to: \r\n1. the issue.closed (as complete) webhook event, and then restore the latest price from the timeline.\r\n2. the issues_comment.created webhook event, to parse the command.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/43/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/43/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/39","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/39/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/39/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/39/events","html_url":"https://github.com/ubiquity-os-marketplace/daemon-pricing/issues/39","id":2559332175,"node_id":"I_kwDOLcmjKM6YjE9P","number":39,"title":"Always prefer lower dimension label","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6724629257,"node_id":"LA_kwDOLcmjKM8AAAABkNGzCQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":6724629447,"node_id":"LA_kwDOLcmjKM8AAAABkNGzxw","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":6943841731,"node_id":"LA_kwDOLcmjKM8AAAABneKdww","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/labels/Price:%2025%20USD","name":"Price: 25 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-01T13:55:19Z","updated_at":"2024-10-01T13:55:39Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We do this already when rendering the price, but when we have two different time labels (or two different priority labels) the pricing algorithm will always take the lowest combination. \n\nWe should remove the higher labels as well so that there is no confusion.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/39/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/39/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/31","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/31/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/31/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/31/events","html_url":"https://github.com/ubiquity-os-marketplace/daemon-pricing/issues/31","id":2518256882,"node_id":"I_kwDOLcmjKM6WGYzy","number":31,"title":"Create a base reward for users within this plugin","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":8,"created_at":"2024-09-11T01:25:07Z","updated_at":"2024-09-11T02:58:38Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":" Yes I do agree that we should be able to chain these results. It's just that this plugin never had the capability to actually attribute rewards to a user, this was the responsibility of `conversation-rewards`. We could think of splitting this and have the logic here later on.\r\n\r\n_Originally posted by @gentlementlegen in https://github.com/ubiquibot/assistive-pricing/issues/27#issuecomment-2338184070_\r\n\r\nThis plugin should output a `Reward` compatible output to be able to be chained with other plugins. The current shape of the rewards is as follows:\r\nhttps://github.com/ubiquibot/conversation-rewards?tab=readme-ov-file#data-structure\r\n\r\nWhat this plugin should output is the following section:\r\n```json\r\n\"userName\": {\r\n \"task\": {\r\n \"reward\": 37.5,\r\n \"multiplier\": 1\r\n }\r\n}\r\n```\r\nwhich corresponds to the current reward within the label divided by the amount of users assigned to the task. Once in the output, chained plugins could pick this up and use it for further calculations.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/31/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/31/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/27","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/27/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/27/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/27/events","html_url":"https://github.com/ubiquity-os-marketplace/daemon-pricing/issues/27","id":2512540832,"node_id":"I_kwDOLcmjKM6VwlSg","number":27,"title":"Boosting All Rewards Based On Priority","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6724629374,"node_id":"LA_kwDOLcmjKM8AAAABkNGzfg","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":6724629553,"node_id":"LA_kwDOLcmjKM8AAAABkNG0MQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/labels/Priority:%204%20(Urgent)","name":"Priority: 4 (Urgent)","color":"ededed","default":false,"description":null},{"id":7436352944,"node_id":"LA_kwDOLcmjKM8AAAABuz29sA","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/labels/Price:%20400%20USD","name":"Price: 400 USD","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2024-09-08T19:35:45Z","updated_at":"2024-09-11T01:29:50Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We should boost all the rewards proportionally if it's an urgent task. This will incentivize all contributors (not just the assignee) to focus on that task because everybody gets higher rewards for work like reviews.\n\nThe higher the priority level the higher the rewards multiplier is for everybody. \n\n### example \n\nI should've received a reward closer to $150 in [this task](https://github.com/ubiquity/ts-template/issues/54#issuecomment-2336807302), because the priority level was 3. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/27/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-pricing/issues/27/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/64","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/64/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/64/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/64/events","html_url":"https://github.com/ubiquity-os-marketplace/command-start-stop/issues/64","id":2577897569,"node_id":"I_kwDOL-In886Zp5hh","number":64,"title":"Task Limit Improvements","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7036608750,"node_id":"LA_kwDOL-In888AAAABo2og7g","url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":7036609123,"node_id":"LA_kwDOL-In888AAAABo2oiYw","url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":7384869651,"node_id":"LA_kwDOL-In888AAAABuCwrEw","url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/labels/Price:%20150%20USD","name":"Price: 150 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2024-10-10T07:25:06Z","updated_at":"2024-10-15T17:14:47Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"This needs to:\r\n\r\n1. Change to warning syntax vs diff syntax\r\n2. Link all the issues I'm currently assigned to in a comment so I can unassign myself or close them out. \r\n3. Only check assigned issues within the network, but this should be configurable to either be just within the repo, org, or [network](https://raw.githubusercontent.com/ubiquity/devpool-directory/refs/heads/development/devpool-issues.json)\r\n\r\n\r\n---\r\n\r\n```diff\r\n! You have reached your max task limit. Please close out some tasks before assigning new ones.\r\n```\r\n\r\n\r\n_Originally posted by @ubiquity-os[bot] in https://github.com/ubiquity/work.ubq.fi/issues/120#issuecomment-2404264757_\r\n \r\n\r\n>[!WARNING]\r\n> You have reached your max task limit. Please close out some tasks before assigning new ones.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/64/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/64/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/56","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/56/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/56/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/56/events","html_url":"https://github.com/ubiquity-os-marketplace/command-start-stop/issues/56","id":2541481034,"node_id":"I_kwDOL-In886Xe-xK","number":56,"title":"Rename the configuration to `allowedReviewerRoles` to match `automated-merging`","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-23T03:12:23Z","updated_at":"2024-09-23T03:12:23Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":" Seems to work fine on my org. Can I bother you to rename the configuration to `allowedReviewerRoles` to match `automated-merging`?\r\n\r\n_Originally posted by @gentlementlegen in https://github.com/ubiquibot/command-start-stop/pull/37#pullrequestreview-2317189521_\r\n ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/56/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/56/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/43","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/43/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/43/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/43/events","html_url":"https://github.com/ubiquity-os-marketplace/command-start-stop/issues/43","id":2513382540,"node_id":"I_kwDOL-In886VzyyM","number":43,"title":"Improved first time contributor DX","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2024-09-09T09:07:34Z","updated_at":"2024-09-10T13:31:53Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"## Enforcing Org Standards for New Contributors\r\n\r\nIt has become a regular issue that new contributors are not adhering to conventional commit standards. This leads to repetitive interactions with each pull request (PR), where we educate them about our organization-wide standards.\r\n\r\nIn other large open-source projects, bots automate initial acknowledgements of standards, such as 'accepting terms and conditions' or signing off on specific practices. I propose a similar automated approach to enforce these standards strictly.\r\n\r\n#### High-Level Enforcement via Bot\r\n- If CI is not green, and a `review_requested` event is triggered, the bot will apply a `requested_changes` review and comment: \"CI has failed and is required before requesting a review.\"\r\n\r\n#### Accommodations for First-Time Contributors\r\n- For first-time contributors, we can utilize an API to determine if this is the contributor's first task, covering anything from `/start` to `closed_as_complete`. Or use a JSON based storage simply for `Username:HasAcknowledgedTerms`, if the user name is not present we request they accept, if it's present standard `/start` flow.\r\n- If a contributor has not `closed_as_complete` or this is their first open PR, we should:\r\n - Comment on the issue (preferably) or the PR. This ensures they are aware of the guidelines upfront and do not need to backtrack and amend commits.\r\n - Clearly state our high-level contributing guidelines in the comment. Currently, we lack an official `contributing.md`, but we enforce several unwritten rules such as:\r\n - Use `yarn`\r\n - Ensure usage of version `v1.22`\r\n - Follow conventional commits\r\n - Always use the formatting scripts provided\r\n\r\n#### Acknowledgement Requirement\r\n- Implement a system where contributors must \"accept\" an acknowledgement of these standards before we assign the issue to them. This process:\r\n - Saves reviewers time by reducing the need to repeatedly educate on org-wide standards.\r\n - Improves Developer Experience (DX) as contributors are informed upfront, preventing the need to backtrack significantly on their PRs.\r\n - Enhances professionalism and presents the project as more official.\r\n - Helps in filtering out contributors who may find these standards too demanding or complex, ensuring a better fit for the project's needs.\r\n\r\n### Benefits\r\n- **Time Efficiency:** Streamlines the review process by setting clear expectations from the start.\r\n- **Improved DX:** Reduces the burden on new contributors by providing clear guidelines upfront.\r\n- **Professional Image:** Enhances the project's professionalism and operational efficiency.\r\n- **Quality Control:** Helps maintain a high standard of contributions by ensuring all contributors adhere to set practices.\r\n\r\n### This plugin or a new one?\r\n\r\nA dedicated plugin would be great actually as we could allow for a lot more customization of the terms and standards etc by allowing them to pass in their own custom markdown for tables etc as opposed to restricted to using our pretty `/start` message. Decouples from `/start` more but obv still coupled with it slightly. Allows for simpler per-repo customization as you do not have to consider the `/start` setup also.\r\n\r\nThis plugin, really coupled together. The config will become big and messy probably and it adds a whole new branch of functionality to this worker.\r\n\r\nhere is an [example](https://www.github.com/safe-global/safe-smart-account/pull/789#issuecomment-2214809563)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/43/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/43/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/28","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/28/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/28/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/28/events","html_url":"https://github.com/ubiquity-os-marketplace/command-start-stop/issues/28","id":2489452377,"node_id":"I_kwDOL-In886UYgdZ","number":28,"title":"Properly handle task limit","user":{"login":"whilefoo","id":139262667,"node_id":"U_kgDOCEz6yw","avatar_url":"https://avatars.githubusercontent.com/u/139262667?v=4","gravatar_id":"","url":"https://api.github.com/users/whilefoo","html_url":"https://github.com/whilefoo","followers_url":"https://api.github.com/users/whilefoo/followers","following_url":"https://api.github.com/users/whilefoo/following{/other_user}","gists_url":"https://api.github.com/users/whilefoo/gists{/gist_id}","starred_url":"https://api.github.com/users/whilefoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whilefoo/subscriptions","organizations_url":"https://api.github.com/users/whilefoo/orgs","repos_url":"https://api.github.com/users/whilefoo/repos","events_url":"https://api.github.com/users/whilefoo/events{/privacy}","received_events_url":"https://api.github.com/users/whilefoo/received_events","type":"User","site_admin":false},"labels":[{"id":7036608750,"node_id":"LA_kwDOL-In888AAAABo2og7g","url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":7036609178,"node_id":"LA_kwDOL-In888AAAABo2oimg","url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/labels/Priority:%204%20(Urgent)","name":"Priority: 4 (Urgent)","color":"ededed","default":false,"description":null},{"id":7036610424,"node_id":"LA_kwDOL-In888AAAABo2oneA","url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/labels/Price:%20200%20USD","name":"Price: 200 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-08-27T13:55:05Z","updated_at":"2024-10-01T17:17:52Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":" The original implementation allowed for productive contributors to work on two tasks concurrently. With a starting two task limit:\r\n| Condition | Task Adjustment | Explanation |\r\n|--------------------------------------------------------|-----------------------|---------------------------------------------------------------------------------------------------------|\r\n| If any reviewer approved the pull | +1 task per pull | It's likely that the pull is good, just waiting on other slow reviewers to confirm. |\r\n| If reviewers take longer than 24 hours | +1 task per pull | Don't wait for lazy reviewers to be able to start a new task. |\r\n| If any reviewer requested changes | -1 task per pull | They should focus on addressing the changes as a top priority. |\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquibot/command-start-stop/pull/19#discussion_r1731441502_\r\n \r\n\r\nFor the sake of this conversation a completed PR is when the conditions are met in the above table.\r\n\r\nIn the current state the code checks if any review is approved or if there is 0 reviews but 24 hours have passed since the creation of the PR, however it doesn't check if there's any requested changes so it will count it as completed even if there 1 approve and 1 requested changes.\r\n\r\nThere is still a problem when the reviewer requests changes and the contributor resolves those changes but waits for the reviewer to make a new review so they can't start another task.\r\nThere's two possible solutions: check if the reviewer was requested more than x hours ago or check that changes have been marked as solved","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/28/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-start-stop/issues/28/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/31","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/31/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/31/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/31/events","html_url":"https://github.com/ubiquity-os-marketplace/daemon-disqualifier/issues/31","id":2578750082,"node_id":"I_kwDOMDzQsM6ZtJqC","number":31,"title":"Fix pull-request problems","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-10-10T12:48:07Z","updated_at":"2024-10-10T12:56:06Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":" All UbiquiBot references should be removed. https://github.com/ubiquity-os-marketplace/daemon-disqualifier/commit/a9d71792a1218730e936d22b7509132abd0a1858\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquity-os-marketplace/daemon-disqualifier/pull/28#discussion_r1791403293_\r\n \n###### Similar [^01^]\n\n[^01^]: [Use Full Webhook Names](https://www.github.com/ubiquity-os-marketplace/daemon-disqualifier/issues/29) 78%","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/31/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/31/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/29","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/29/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/29/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/29/events","html_url":"https://github.com/ubiquity-os-marketplace/daemon-disqualifier/issues/29","id":2578021759,"node_id":"I_kwDOMDzQsM6ZqX1_","number":29,"title":"Use Full Webhook Names","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7078200331,"node_id":"LA_kwDOMDzQsM8AAAABpeTECw","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":7078200640,"node_id":"LA_kwDOMDzQsM8AAAABpeTFQA","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":7354334675,"node_id":"LA_kwDOMDzQsM8AAAABtlo90w","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Price:%2075%20USD","name":"Price: 75 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-10T08:10:21Z","updated_at":"2024-10-10T08:11:03Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Looks like this was never fixed. Should use full webhook names.\r\n\r\nUsing new shortened versions decreases maintainability because it can lead to developer confusion.\r\n\r\nhttps://github.com/ubiquity-os-marketplace/daemon-disqualifier/blob/9ca3f7ba20a48385151a55e7cf52e57cafa9cf65/tests/main.test.ts#L67\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquity-os-marketplace/daemon-disqualifier/pull/22#discussion_r1794931278_\r\n ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/29/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/29/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/26","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/26/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/26/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/26/events","html_url":"https://github.com/ubiquity-os-marketplace/daemon-disqualifier/issues/26","id":2551606597,"node_id":"I_kwDOMDzQsM6YFm1F","number":26,"title":"Priority Speed","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7078200355,"node_id":"LA_kwDOMDzQsM8AAAABpeTEIw","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":7078200640,"node_id":"LA_kwDOMDzQsM8AAAABpeTFQA","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":7354334696,"node_id":"LA_kwDOMDzQsM8AAAABtlo96A","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Price:%20150%20USD","name":"Price: 150 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-09-26T22:08:24Z","updated_at":"2024-09-27T22:55:34Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Divide the config timeouts by the priority level. This makes follow ups more aggressive based on the priority level. \n\n`Priority: 5 (Emergency)` Means divide by 5. \n\n- warning = 3.5 days / 5 = 16.8 hours\n- disqualify = 7 days / 5 = 33.6 hours\n\n\nShould be configurable (priority enabled: Boolean)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/26/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/26/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/18","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/18/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/18/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/18/events","html_url":"https://github.com/ubiquity-os-marketplace/daemon-disqualifier/issues/18","id":2518388048,"node_id":"I_kwDOMDzQsM6WG41Q","number":18,"title":"Metadata","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7078200331,"node_id":"LA_kwDOMDzQsM8AAAABpeTECw","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":7078200608,"node_id":"LA_kwDOMDzQsM8AAAABpeTFIA","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":7354334675,"node_id":"LA_kwDOMDzQsM8AAAABtlo90w","url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Price:%2075%20USD","name":"Price: 75 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-09-11T03:44:17Z","updated_at":"2024-10-14T04:00:24Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"This should be standardized in our SDK but we can do a manual implementation here. The metadata header schema is as follows:\r\n```\r\n\r\n```\r\n\r\n> @gentlementlegen Really nice to see this finally working as expected. Except the revision hash in the metadata is undefined. This should be fixed!\r\n\r\n---\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquibot/conversation-rewards/issues/97#issuecomment-2340237317_\r\n ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/18/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/18/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/16","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/16/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/16/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/16/events","html_url":"https://github.com/ubiquity-os-marketplace/command-wallet/issues/16","id":2473749061,"node_id":"I_kwDOMNa7fM6TcmpF","number":16,"title":"duplicate private key error","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-08-19T16:29:08Z","updated_at":"2024-08-19T23:14:42Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"It seems that there has been a duplicate private key error upon what I believe is a new contributor registering which seems very unlikely and needs debugged\r\n\r\n_original [context](https://github.com/ubiquity/pay.ubq.fi/issues/281#issuecomment-2296727786)_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/16/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/16/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/4","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/4/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/4/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/4/events","html_url":"https://github.com/ubiquity-os-marketplace/command-wallet/issues/4","id":2394760599,"node_id":"I_kwDOMNa7fM6OvSWX","number":4,"title":"Change logs to use `ubiquity-dao/ubiquibot-logger`","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[{"id":7272080709,"node_id":"LA_kwDOMNa7fM8AAAABsXMlRQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":7272080985,"node_id":"LA_kwDOMNa7fM8AAAABsXMmWQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":7344465185,"node_id":"LA_kwDOMNa7fM8AAAABtcOlIQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":11,"created_at":"2024-07-08T06:30:59Z","updated_at":"2024-10-14T12:53:35Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Currently the logs are handled manually with `console` messages. They should use our logger package to follow our usual display standards and logic.\r\n\r\nhttps://github.com/ubiquity/ubiquibot-logger\r\n\r\nC.f. https://github.com/ubiquibot/command-wallet/pull/2#discussion_r1668052899 and https://github.com/ubiquibot/command-wallet/pull/2#discussion_r1668051345","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/4/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/4/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/17","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/17/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/17/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/17/events","html_url":"https://github.com/ubiquity-os-marketplace/daemon-merging/issues/17","id":2493962987,"node_id":"I_kwDOMQ8E8c6Uptrr","number":17,"title":"Last activity doesn't seem to take reviews and comments into account","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-08-29T09:45:27Z","updated_at":"2024-08-29T09:45:27Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":" Interesting that the bot didn't care about your comments @0x4007 for activity. Also, the `skipBotEvents` didn't seem to work, no rewards have been generated. It is properly set [here](https://github.com/ubiquibot/ubiquibot-config/blob/main/.github/.ubiquibot-config.yml#L34).\r\n\r\n[Related logs](https://github.com/ubiquibot/automated-merging/actions/runs/10611998253/job/29412739371#step:6:263).\r\n\r\n_Originally posted by @gentlementlegen in https://github.com/ubiquibot/user-activity-watcher/issues/15#issuecomment-2317098125_\r\n \r\n\r\nThe pull-request got merged even though activity was recent (under 2 hours prior), which should have delayed the merge even if CI was green and there was enough validations.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/17/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":1},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/17/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/16","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/16/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/16/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/16/events","html_url":"https://github.com/ubiquity-os-marketplace/daemon-merging/issues/16","id":2486912205,"node_id":"I_kwDOMQ8E8c6UO0TN","number":16,"title":"automated merging not working if total reviewers is under the minimum reviewer quota","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-08-26T13:43:00Z","updated_at":"2024-08-26T19:41:26Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"There is a scenario where a pull-request can have all the validations from the reviewers but won't get merged because the amount of reviewers is under the amount of required reviewers.\r\n\r\n## Example\r\nA review has 2 validations out of 2 reviewers, but 3 are required.\r\n\r\n## Possible solutions\r\n### Merge when 100% of reviewers validated\r\nPros:\r\n- avoids the automated merging to be stuck\r\n- doesn't require multiple validations on small / simple tasks\r\n\r\nCons:\r\n- dangerous, even more for outsider pull-requests, that could be merged only with one validation\r\n- could be missed by the team that wouldn't notice the merging happening\r\n\r\n### Post a message saying that the PR can be merged, but requires `n` more reviewers\r\nPros:\r\n- safe, wouldn't automatically merge the pull-request without meeting the requirements\r\n- could even notify the team about the required reviews\r\n\r\nCons:\r\n- might require multiple reviews for simple tasks\r\n- can increase noise, and delay merging\r\n\r\nPartially relates to #5","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/16/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/16/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/5","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/5/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/5/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/5/events","html_url":"https://github.com/ubiquity-os-marketplace/daemon-merging/issues/5","id":2434465239,"node_id":"I_kwDOMQ8E8c6RGv3X","number":5,"title":"Auto merge if all requested reviews are approved","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-07-29T05:09:40Z","updated_at":"2024-07-29T10:53:55Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Mixed feelings on this because GitHub [has this feature already](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository), but it must be manually enabled per every repository which is tedious. \r\n\r\nThis seems like a simple example of when it can automatically merge with no risk:\r\n\r\nhttps://github.com/ubiquibot/command-start-stop/pull/18#pullrequestreview-2203939804\r\n\r\nAt least our improvement should allow a threshold i.e. 2/3 requested reviews approved, so automatically merge. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/5/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/daemon-merging/issues/5/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/36","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/36/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/36/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/36/events","html_url":"https://github.com/ubiquity-os-marketplace/text-vector-embeddings/issues/36","id":2590290128,"node_id":"I_kwDOMoorW86aZLDQ","number":36,"title":"SQL Functions not updated","user":{"login":"sshivaditya2019","id":53160903,"node_id":"MDQ6VXNlcjUzMTYwOTAz","avatar_url":"https://avatars.githubusercontent.com/u/53160903?v=4","gravatar_id":"","url":"https://api.github.com/users/sshivaditya2019","html_url":"https://github.com/sshivaditya2019","followers_url":"https://api.github.com/users/sshivaditya2019/followers","following_url":"https://api.github.com/users/sshivaditya2019/following{/other_user}","gists_url":"https://api.github.com/users/sshivaditya2019/gists{/gist_id}","starred_url":"https://api.github.com/users/sshivaditya2019/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sshivaditya2019/subscriptions","organizations_url":"https://api.github.com/users/sshivaditya2019/orgs","repos_url":"https://api.github.com/users/sshivaditya2019/repos","events_url":"https://api.github.com/users/sshivaditya2019/events{/privacy}","received_events_url":"https://api.github.com/users/sshivaditya2019/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-16T01:01:02Z","updated_at":"2024-10-16T01:01:02Z","closed_at":null,"author_association":"COLLABORATOR","active_lock_reason":null,"body":"Supabase migrations are not working because the `DROP FUNCTION` command is ambiguous; there are other functions with the same name or overloaded versions that exist, that should not happen.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/36/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/36/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/27","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/27/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/27/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/27/events","html_url":"https://github.com/ubiquity-os-marketplace/text-vector-embeddings/issues/27","id":2564376454,"node_id":"I_kwDOMoorW86Y2UeG","number":27,"title":"Similar Issue Editing Specification Timeout","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7402979202,"node_id":"LA_kwDOMoorW88AAAABuUB_gg","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/labels/Price:%2075%20USD","name":"Price: 75 USD","color":"1f883d","default":false,"description":null},{"id":7402979258,"node_id":"LA_kwDOMoorW88AAAABuUB_ug","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":7402979278,"node_id":"LA_kwDOMoorW88AAAABuUB_zg","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-03T15:39:11Z","updated_at":"2024-10-03T15:39:27Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I generally write specifications, post, edit, post, edit etc.\r\n\r\nWhile I am editing, the script runs again and changes my specification body. This is a problem because when I complete my edit, GitHub refuses to accept my changes because there were other changes that occurred in the background from the bot. It tells me I need to refresh the page, and try again. \r\n\r\nThis is obviously annoying so we need to make a timeout for edit. The timeout feature should be mindful of two things:\r\n1. It should restart the timer if there is another edit. \r\n2. It should be configurable, with the default being 30 minutes. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/27/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/27/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/23","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/23/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/23/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/23/events","html_url":"https://github.com/ubiquity-os-marketplace/text-vector-embeddings/issues/23","id":2556426405,"node_id":"I_kwDOMoorW86YX_il","number":23,"title":"Redact switch","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7402979202,"node_id":"LA_kwDOMoorW88AAAABuUB_gg","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/labels/Price:%2075%20USD","name":"Price: 75 USD","color":"1f883d","default":false,"description":null},{"id":7402979258,"node_id":"LA_kwDOMoorW88AAAABuUB_ug","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":7402979278,"node_id":"LA_kwDOMoorW88AAAABuUB_zg","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2024-09-30T11:54:52Z","updated_at":"2024-10-14T12:53:39Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Config to toggle redacts. \n\nUsed for private repos only. \n\nredactPrivateRepoComments: boolean \n\nDefault we capture everything. \n\n> Maybe we shouldn't redact comments in the near future. And instead have a switch for it later when/if partners ever ask. I feel like most people won't care and it will give us more data to work with for research purposes in the near future.\r\n\r\nI guess it would be fine to have it as an option in the configuration, because as long as not everybody can access the DB the content of private repositories cannot be read by outsiders.\n\n_Originally posted by @gentlementlegen in https://github.com/ubiquity-os-marketplace/generate-vector-embeddings/pull/20#issuecomment-2382245540_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/23/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/23/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/17","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/17/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/17/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/17/events","html_url":"https://github.com/ubiquity-os-marketplace/text-vector-embeddings/issues/17","id":2532429170,"node_id":"I_kwDOMoorW86W8c1y","number":17,"title":"onboarding bot","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":8,"created_at":"2024-09-18T00:22:31Z","updated_at":"2024-09-20T02:32:36Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Technically there will be two:\r\n\r\n1. Service and Products: Notion doc type embeddings generated for this, high level DAO overview.\r\n2. Developer onboarding: Initially the focus will be on an org-wide understanding of all repo readmes, they'll be used for a basic setup and walkthrough guide for any given repo.\r\n\r\nThis could be split into two separate tasks or combined as one. \r\n\r\nNumber two is easy, we run on `push` events and ID any added or changed `.md` files and we are done. Notion doc scanning isn't something that we can listen for webhook and go I don't think. So maybe we could have a cron job to run once every 30-60 days and parse the notion docs? I'm sure we can grab the pages from the API with a valid API key.\r\n\r\n---\r\n\r\nBefore we automate notion we need to decide:\r\n\r\n- Which docs we'll include\r\n- If we are keeping it verbatim to the portal\r\n- If we'll re-structure some parts etc.\r\n- subgroups would be ideal, e.g the type for these embeddings will be `dao_info`, but inside `metadata` we can have like `subgroup: recruitment | articles` etc, the more useful metadata we can apply like that the better imo. Why, because if your broad search results are poor you can refine further and have a bit more control of the black box.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/17/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/17/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/15","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/15/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/15/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/15/events","html_url":"https://github.com/ubiquity-os-marketplace/text-vector-embeddings/issues/15","id":2531366904,"node_id":"I_kwDOMoorW86W4Zf4","number":15,"title":"Handle HTML input","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[{"id":7402979201,"node_id":"LA_kwDOMoorW88AAAABuUB_gQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null},{"id":7402979258,"node_id":"LA_kwDOMoorW88AAAABuUB_ug","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":7402979275,"node_id":"LA_kwDOMoorW88AAAABuUB_yw","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-09-17T14:46:51Z","updated_at":"2024-09-18T02:58:45Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Input should be properly sanitized and then stored according to the database schema. It appears that markdown is handled correctly but HTML is not and it should be as it's a supported GitHub comment format.\r\n\r\nhttps://github.com/ubq-testing/generate-vector-embeddings/issues/5\r\n\r\n![image](https://github.com/user-attachments/assets/ae9702f1-f64a-49be-9b9d-3ca75cc9fef0)\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/15/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/15/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/13","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/13/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/13/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/13/events","html_url":"https://github.com/ubiquity-os-marketplace/text-vector-embeddings/issues/13","id":2530837060,"node_id":"I_kwDOMoorW86W2YJE","number":13,"title":"Store issue if not stored already","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-09-17T10:59:08Z","updated_at":"2024-09-17T15:06:59Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"1. If the issue does not already exist in the DB then store it to allow comments to be stored.\r\n2. Correct the error handling; when an error is thrown an `ok` log shouldn't be shown if it's not `ok`.\r\n3. Post a comment on the issue stating that the plugin has failed?\r\n\r\n\r\n![image](https://github.com/user-attachments/assets/b46dd279-59da-4e03-b247-4725b3b6d41d)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/13/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/13/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/10","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/10/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/10/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/10/events","html_url":"https://github.com/ubiquity-os-marketplace/text-vector-embeddings/issues/10","id":2518503123,"node_id":"I_kwDOMoorW86WHU7T","number":10,"title":"Codebase semantic search","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-11T05:16:53Z","updated_at":"2024-09-11T05:33:03Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"For on boarding new developers, or just to synchronize existing developers, we should be generating embeddings of our code base. We can do per file or on the function level, depending on which has better performance.\n\nI asked GPT for the best sorting method on the [embedding leaderboard](https://huggingface.co/spaces/mteb/leaderboard). \n\nLater it clarified that we should be sorting by \"retrieval with instructions\" for best results. \n\n[FollowIR-7B](https://huggingface.co/jhu-clsp/FollowIR-7B) is the highest ranked. \n\nWe should be doing this in two steps:\n1. Primarily, we should be generating embeddings of the new files when pull requests are merged.\n2. We should have a tool that we can run manually (manual dispatch on GitHub actions ok) to generate all the embeddings. This would be expected to be used if there were pushes directly to the default branch and were not added via pull request\n\n### additional context\n\n> For this use case (codebase question-answering), your focus should be on retrieval tasks. Based on the criteria provided, here’s how I would prioritize the metrics:\n\n> 1. **Retrieval Average (15 datasets)**: This should be your highest priority. The better the retrieval capability of the model, the more relevant code chunks it will retrieve when you ask a question about the codebase.\n\n> 2. **Embedding Dimensions**: A higher embedding dimension may provide more nuanced representations of code and questions, improving retrieval accuracy. However, this needs to be balanced with memory usage and model size.\n\n> 3. **Model Size (Million Parameters)**: Larger models tend to perform better in generating high-quality embeddings, but at the cost of memory and speed. Consider how much memory and computational power you can afford.\n\n> 4. **Max Tokens**: A higher max token limit is useful for code because some functions or files can be quite large. You'll want a model that can handle bigger chunks of code.\n\n> 5. **Classification Average (12 datasets)**: Code-related tasks sometimes involve classification (e.g., determining the type of question or identifying sections of code). A higher classification score can help in such scenarios.\n\n> 6. **STS Average (10 datasets)**: Semantic Textual Similarity (STS) is also important as it measures how well the embeddings capture semantic meaning, which is useful for understanding the context and retrieving the right code section.\n\n> ### Sorting Criteria:\n> Sort by **Retrieval Average** first, then consider **Max Tokens** and **Embedding Dimensions** for practical handling of code and performance optimization.\n\n> The other metrics like **Classification**, **Clustering**, and **Reranking** are less critical for your specific use case, but they can help refine the quality if you have a secondary need for such tasks.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/10/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/10/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/5","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/5/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/5/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/5/events","html_url":"https://github.com/ubiquity-os-marketplace/text-vector-embeddings/issues/5","id":2501678538,"node_id":"I_kwDOMoorW86VHJXK","number":5,"title":"Use the batch API","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-09-02T23:22:08Z","updated_at":"2024-09-03T04:23:25Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"We could use the batch API and reap the benefits it provides since right now we do not need the real-time embeddings that we currently have, which is awesome but more expensive than what it needs to be.\r\n\r\nSo we'd simply store each comment as they come in as is what happens now, then send all comments in the database without an embedding every n hours.\r\n\r\nWe could have a cron job perform this function for us but it would need to be able to handle the async nature of requests to this endpoint. Alternatively build a time check into the worker itself using the `updated_at` of the most recent embedding filled entry.\r\n\r\n- 50% cheaper\r\n- separate rate limit\r\n- 24hr turn around (which makes it very clean if we do it every 24hrs)\r\n\r\nhttps://platform.openai.com/docs/guides/batch/overview\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/5/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/5/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/2","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/2/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/2/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/2/events","html_url":"https://github.com/ubiquity-os-marketplace/text-vector-embeddings/issues/2","id":2499194812,"node_id":"I_kwDOMoorW86U9q-8","number":2,"title":"Enable RLS","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[{"id":7402979275,"node_id":"LA_kwDOMoorW88AAAABuUB_yw","url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":6,"created_at":"2024-09-01T03:32:58Z","updated_at":"2024-09-01T16:30:37Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"The database can be accessed by anyone public with a full read / write access, which raises security concerns. RLS should be enabled on all the tables and a token required to modify data.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/2/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/text-vector-embeddings/issues/2/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/6","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/6/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/6/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/6/events","html_url":"https://github.com/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/6","id":2584199467,"node_id":"I_kwDOMqhXyc6aB8Er","number":6,"title":"First Assignment","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7397596973,"node_id":"LA_kwDOMqhXyc8AAAABuO5fLQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/labels/Priority:%204%20(Urgent)","name":"Priority: 4 (Urgent)","color":"ededed","default":false,"description":null},{"id":7593009367,"node_id":"LA_kwDOMqhXyc8AAAABxJQg1w","url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/labels/Price:%2024%20USD","name":"Price: 24 USD","color":"1f883d","default":false,"description":null},{"id":7593009375,"node_id":"LA_kwDOMqhXyc8AAAABxJQg3w","url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/labels/Time:%20%3C15%20Minutes","name":"Time: <15 Minutes","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-13T19:12:41Z","updated_at":"2024-10-13T19:12:57Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"> I guess it would make sense to only make a chat room on the first assignment\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/5#issuecomment-2408895453_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/6/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/6/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/4","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/4/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/4/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/4/events","html_url":"https://github.com/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/4","id":2582596201,"node_id":"I_kwDOMqhXyc6Z70pp","number":4,"title":"Add build to the Action to improve start time","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[{"id":7397596910,"node_id":"LA_kwDOMqhXyc8AAAABuO5e7g","url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null},{"id":7397596952,"node_id":"LA_kwDOMqhXyc8AAAABuO5fGA","url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":7397596972,"node_id":"LA_kwDOMqhXyc8AAAABuO5fLA","url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-12T06:18:49Z","updated_at":"2024-10-12T06:25:39Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"The Telegram action could have a build to improve its latency.","closed_by":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/4/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/4/timeline","performed_via_github_app":null,"state_reason":"reopened"},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/1","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/1/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/1/events","html_url":"https://github.com/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/1","id":2497262166,"node_id":"I_kwDOMqhXyc6U2TJW","number":1,"title":"Telegram Bot V2","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[{"id":7397596971,"node_id":"LA_kwDOMqhXyc8AAAABuO5fKw","url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-08-30T13:33:12Z","updated_at":"2024-08-30T16:45:18Z","closed_at":null,"author_association":"COLLABORATOR","active_lock_reason":null,"body":"This plugin is designed to process events from both Telegram and GitHub, enabling it to respond flexibly and making it more scalable than a configuration limited to handling Telegram events and kernel interactions alone.\r\n\r\nThe system will function as the 'kernel' for Telegram, intended for use potentially within just our organization or alongside partners, depending on the final design.\r\n\r\nAll essential logic from Version 1 (V1) will be refactored to be compatible with the new Version 2 (V2) kernel. Initially, it will incorporate the functionality specified in https://github.com/ubiquibot/plugins-wishlist/issues/25.\r\n\r\nIt aims to provide a robust foundation that can be expanded with additional features. Comprehensive documentation will be developed to facilitate rapid onboarding, ensuring a seamless transition to align with the capabilities of V1.\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/1/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":1,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/ubiquity-os-kernel-telegram/issues/1/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os-marketplace/.github/issues/1","repository_url":"https://api.github.com/repos/ubiquity-os-marketplace/.github","labels_url":"https://api.github.com/repos/ubiquity-os-marketplace/.github/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os-marketplace/.github/issues/1/comments","events_url":"https://api.github.com/repos/ubiquity-os-marketplace/.github/issues/1/events","html_url":"https://github.com/ubiquity-os-marketplace/.github/issues/1","id":2568542217,"node_id":"I_kwDOM8J8-M6ZGNgJ","number":1,"title":"Change Diff Syntax","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7564601969,"node_id":"LA_kwDOM8J8-M8AAAABwuKqcQ","url":"https://api.github.com/repos/ubiquity-os-marketplace/.github/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null},{"id":7564602015,"node_id":"LA_kwDOM8J8-M8AAAABwuKqnw","url":"https://api.github.com/repos/ubiquity-os-marketplace/.github/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":7564602030,"node_id":"LA_kwDOM8J8-M8AAAABwuKqrg","url":"https://api.github.com/repos/ubiquity-os-marketplace/.github/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2024-10-06T08:25:44Z","updated_at":"2024-10-07T03:38:06Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"As it turns out, GitHub flavored markdown includes these handy color indicators. We can use the same color keys but instead of diff syntax, we use this syntax. \r\n\r\nThis should be applied across all kernel and plugin messages.\r\n\r\nIt might even be handy to rename the methods in our logger if its still attached to posting comments. The inspiration behind the rename is so that the class of message is no longer subjective.\r\n\r\n```typescript\r\nlogger.info();\r\nlogger.success();\r\nlogger.redirect();\r\nlogger.clientError();\r\nlogger.serverError();\r\n```\r\n\r\n### Status Codes\r\n\r\nBased on HTTP status codes, we should color code the responses. The only problem is that some of the headers can be misleading, but it does look a lot more aesthetically pleasing than the diffs. The left border in particular I think is a great minimal representation of the status. \r\n\r\n> [!NOTE]\r\n> 1xx\r\n\r\n> [!TIP]\r\n> 2xx\r\n\r\n> [!IMPORTANT]\r\n> 3xx\r\n\r\n> [!WARNING]\r\n> 4xx\r\n\r\n> [!CAUTION]\r\n> 5xx\r\n\r\n### Source Code\r\n\r\n```markdown\r\n> [!NOTE]\r\n> 1xx\r\n\r\n> [!TIP]\r\n> 2xx\r\n\r\n> [!IMPORTANT]\r\n> 3xx\r\n\r\n> [!WARNING]\r\n> 4xx\r\n\r\n> [!CAUTION]\r\n> 5xx\r\n```\r\n\r\n### About HTTP Status Code Classes\r\n\r\n> HTTP status codes are standardized codes returned by web servers to indicate the result of a client's request. These codes are grouped into five classes, each signifying a different category of response:\r\n>\r\n> ---\r\n> \r\n> ### **1xx: Informational**\r\n> \r\n> **Description:** The 1xx class of status codes indicates that the server has received the request and is continuing the process. These are provisional responses, providing interim information while the server continues to process the request.\r\n> \r\n> **Common Status Codes:**\r\n> \r\n> - **100 Continue:** Indicates that the initial part of the request has been received and the client should continue with the rest of the request.\r\n> - **101 Switching Protocols:** Informs the client that the server is switching to a different protocol as requested.\r\n> - **102 Processing (WebDAV):** Signals that the server has received and is processing the request, but no response is available yet.\r\n> \r\n> ---\r\n> \r\n> ### **2xx: Success**\r\n> \r\n> **Description:** The 2xx class signifies that the client's request was successfully received, understood, and accepted by the server.\r\n> \r\n> **Common Status Codes:**\r\n> \r\n> - **200 OK:** The request has succeeded. The meaning varies depending on the HTTP method used.\r\n> - **201 Created:** The request has been fulfilled, resulting in the creation of a new resource.\r\n> - **202 Accepted:** The request has been accepted for processing, but the processing is not complete.\r\n> - **204 No Content:** The server successfully processed the request and is not returning any content.\r\n> - **206 Partial Content:** The server is delivering only part of the resource due to a range header sent by the client.\r\n> \r\n> ---\r\n> \r\n> ### **3xx: Redirection**\r\n> \r\n> **Description:** The 3xx class indicates that further action is needed to complete the request. This usually means a redirection to a different resource.\r\n> \r\n> **Common Status Codes:**\r\n> \r\n> - **301 Moved Permanently:** The resource has been permanently moved to a new URL.\r\n> - **302 Found:** The resource resides temporarily under a different URL.\r\n> - **303 See Other:** The response can be found under a different URI and should be retrieved using a GET method.\r\n> - **304 Not Modified:** Indicates that the resource has not been modified since the last request.\r\n> - **307 Temporary Redirect:** The request should be repeated with another URI; however, future requests should still use the original URI.\r\n> \r\n> ---\r\n> \r\n> ### **4xx: Client Error**\r\n> \r\n> **Description:** The 4xx class signifies errors that appear to have been caused by the client. These codes indicate that the request contains bad syntax or cannot be fulfilled.\r\n> \r\n> **Common Status Codes:**\r\n> \r\n> - **400 Bad Request:** The server cannot process the request due to a client error (e.g., malformed request syntax).\r\n> - **401 Unauthorized:** Authentication is required and has failed or has not yet been provided.\r\n> - **403 Forbidden:** The client does not have access rights to the content.\r\n> - **404 Not Found:** The server cannot find the requested resource.\r\n> - **405 Method Not Allowed:** The request method is known by the server but is not supported by the target resource.\r\n> - **408 Request Timeout:** The server timed out waiting for the request.\r\n> - **409 Conflict:** The request could not be completed due to a conflict with the current state of the resource.\r\n> - **410 Gone:** The resource requested is no longer available and will not be available again.\r\n> - **429 Too Many Requests:** The user has sent too many requests in a given amount of time (\"rate limiting\").\r\n> \r\n> ---\r\n> \r\n> ### **5xx: Server Error**\r\n> \r\n> **Description:** The 5xx class indicates that the server failed to fulfill a valid request. The server is aware that it has encountered an error or is otherwise incapable of performing the request.\r\n> \r\n> **Common Status Codes:**\r\n> \r\n> - **500 Internal Server Error:** A generic error message when the server encounters an unexpected condition.\r\n> - **501 Not Implemented:** The server either does not recognize the request method or lacks the ability to fulfill it.\r\n> - **502 Bad Gateway:** The server was acting as a gateway or proxy and received an invalid response from the upstream server.\r\n> - **503 Service Unavailable:** The server is not ready to handle the request, often due to maintenance or overload.\r\n> - **504 Gateway Timeout:** The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.\r\n> - **505 HTTP Version Not Supported:** The server does not support the HTTP protocol version used in the request.\r\n> \r\n> ---\r\n> \r\n> Understanding these status codes is essential for debugging web applications and ensuring efficient client-server communication. Each code provides specific information about what happened with a request, allowing developers to handle responses appropriately.\r\n\r\n### Original Context\r\n\r\n> [!WARNING]\r\n> Failed to run comment evaluation. \r\n>\r\n>`TypeError: Cannot read properties of undefined (reading 'wordValue')`\r\n\r\n\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquity/.github/issues/115#issuecomment-2395344603_\r\n \r\n###### Similar [^01^]\r\n\r\n[^01^]: [Slow Start to Evaluation](https://www.github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/138) 75%","closed_by":{"login":"ubiquity-os-beta[bot]","id":182769649,"node_id":"BOT_kgDOCuTX8Q","avatar_url":"https://avatars.githubusercontent.com/in/1007802?v=4","gravatar_id":"","url":"https://api.github.com/users/ubiquity-os-beta%5Bbot%5D","html_url":"https://github.com/apps/ubiquity-os-beta","followers_url":"https://api.github.com/users/ubiquity-os-beta%5Bbot%5D/followers","following_url":"https://api.github.com/users/ubiquity-os-beta%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/ubiquity-os-beta%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/ubiquity-os-beta%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ubiquity-os-beta%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/ubiquity-os-beta%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/ubiquity-os-beta%5Bbot%5D/repos","events_url":"https://api.github.com/users/ubiquity-os-beta%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/ubiquity-os-beta%5Bbot%5D/received_events","type":"Bot","site_admin":false},"reactions":{"url":"https://api.github.com/repos/ubiquity-os-marketplace/.github/issues/1/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os-marketplace/.github/issues/1/timeline","performed_via_github_app":null,"state_reason":"reopened"},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/29","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/29/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/29/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/29/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-logger/issues/29","id":2471988164,"node_id":"I_kwDOK3SaHs6TV4vE","number":29,"title":"lack of `console.logger.warn()` implementation ","user":{"login":"wolfmic","id":1028208,"node_id":"MDQ6VXNlcjEwMjgyMDg=","avatar_url":"https://avatars.githubusercontent.com/u/1028208?v=4","gravatar_id":"","url":"https://api.github.com/users/wolfmic","html_url":"https://github.com/wolfmic","followers_url":"https://api.github.com/users/wolfmic/followers","following_url":"https://api.github.com/users/wolfmic/following{/other_user}","gists_url":"https://api.github.com/users/wolfmic/gists{/gist_id}","starred_url":"https://api.github.com/users/wolfmic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wolfmic/subscriptions","organizations_url":"https://api.github.com/users/wolfmic/orgs","repos_url":"https://api.github.com/users/wolfmic/repos","events_url":"https://api.github.com/users/wolfmic/events{/privacy}","received_events_url":"https://api.github.com/users/wolfmic/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2024-08-18T14:04:09Z","updated_at":"2024-08-19T09:20:24Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"While working on this issue: https://github.com/ubiquibot/command-wallet/issues/4\r\nIt appears that `console.logger.warn()` is not implemented yet on `ubiquibot-logger`\r\nIs it useful to add it to this project?","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/29/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/29/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/3","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/3/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/3/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-logger/issues/3","id":2083463506,"node_id":"I_kwDOK3SaHs58LyFS","number":3,"title":"Redundant OK Logs","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-01-16T09:41:09Z","updated_at":"2024-01-16T14:18:00Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"@gitcoindev I'm in the middle of a few things now and I'm hoping you can sync a change for me before I forget and mess things up.\r\n\r\nhttps://github.com/pavlovcik/ubiquibot/blob/85177d0be5f5f0dde874f4164426a7c7d4702ea1/src/adapters/supabase/helpers/tables/logs.ts#L274\r\n\r\nThis was redundantly logging every type of log as \"ok\" in the console, causing a lot of noise. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/3/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/3/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/146","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/146/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/146/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/146/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/146","id":2585978056,"node_id":"I_kwDOK6Xdq86aIuTI","number":146,"title":"Avatar Color Matching Comment Tone","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6498475622,"node_id":"LA_kwDOK6Xdq88AAAABg1beZg","url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-10-14T13:01:00Z","updated_at":"2024-10-14T16:21:26Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"![photo_2024-10-14 21 54 29](https://github.com/user-attachments/assets/77d70524-fece-40df-a148-c958b2626c79)\r\n\r\nI think it looks aesthetic to match the avatar to the tone of the posted message. This was a happy accident but as we can imagine, if its an error, then a red avatar appears. We can have a few different authentications/apps with different branding to indicate the \"mood\" of the AI. In case we need unique names, then we can do something like: \r\n- `ubiquity-os[bot]` normal/green/blue\r\n- `ubiquity-os-debug[bot]` purple\r\n- `ubiquity-os-warning[bot]` yellow\r\n- `ubiquity-os-error[bot]` red\r\n\r\n\r\nStatus message color reference https://gist.github.com/0x4007/c17c46cd206970f46115a7ef5c465924\r\n\r\nI suppose that this would require a first-class integration inside of our logger. We also will need to figure a way to deal with the private keys so we can post.\r\n\r\nThis would be used internally in Ubiquity mostly for showcasing/product demos, as I think it could be annoying for partners to install every different app. We could make the logger fallback to posting with default authentication in case the correct app is not found for the class of message. For example, if warning bot is not installed, then it would post the warning authenticated as normal `ubiquity-os[bot]`","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/146/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/146/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/145","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/145/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/145/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/145/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/145","id":2584280905,"node_id":"I_kwDOK6Xdq86aCP9J","number":145,"title":"Stricter auth for Action plugins","user":{"login":"whilefoo","id":139262667,"node_id":"U_kgDOCEz6yw","avatar_url":"https://avatars.githubusercontent.com/u/139262667?v=4","gravatar_id":"","url":"https://api.github.com/users/whilefoo","html_url":"https://github.com/whilefoo","followers_url":"https://api.github.com/users/whilefoo/followers","following_url":"https://api.github.com/users/whilefoo/following{/other_user}","gists_url":"https://api.github.com/users/whilefoo/gists{/gist_id}","starred_url":"https://api.github.com/users/whilefoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whilefoo/subscriptions","organizations_url":"https://api.github.com/users/whilefoo/orgs","repos_url":"https://api.github.com/users/whilefoo/repos","events_url":"https://api.github.com/users/whilefoo/events{/privacy}","received_events_url":"https://api.github.com/users/whilefoo/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-13T21:25:00Z","updated_at":"2024-10-13T21:25:00Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"- Add signature to the payload for Actions plugins\n- Add signature verification in Action plugin SDK","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/145/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/145/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/138","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/138/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/138/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/138/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/138","id":2580331524,"node_id":"I_kwDOK6Xdq86ZzLwE","number":138,"title":"SDK improvements","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-10-11T03:16:46Z","updated_at":"2024-10-15T02:56:43Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"The SDK could get some improvements to make it more friendly to use\r\n\r\n- `\"hono\"` doesn't seem to be shipped with it but is required to serve the plugin, so it might be included, or even better, encapsulated within the SDK.\r\n- there is `createPlugin` and `createActionPlugin`. Maybe we could have only `createPlugin`, that would change behavior depending on either the runtime or the environment (e.g. running on a Worker / Action). What would be great that the user doesn't have to worry about this, and locally a GitHub plugin would run as a server, this way it would be easy to debug locally.\r\n- the `Manifest` type is not exported. The main issue is that when a JSON is imported directly through `import`, the type of `ubiquity:listeners` is a `string[]` and is incompatible with `Manifest`.\r\n- now both Actions and Workers come with a manifest, and this doesn't seem to be currently available for `createActionPlugin` (might be solved if we merge both function).\r\n- the validate and decode + inputs could be handled in the SDK (currently just Decodes with no error nor Default).\r\n- expose the `postComment` methos to make sure we have metadata on the comments\r\n- remove duplicated declaration of `postComment`\r\n- improve logs for error (there is none at the moment)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/138/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/138/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/121","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/121/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/121/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/121/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/121","id":2557351356,"node_id":"I_kwDOK6Xdq86YbhW8","number":121,"title":"KV Limits","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":14,"created_at":"2024-09-30T18:14:42Z","updated_at":"2024-10-15T07:12:15Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"- We hit 90% daily quota today. Given that we don't even have any partners using the system yet, this is looking grim. \r\n- I hope that we can find a way to optimize our KV usage (or we can figure some cheaper alternative, but I am skeptical.)\r\n- \r\n- \r\n\r\n### Projected Costs\r\n\r\n- The good news is that our limits go from 1000 -> 33,333, so we get essentially 33x capacity for $5/month.\r\n- I estimate that once we get most of the planned plugins up and running, we'll be closer to 5k a day. \r\n- `6,666.6666666667` per $1 of cost\r\n- I think each large partner will cost us approximately $1 a month on KV\r\n - Smaller ones will probably be closer to the 1k we are using now. \r\n\r\n### Next Steps\r\n\r\nLet's discuss how we can optimize the KV usage of the kernel. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/121/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/121/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/120","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/120/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/120/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/120/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/120","id":2556461382,"node_id":"I_kwDOK6Xdq86YYIFG","number":120,"title":"Do not break the loop when a plugin fails to run","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-30T12:09:51Z","updated_at":"2024-09-30T12:09:51Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":" The `command-start-stop` was never called which is why it never worked. The reason is that a plugin is failing on a fatal error because of the new orgs that have been created and somehow doesn't have the proper access level\r\n```json\r\n{\r\n \"message\": [\r\n \"Calling handler {\\\"owner\\\":\\\"ubiquibot\\\",\\\"repo\\\":\\\"user-activity-watcher\\\",\\\"workflowId\\\":\\\"compute.yml\\\",\\\"ref\\\":\\\"development\\\"} for event issue_comment\"\r\n ],\r\n \"level\": \"log\",\r\n \"timestamp\": 1727697850120\r\n},\r\n{\r\n \"message\": [\r\n \"Error in event handler\",\r\n \"HttpError: Resource not accessible by integration - https://docs.github.com/rest/actions/workflows#create-a-workflow-dispatch-event\"\r\n ],\r\n \"level\": \"error\",\r\n \"timestamp\": 1727697850679\r\n}\r\n```\r\nI fixed by making the plugin higher on the list. I believe the loop should not break if a plugin is not working properly but just log the error. Also maintaining 4 repos is complex, these repos won't get moved?\r\n\r\n_Originally posted by @gentlementlegen in https://github.com/ubiquity/ubiquity-dollar/issues/965#issuecomment-2383007493_\r\n \r\n\r\nIf a plugin is not reachable or does not start properly, the loop should continue as plugins are independent.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/120/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/120/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/111","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/111/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/111/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/111/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/111","id":2519339981,"node_id":"I_kwDOK6Xdq86WKhPN","number":111,"title":"Cache for repo configs","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-09-11T10:27:56Z","updated_at":"2024-09-11T10:42:42Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"It's kinda annoying that the kernel must fetch from both config locations on every request and more often than not only one is needed. \r\n\r\nCons: \r\n- unnecessary use of rate limit\r\n- clogs up the terminal\r\n\r\nSolution:\r\n+ Could be solved with a KV or in memory cache\r\n+ After n requests we re-fetch from the repo just in case\r\n+ clean terminal and less rate limit used\r\n\r\nDo you think this would be a good thing to implement @whilefoo?","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/111/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/111/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/94","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/94/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/94/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/94/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/94","id":2484721589,"node_id":"I_kwDOK6Xdq86UGde1","number":94,"title":"Handling `issues.assigned` for `task-xp-guard`","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":15,"created_at":"2024-08-24T16:53:17Z","updated_at":"2024-09-08T15:36:26Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Related to https://github.com/ubiquibot/task-xp-guard/pull/1\r\n\r\nThe issue is that after using the `/start` command an `issues.assigned` event is fired but [this line](https://github.com/ubiquity/ubiquibot-kernel/blob/c91cce2a29bb33656c451306db364cb2f51ea504/src/github/handlers/index.ts#L29) in the kernel skips the plugin because `skipBotEvents` defaults to `true` and the sender of that event is the bot which is valid in regards to `issues.assigned`/`task-xp-guard`. \r\n\r\nWhich is why I could only get it to run if I created a two-step chain passing the `issue_comment.created` event forward from `start-stop` to `task-xp-guard` \r\n\r\nMy quick workaround below but is there a better way to handle this sort of thing? I have tried using `skipBotEvents: false` on both plugins with no success. The only thing that seems to work for me is below.\r\n\r\n```ts\r\n if (\r\n pluginChain.skipBotEvents && \r\n \"sender\" in event.payload && \r\n event.payload.sender?.type === \"Bot\" && \r\n context.key !== \"issues.assigned\"\r\n ) {\r\n console.log(\"Skipping plugin chain because sender is a bot\");\r\n return true;\r\n }\r\n```\r\n\r\n- [see this QA](https://github.com/ubq-testing/command-start-stop/issues/15) - shows it failing to catch the event despite `skipBotEvents: false` in the config\r\n\r\n- [see this QA](https://github.com/ubq-testing/command-start-stop/issues/16) - shows that with my workaround it kicks me as it should not only via direct UI assignment","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/94/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/94/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/90","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/90/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/90/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/90/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/90","id":2467624720,"node_id":"I_kwDOK6Xdq86TFPcQ","number":90,"title":"Decrypt sensitive config parameters","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":6498475781,"node_id":"LA_kwDOK6Xdq88AAAABg1bfBQ","url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":13,"created_at":"2024-08-15T08:17:48Z","updated_at":"2024-09-30T14:49:06Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Right now there are 2 ways to hide sensitive bot's config parameters:\r\n1. Make a config repository private (organization collaborators can still see the values though)\r\n2. Fork plugin, self host and set sensitive parameters in env variables (bad UX for partners)\r\n\r\nSensitive config parameters could be encrypted via our own `x25519_PUBLIC_KEY` (the same one we use for encrypting partners' private keys) and the kernel could then decrypt them.\r\n\r\nSo as a part of this issue the kernel should be able to decrypt config parameters on initial config parsing. \r\n\r\nThe expected flow for parsing a single config param:\r\n1. Try to decrypt the parameter. \r\n2. If it is decrypted then use the decrypted parameter.\r\n3. If there's a decryption error then assume the parameter is not encrypted and use a raw value.\r\n\r\nNotice that there is a difference between decrypting: \r\n1. Unencrypted param\r\n2. Encrypted param with another PK\r\n\r\nI hope https://doc.libsodium.org/ distinguishes those 2 errors because in the 2nd case it will be a very subtle bug and the kernel should ideally throw an error like `The config parameter encryption is invalid` so that partner knew he did something wrong on encrypting a param.\r\n\r\nP.S. Handy tool: https://keygen.ubq.fi/\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/90/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/90/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/72","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/72/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/72/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/72/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/72","id":2402419226,"node_id":"I_kwDOK6Xdq86PMgIa","number":72,"title":"Infinite loop using wildcard event","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":13,"created_at":"2024-07-11T07:01:41Z","updated_at":"2024-07-27T00:53:55Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Recently we suffered from infinite loops in the kernel combined with actions. After investigating, it seems that the combination of the wildcard event (`'*'`) with an Action was the cause. What happens is the following:\r\n- the kernel receives a webhook event, say a `push` event\r\n- the kernel dispatches that event to plugins located within `'*'`\r\n- the action starts, say `user-activity-watcher`\r\n- this summons the Github webhook that sends a `workflow_started` event to the kernel\r\n- kernel dispatches that event to `'*'`\r\n- action starts again\r\n\r\nand so on, creating the loop. It doesn't happen with Workers because they don't trigger any event within Github when they are run.\r\n\r\nI think this highlights the dangers of subscribing Actions to that wildcard. Maybe we should consider removing it and changing the way we configure plugins. My idea was to have a `allow | forbid` list where we can configure which events to react to, or which events to ignore, per plugin in the configuration file. Now that we are working on the [manifest feature](https://github.com/ubiquity/ubiquibot-kernel/issues/58), we could even allow plugin creators to set some defaults there, that we can eventually override within the configuration.\r\n\r\nHowever despite these changes we would not be safe from infinite loops (for example, a plugin posting a comment when the event comment posting is triggered). We should think of a way to limit runs if that happens, to avoid bursting through cloudflare limits and github api.\r\n\r\n@0x4007 @whilefoo @rndquu for vis","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/72/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/72/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/54","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/54/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/54/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/54/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/54","id":2348005317,"node_id":"I_kwDOK6Xdq86L87fF","number":54,"title":"Merge configurations by unique IDs","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[{"id":6498475438,"node_id":"LA_kwDOK6Xdq88AAAABg1bdrg","url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/labels/Time:%20%3C4%20Hours","name":"Time: <4 Hours","color":"ededed","default":false,"description":null},{"id":6498475781,"node_id":"LA_kwDOK6Xdq88AAAABg1bfBQ","url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":7381674072,"node_id":"LA_kwDOK6Xdq88AAAABt_toWA","url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/labels/Price:%20300%20USD","name":"Price: 300 USD","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-06-12T07:15:37Z","updated_at":"2024-09-13T17:16:34Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We should look into a more robust configuration merge.\r\n\r\nQuote from discussion:\r\n\r\nI know there isn't a concept of merging configurations together on GitHub Actions. \r\n\r\nThis doesn't address the key point I am making. The cause we are discussing is a collision with dependency IDs. And whether there are real-world scenarios where configurations might lead to duplicate dependencies. \r\n\r\nFrom my experience creating GitHub Actions CI scripts, I haven't encountered situations where adding redundant dependencies was necessary. This makes the theoretical merging logic problem irrelevant to our practical implementation. \r\n\r\nWe should focus on the actual conditions under which our configurations operate, rather than hypothetical scenarios that don't align with real-world use cases.\r\n\r\nBasically I'm saying to drop support for using the same dependency more than one, particularly when associated with the same webhook event. See [this comment](https://github.com/ubiquity/ubiquibot-kernel/pull/47#issuecomment-2154146051) for a suggestion on how to handle that.\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquity/ubiquibot-kernel/issues/47#issuecomment-2162159354_\r\n ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/54/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/54/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/41","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/41/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/41/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/41/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/41","id":2304370599,"node_id":"I_kwDOK6Xdq86JWeen","number":41,"title":"Parsing Org config","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-05-19T01:24:18Z","updated_at":"2024-05-19T01:31:03Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"It used to be the case that the org config was parsed as well. In refactoring [`/research`](https://github.com/ubq-testing/ubiquibot-ask-plugin/issues/1) it relies on `keys.openAi` which cannot be set at the repo level. Perhaps I'm doing something wrong but I don't think I am although insight would be appreciated\r\n\r\n- https://github.com/ubiquity/ubiquibot-kernel/blob/development/src/github/utils/config.ts\r\n\r\nChanges I had to make:\r\n\r\n- The naming convention was recently changed to match the repo-level config but the private config uses the previous version. (unless this has changed since V1)\r\n\r\n```ts\r\nconst _orgConfig = parseYaml(\r\n await download({\r\n context,\r\n repository: \".ubiquibot-config\",\r\n owner: payload.repository.owner.login,\r\n path: \".github/ubiquibot-config.yml\",\r\n })\r\n );\r\n\r\n /**\r\n * @TODO update config package to support this, right now\r\n * it's pulling a hardcoded org config from it's own repo\r\n *\r\n * const merged = await generateConfiguration(_repoConfig, _orgConfig)\r\n */\r\n\r\n let merged = { ..._repoConfig, ..._orgConfig };\r\n```\r\n\r\nAlso `generateConfiguration()` I think needs updated so that it can be passed both configs and have it return a correctly merged config\r\n\r\n```ts\r\nimport orgConfig from \"../../.github/.ubiquibot-config.yml\";\r\nimport { BotConfig, botConfigSchema, validateBotConfig } from \"../types\";\r\nimport { githubPluginType } from \"../types/configuration/plugin-configuration\";\r\n\r\nexport function generateConfiguration(repoConfig?: BotConfig): BotConfig {\r\n const defaultConfig = Value.Default(botConfigSchema, {}) as BotConfig;\r\n\r\n const merged = mergeWith(defaultConfig, orgConfig, repoConfig, (objValue: unknown, srcValue: unknown) => {\r\n if (Array.isArray(objValue) && Array.isArray(srcValue)) {\r\n``` ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/41/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/41/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/32","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/32/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/32/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/32/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/32","id":2183169000,"node_id":"I_kwDOK6Xdq86CIIPo","number":32,"title":"Migration system for Supabase database","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":6,"created_at":"2024-03-13T02:27:32Z","updated_at":"2024-03-15T08:00:14Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We should have a migration system set for our new Supabase instance. To this day, everything is done through the Supabase Dashboard and there is no track of the changes. This become even more critical as we are starting to setup RLS and CLS, which won't be reflected by a db diff dump, as stated in their docs.\r\n\r\nThis means if we need to create a new db, move it, rollback, run it locally, we would be unable to do so and should do everything manually to mimic the current db's state.\r\n\r\nSupabase has a migration system implemented, and a CLI, so we should use these to keep our db updated with the latest schema. Maybe it is better to create a separate repository, as this doesn't really belong to this project specifically. Relates to https://github.com/ubiquity/ubiquibot/issues/919","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/32/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/32/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/30","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/30/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/30/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/30/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/30","id":2177912180,"node_id":"I_kwDOK6Xdq86B0E10","number":30,"title":"Event Queue","user":{"login":"whilefoo","id":139262667,"node_id":"U_kgDOCEz6yw","avatar_url":"https://avatars.githubusercontent.com/u/139262667?v=4","gravatar_id":"","url":"https://api.github.com/users/whilefoo","html_url":"https://github.com/whilefoo","followers_url":"https://api.github.com/users/whilefoo/followers","following_url":"https://api.github.com/users/whilefoo/following{/other_user}","gists_url":"https://api.github.com/users/whilefoo/gists{/gist_id}","starred_url":"https://api.github.com/users/whilefoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whilefoo/subscriptions","organizations_url":"https://api.github.com/users/whilefoo/orgs","repos_url":"https://api.github.com/users/whilefoo/repos","events_url":"https://api.github.com/users/whilefoo/events{/privacy}","received_events_url":"https://api.github.com/users/whilefoo/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-03-10T21:26:00Z","updated_at":"2024-03-11T00:44:31Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"I think we should process events from one repository (or maybe from one issue) in a sequential order. For example if the maintainer adds labels and closes the issue, the second event might be executed before the first one because of the async nature of Github Actions which could cause potential bugs. \r\nBut there might be scenarios where sequential execution is unwanted for example there is a long running task triggered by a command - in this situation we still want to execute other events while the task is running.\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/30/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/30/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/21","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/21/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/21/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/21/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-kernel/issues/21","id":2133704765,"node_id":"I_kwDOK6Xdq85_LcA9","number":21,"title":"Speed Optimization: Configuration Caching ","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-02-14T07:19:14Z","updated_at":"2024-02-14T19:27:16Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"This still requires research on the best approach but currently the bot replies to events in a relatively slow manner. I think that some of the largest time overhead is due to the multiple network roundtrips that are incurred for compiling the configuration for every run. \r\n\r\n> Some other remarks is that I'm curious to see some type of caching approach because on Cloudflare Workers in our current state of research, it must fetch both the organization and repository configurations within the GitHub webhook event handler function. \r\n\r\n> This means that before it can respond to the user invoked event, the Worker needs to make a couple of fetches to those repositories and merge the configuration before it can respond. \r\n\r\n> The configuration is needed to modify the behavior of the Worker response for most situations I can think of so it seems like an optimization that will affect most use cases. \r\n\r\n> We also made a handler for pushes that validates the `yml` configurations which could be a good time to write to cache. Maybe we can write the cached configuration to Cloudflare KV storage or something.\r\n\r\n_Originally posted by @pavlovcik in https://github.com/ubiquity/pay.ubq.fi/issues/135#issuecomment-1943089107_\r\n ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/21/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-kernel/issues/21/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/88","repository_url":"https://api.github.com/repos/ubiquity-os/permit-generation","labels_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/88/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/88/comments","events_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/88/events","html_url":"https://github.com/ubiquity-os/permit-generation/issues/88","id":2583369855,"node_id":"I_kwDOLTwaCM6Z-xh_","number":88,"title":"Optional NFT Types","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6780119957,"node_id":"LA_kwDOLTwaCM8AAAABlCBrlQ","url":"https://api.github.com/repos/ubiquity-os/permit-generation/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":7573368862,"node_id":"LA_kwDOLTwaCM8AAAABw2hwHg","url":"https://api.github.com/repos/ubiquity-os/permit-generation/labels/Time:%20%3C15%20Minutes","name":"Time: <15 Minutes","color":"ededed","default":false,"description":null},{"id":7573368869,"node_id":"LA_kwDOLTwaCM8AAAABw2hwJQ","url":"https://api.github.com/repos/ubiquity-os/permit-generation/labels/Price:%206%20USD","name":"Price: 6 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-10-12T19:38:56Z","updated_at":"2024-10-15T19:49:18Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"> We should fix the type checks in another pull and make these optional probably?\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquity-os/permit-generation/pull/69#discussion_r1797709276_\r\n\r\nDo it with TypeBox","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/88/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/88/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/45","repository_url":"https://api.github.com/repos/ubiquity-os/permit-generation","labels_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/45/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/45/comments","events_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/45/events","html_url":"https://github.com/ubiquity-os/permit-generation/issues/45","id":2486092235,"node_id":"I_kwDOLTwaCM6ULsHL","number":45,"title":"Fix permit generation","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2024-08-26T06:59:43Z","updated_at":"2024-08-26T08:00:46Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"From [v1.4.x](https://github.com/ubiquibot/permit-generation/tree/v1.4.0), using the package will yield an error:\r\n```\r\nError: Failed to get token decimals for token: \"0x........\"\r\n```\r\nThere was recently some updates on the RPC package as well, but I don't think this is related. This is quite important to fix because it seems this package is unusable from `v1.4`.\r\n\r\nExample run: https://github.com/ubiquibot/conversation-rewards/actions/runs/10554543532/job/29236569211#step:4:125\r\n\r\n@Keyrxng rfc","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/45/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/45/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/40","repository_url":"https://api.github.com/repos/ubiquity-os/permit-generation","labels_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/40/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/40/comments","events_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/40/events","html_url":"https://github.com/ubiquity-os/permit-generation/issues/40","id":2402535757,"node_id":"I_kwDOLTwaCM6PM8lN","number":40,"title":"CI: Permit auto claim","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":6780119815,"node_id":"LA_kwDOLTwaCM8AAAABlCBrBw","url":"https://api.github.com/repos/ubiquity-os/permit-generation/labels/Time:%20%3C4%20Hours","name":"Time: <4 Hours","color":"ededed","default":false,"description":null},{"id":6780119957,"node_id":"LA_kwDOLTwaCM8AAAABlCBrlQ","url":"https://api.github.com/repos/ubiquity-os/permit-generation/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":7190985735,"node_id":"LA_kwDOLTwaCM8AAAABrJ28Bw","url":"https://api.github.com/repos/ubiquity-os/permit-generation/labels/Price:%20100%20USD","name":"Price: 100 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-07-11T08:04:19Z","updated_at":"2024-07-11T08:07:01Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"[This](https://github.com/ubiquibot/conversation-rewards/pull/43) PR introduces permit fee which is generated along with our traditional permit rewards. Permit fee is not shown in github comments (you may find it only in a DB) so treasury wallet (permit fee spender) must somehow claim it.\r\n\r\nPossible solution could be to create a separate repository which treasury account owner (or contributors) could fork, then set their EVM private key in github secrets and run CRON workflow for redeeming permits automatically (permit data can be fetched from supabase DB with public anon key).\r\n\r\nClaim transaction [example](https://github.com/ubiquity/pay.ubq.fi/blob/bf5ca4170cf94938647a48ba263baf1d62124389/static/scripts/rewards/web3/erc20-permit.ts#L66-L78).\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/40/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":1,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/40/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/3","repository_url":"https://api.github.com/repos/ubiquity-os/permit-generation","labels_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/3/comments","events_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/3/events","html_url":"https://github.com/ubiquity-os/permit-generation/issues/3","id":2220890707,"node_id":"I_kwDOLTwaCM6EYBpT","number":3,"title":"Handling Sum Rewards From All Active Plugins","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6780119900,"node_id":"LA_kwDOLTwaCM8AAAABlCBrXA","url":"https://api.github.com/repos/ubiquity-os/permit-generation/labels/Time:%20%3C1%20Week","name":"Time: <1 Week","color":"ededed","default":false,"description":null},{"id":6780120119,"node_id":"LA_kwDOLTwaCM8AAAABlCBsNw","url":"https://api.github.com/repos/ubiquity-os/permit-generation/labels/Priority:%204%20(Urgent)","name":"Priority: 4 (Urgent)","color":"ededed","default":false,"description":null},{"id":7391643779,"node_id":"LA_kwDOLTwaCM8AAAABuJOIgw","url":"https://api.github.com/repos/ubiquity-os/permit-generation/labels/Price:%20800%20USD","name":"Price: 800 USD","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":14,"created_at":"2024-04-02T16:01:25Z","updated_at":"2024-09-08T19:39:00Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Similar to how GitHub actions supports capturing output from each step in CI, we should do the same. We should support rewards output (including support for negative values) as well as comment output. \n\nThen the kernel can sum the requested permits and post them all in a single comment at the end when the issue is closed as complete. \n\nRegarding comment output, if we support full HTML comment output from each plugin, we could generate the comment body by concatenating all of the comment outputs of every plugin invoked as a response to the given event. \n\nI suppose there might be another standard useful interface property for passing around metadata between each plugin that is not intended to be comment display data or financial permit data. \n\nThis is an architectural conversation for how to standardize the plugin-kernel interface properties so that they work for all of our intended modular use cases.\n\nSo I guess for inputs every plugin should support some standard properties which right now aren't clear to me. I presume we will pass along event context from the kernel. I suppose we can pass in a string as the arbitrary input value, similar to a command line interface. This will allow us to serialize complex json objects if needed, or pass in simple string parameters to plugins if that's all they need?\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/3/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/permit-generation/issues/3/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/55","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/55/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/55/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/55/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/55","id":2583308555,"node_id":"I_kwDOLf0nHM6Z-ikL","number":55,"title":"Automatic Workflow Deploy","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609286,"node_id":"LA_kwDOLf0nHM8AAAABnJ6ihg","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":6922609559,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jlw","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":7253033872,"node_id":"LA_kwDOLf0nHM8AAAABsFCDkA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":8,"created_at":"2024-10-12T18:14:47Z","updated_at":"2024-10-14T02:08:36Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"If no changes were made to any of the .github/workflows/*.yml files then we should automatically run the workflows. \nThis is relevant for QA (build tests, continuous deploys etc.)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/55/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/55/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/54","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/54/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/54/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/54/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/54","id":2565833744,"node_id":"I_kwDOLf0nHM6Y74QQ","number":54,"title":"Copilot Extension","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609484,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jTA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C1%20Week","name":"Time: <1 Week","color":"ededed","default":false,"description":null},{"id":6922609603,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jww","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":7036264221,"node_id":"LA_kwDOLf0nHM8AAAABo2TfHQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%201200%20USD","name":"Price: 1200 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-10-04T08:53:20Z","updated_at":"2024-10-04T09:57:53Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We should make a new microkernel for Copilot. The idea is simple: we have a built in chatbox on GitHub Web and GitHub Mobile. Allow us to interface with the bot using the chatbox instead of comments!\r\n\r\nI think this 1. may prove to be a more natural interface 2. can help with marketing as it is a \"new feature\" on GitHub. We could easily post about this on reddit and hackernews for example. \r\n\r\n- https://docs.github.com/en/copilot/building-copilot-extensions\r\n- https://github.com/marketplace?type=apps&copilot_app=true\r\n\r\n###### Similar [^01^]\n\n[^01^]: [New Task Or Edit Pull Arbiter](https://www.github.com/ubiquity-os/plugins-wishlist/issues/53) 76%\n[^02^]: [2025 Plugins Wishlist](https://www.github.com/ubiquity-os/plugins-wishlist/issues/52) 76%","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/54/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/54/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/53","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/53/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/53/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/53/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/53","id":2564353822,"node_id":"I_kwDOLf0nHM6Y2O8e","number":53,"title":"New Task Or Edit Pull Arbiter","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-10-03T15:28:21Z","updated_at":"2024-10-03T15:36:38Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"### Overview\r\n\r\n- During pull requests, we need to have a bias of always moving forward. \r\n- We always need to make an active decision on whether to include requested changes in the current pull or if we should break them off into new tasks. \r\n- We should use an LLM to help us decide what to do. \r\n\r\n### Ideal Outcome\r\n\r\nWe seamlessly can review pulls and then the OS can intelligently create a new issue batching the requested changes and link back. Ideal if it can batch similar tasks aiming for between 1 hour and 1 day within the same GitHub issue (I think this is possible with my experience working with Claude 3.5 Sonnet.)\r\n\r\n### Implementation\r\n\r\nThe way that this can work is if we leave the review state as \"commented\" and leave comments that seem like we want changes to be done. These will need to be understood by the OS. \r\n\r\nIf we really think the changes are critical to be done in the current pull, then we must be sure to \"request changes.\" \r\n\r\n### Remarks\r\n\r\nI am concerned that it might be too quick to fire off new issues, so ideally we have it understand that there is a possibly already created \"post pull request review\" task, and to continue batching everything from the review in that task (we could standardize the naming scheme of the generated issue.) \r\n\r\nWe may possibly need to check for pull request closed and merged to process the full conversation and fire off new tasks. This will allow us room to determine the necessity of such suggestions. \r\n\r\n###### Similar [^01^]\n\n[^01^]: [2025 Plugins Wishlist](https://www.github.com/ubiquity-os/plugins-wishlist/issues/52) 81%","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/53/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/53/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/52","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/52/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/52/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/52/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/52","id":2559820984,"node_id":"I_kwDOLf0nHM6Yk8S4","number":52,"title":"2025 Plugins Wishlist","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-10-01T17:33:40Z","updated_at":"2024-10-01T19:05:48Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"### From @ubiquity/ubiquibot\r\n\r\n- https://github.com/ubiquity/ubiquibot/issues/394 - UX Enhancement - Command Start Stop\r\n- https://github.com/ubiquity/ubiquibot/issues/784 - Feature - Command Start Stop\r\n- https://github.com/ubiquity/ubiquibot/issues/893 - Feature UX\r\n- https://github.com/ubiquity/ubiquibot/issues/774 - Research - Enhancement UX (Might Be N/A)\r\n-\r\n- https://github.com/ubiquity/ubiquibot/issues/754 - Enhancement - Conversation Rewards\r\n- https://github.com/ubiquity/ubiquibot/issues/780 - Enhancement - Conversation Rewards\r\n- https://github.com/ubiquity/ubiquibot/issues/772 - Enhancement - Conversation Rewards\r\n- https://github.com/ubiquity/ubiquibot/issues/776 - Enhancement Prioritization - Conversation Rewards\r\n-\r\n- https://github.com/ubiquity/ubiquibot/issues/324 - Feature - Disqualifer \r\n- https://github.com/ubiquity/ubiquibot/issues/322 - Enhancement - Disqualifier\r\n- https://github.com/ubiquity/ubiquibot/issues/606 - Research - Disqualify slow pull based on accrued rewards (precursor to XP)\r\n-\r\n- https://github.com/ubiquity/ubiquibot/issues/291 - Feature - Command Ask \r\n- https://github.com/ubiquity/ubiquibot/issues/755 - Feature - Command Query \r\n- https://github.com/ubiquity/ubiquibot/issues/721 - Feature - Command Query for Orgs\r\n-\r\n- https://github.com/ubiquity/ubiquibot/issues/746 - Feature - Automated Pull Request Reviews ([There's a better, newer spec now](https://github.com/ubiquity-os/plugins-wishlist/issues/45))\r\n- https://github.com/ubiquity/ubiquibot/issues/690 - Research - Automated Pull Request Reviews\r\n-\r\n- https://github.com/ubiquity/ubiquibot/issues/717 - Enhancement - Rewards\r\n- https://github.com/ubiquity/ubiquibot/issues/701 - Feature - Priced Pulls Without Linked Issues\r\n-\r\n- https://github.com/ubiquity/ubiquibot/issues/782 - Monetization Strategy\r\n- https://github.com/ubiquity/ubiquibot/issues/904 - Feature - Permit Generation (Monetization)\r\n-\r\n- https://github.com/ubiquity/ubiquibot/issues/771 - Feature - Dynamic Priority\r\n- https://github.com/ubiquity/ubiquibot/issues/846 - Enhancement - Prioritization ([Updated](https://github.com/ubiquity-os-marketplace/disqualifier/issues/26) \r\n-\r\n- https://github.com/ubiquity/ubiquibot/issues/439 - Debating\r\n- https://github.com/ubiquity/ubiquibot/issues/647 - Research - UbiquityOS Kernel Config Merging\r\n- https://github.com/ubiquity/ubiquibot/issues/758 - Feature - Penalty using git blame\r\n- https://github.com/ubiquity/ubiquibot/issues/751 - Company Strategy\r\n- https://github.com/ubiquity/ubiquibot/issues/836 - Security - Authorized Config Editing\r\n- https://github.com/ubiquity/ubiquibot/issues/787 - Research - Monetization database, not sure but seems useful for reference\r\n- https://github.com/ubiquity/ubiquibot/issues/777 - Enhancement - Follow Ups\r\n- https://github.com/ubiquity/ubiquibot/issues/883 - Feature - POAP NFTs\r\n\r\n### Inspirations\r\n\r\nThese were not issues on these features but they reminded me of them.\r\n\r\n- Promotional footers on permit generation comment https://github.com/ubiquibot/production/issues/59#issuecomment-1714291529 \r\n- Ensure \"fund-external-closed-issue\" is false, meaning if an outsider files an issue, and it gets funded, that a collaborator needs to close it before payments are made https://github.com/ubiquity/ubiquibot/issues/742\r\n- Monetization strategy high level draft: https://github.com/ubiquity/ubiquibot/issues/898\r\n\r\n### To Move\r\n\r\n- https://github.com/ubiquity/ubiquibot/issues/886 - Sort of a very early prototype https://github.com/0x4007/sync-configs","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/52/reactions","total_count":2,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":2,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/52/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/51","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/51/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/51/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/51/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/51","id":2556596173,"node_id":"I_kwDOLf0nHM6YYo_N","number":51,"title":"Donations","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609365,"node_id":"LA_kwDOLf0nHM8AAAABnJ6i1Q","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":6922609500,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jXA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":7253033872,"node_id":"LA_kwDOLf0nHM8AAAABsFCDkA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-09-30T12:56:23Z","updated_at":"2024-09-30T14:07:15Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"- GitCoin is apparently pretty popular for donations. \r\n- The bot automatically posts a donation address on new (priced) tasks. I suppose it would be the active wallet address. \r\n- This can be especially powerful in public good open source projects, like Foundry!\r\n\r\nSource https://github.com/ubiquity/ubiquibot/issues/136","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/51/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/51/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/49","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/49/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/49/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/49/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/49","id":2547996710,"node_id":"I_kwDOLf0nHM6X31gm","number":49,"title":"Generalized \"GitHub Webhook + Contributor Role -> Rewards\" Unit Tests","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609449,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jKQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-25T13:25:57Z","updated_at":"2024-09-25T13:26:39Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"The final stop is to write comprehensive unit tests for everything. Small tests are expected in the other deliverables, but this is intended to cover any odds and ends leftover.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/49/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/49/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/48","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/48/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/48/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/48/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/48","id":2547986191,"node_id":"I_kwDOLf0nHM6X3y8P","number":48,"title":"Generalized \"GitHub Webhook + Contributor Role -> Rewards\" Contributor Class v2","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609449,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jKQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-25T13:21:54Z","updated_at":"2024-09-25T13:24:00Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Extending on https://github.com/ubiquity-os/plugins-wishlist/issues/46 we should be able to identify the user's \"class\"\r\n\r\n> In the next iteration, we should identify the user's \"class\"\r\n\r\n1. `specification author` - the original author of the task\r\n2. `assignee` - they are the one responsible for the deliverable\r\n3. `collaborator` - they are added to the org/repo as an official team member\r\n4. `contributor` - the default option","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/48/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/48/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/47","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/47/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/47/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/47/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/47","id":2547975145,"node_id":"I_kwDOLf0nHM6X3wPp","number":47,"title":"Generalized \"GitHub Webhook + Contributor Role -> Rewards\" With Config v3","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609449,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jKQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-25T13:17:23Z","updated_at":"2024-09-25T13:27:15Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"###### This is the original specification, but I realized that this might be a bit ambitious in a single shot, so we'll work on adding the ability to configure it in v2.\r\n\r\nBuilds upon #46, #48\r\n\r\nWe need to discuss the final config schema but below is an early draft to start the ideation from\r\n\r\n## Draft Schemas\r\n\r\n- I am working on designing the config schema, and I wonder if it makes more sense to have two seperate plugins, one for issues only, and one for pulls only. Here I have a single plugin handling both, but perhaps the config can get a bit verbose and messy?\r\n\r\nHeres a small example of a single (issue or pull) handler plugin config schema, which seems neat:\r\n\r\n```yml\r\npull_request: \r\n assigned: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\n```\r\n\r\nBelow is handling both\r\n\r\n\r\n```yml\r\n\r\npull_request: \r\n assigned: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n auto_merge_disabled: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n auto_merge_enabled: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n closed: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n converted_to_draft: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n demilestoned: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n dequeued: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n edited: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n enqueued: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n labeled: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n locked: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n milestoned: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n opened: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n ready_for_review: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n reopened: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n review_request_removed: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n review_requested: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n synchronize: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n unassigned: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n unlabeled: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n unlocked: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\npull_request_review: \r\n dismissed: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n edited: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n submitted: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\npull_request_review_comment: \r\n created: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n deleted: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n edited: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\npull_request_review_thread: \r\n resolved: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n unresolved: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\npush: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\ncommit_comment: \r\n created: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\nissue_comment: \r\n created: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n deleted: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n edited: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\nworkflow_run: \r\n completed: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n in_progress: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n requested: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\nworkflow_dispatch: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\ncheck_run: \r\n completed: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n created: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n requested_action: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n rerequested: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\ncheck_suite: \r\n completed: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n requested: \r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n rerequested:\r\n pull: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n issue: \r\n targets: [ ISSUER, ASSIGNEE, COLLABORATOR, CONTRIBUTOR ]\r\n value: 0\r\n\r\n```\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/47/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/47/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/44","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/44/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/44/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/44/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/44","id":2535493089,"node_id":"I_kwDOLf0nHM6XII3h","number":44,"title":"Autoresponder Plugin (for DevPool Directory)","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609365,"node_id":"LA_kwDOLf0nHM8AAAABnJ6i1Q","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":6922609559,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jlw","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null},{"id":6922610683,"node_id":"LA_kwDOLf0nHM8AAAABnJ6n-w","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%20100%20USD","name":"Price: 100 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-19T07:13:54Z","updated_at":"2024-09-19T07:13:57Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"When any comments are posted, automatically reply with a configurable message. I think the default can be something instructional like \"You must set the default auto response in the configuration.\"\r\n\r\nThe intended use case is to guide users who mistakenly try and self assign directly on the directory:\r\n\r\n> When I just started contributing I made [this same mistake](https://github.com/ubiquity/devpool-directory/issues/1402) and it was never picked up by the team.\r\n> \r\n> It would be great if we could have an automatic response from the bot when someone comments on any issue in the `devpool-directory`. This message would be something like `This is a no-reply repo, please visit ${taskUrl} to contribute towards this task.`\r\n> \r\n> We should automate this so that we can set-and-forget which is the best way to handle this.\r\n\r\nOriginally posted by @Keyrxng https://github.com/ubiquity/devpool-directory-bounties/issues/36","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/44/reactions","total_count":2,"+1":2,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/44/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/43","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/43/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/43/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/43/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/43","id":2513931508,"node_id":"I_kwDOLf0nHM6V14z0","number":43,"title":"Pull Reversions","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-09T13:10:38Z","updated_at":"2024-09-09T13:10:38Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Strike one for auto merger. This shouldn't have been merged. Had to revert. \n\nUpon reversion, the contributor should be unassigned. The task should be reopened. Debts should be created if the permits were issued- although the debt system never panned out smoothly. \n\nIt's nice that we have to manually generate the reward as a final check actually (not a bug, a feature?) \n\n> @pbkompasz as a heads up this isn't accepted. \n\n> Strike one for the auto merger. \n\n_Originally posted by @0x4007 in https://github.com/ubiquity/pay.ubq.fi/pull/296#issuecomment-2338070584_","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/43/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/43/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/40","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/40/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/40/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/40/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/40","id":2480796859,"node_id":"I_kwDOLf0nHM6T3fS7","number":40,"title":"Dockerized Dev Env","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-08-22T13:27:53Z","updated_at":"2024-08-22T23:01:20Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"This is experimental and unsure how far it would manage to get but here goes.\r\n\r\nTaking inspiration from https://github.com/nektos/act.\r\n\r\nTo improve the dev experience for working on plugins it would be _fantastic_ if we could cram everything that we need into a container which can be easily used on any OS. \r\n\r\nThe most important feature of it is the ability to run our workflows locally without the tediousness of repeatedly pushing, waiting 30 secs for start up and 10s-2m to find an error, add logs then rinse and repeat n times.\r\n\r\nIf this could be streamlined such that our env supports this out of the box, it would make life a dream to work on any kind of plugin.\r\n\r\nIf we include the kernel itself it ensures consistency across setups, less repos to manage for new contributors etc which might be more attractive?\r\n\r\n---\r\n\r\nI don't have a lot of experience with Docker so this is as far as I'll spec this task for now","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/40/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":1},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/40/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/37","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/37/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/37/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/37/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/37","id":2477041144,"node_id":"I_kwDOLf0nHM6TpKX4","number":37,"title":"\"L2 Agent\"","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609449,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jKQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":6922609500,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jXA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":6922610683,"node_id":"LA_kwDOLf0nHM8AAAABnJ6n-w","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%20100%20USD","name":"Price: 100 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-08-21T04:42:32Z","updated_at":"2024-08-22T00:38:53Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I was reading my friends [blog post](https://transitivebullsh.it/agentic-spectrum) and was inspired to think about AI systems in a more structured way. They have these AI \"level\" designations. \n\nIt would be interesting to make an L2 agent according to the definition in the blog post:\n\n> L2 agents use LLMs selectively to decide how to handle key points in the program’s control flow.\n> Today, this often boils down to deciding which tool to invoke based on a set of tools which have been carefully curated by a human programmer.\n> The most common example of L2 agents today is invoking an LLM with access to tools in a while loop.\n> The majority of the program’s control flow still resides outside of the LLM’s purview and is controlled by a human programmer.\n\nThis is a stepping stone to L3 according to the blog because L3 coordinates L2 and below. \n\n---\n\nWe can make this a command interface where we can tag the bot and ask for requests in plain language:\n\n@ubiquity-os give me the wallet address of @0x4007 \n\n---\n\nIn the above example, we should pass the entire help menu to ChatGPT and it can invoke the correct plugin based on the command description. \n\nI think this should be quite straightforward to implement, and is a useful stepping stone towards a more advanced AI powered system.\n\nWe can use ChatGPT 4o mini because this seems pretty simple to just look at the help menu. \n\n### Advanced Version\n\nAs a more advanced version of this plugin, we can listen for every comment (no bot tag required) and the bot can jump in to help if it thinks it can based on any comment. For example, if somebody asks to be assigned to a task, perhaps the bot can somehow invoke /start on behalf of that user (which inherits all of the checks, like if they are already assigned to too many other open tasks etc) \n\nThis makes the bot's presence much more pronounced, and it will truly feel like a helpful, and proactive member of the team instead of \"a tool\" that must be specifically called upon for help. \n\n### Remark\n\nI suppose if it calls other plugins with LLMs (like conversation rewards, somehow) then technically this would be considered an L3 class system. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/37/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/37/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/35","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/35/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/35/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/35/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/35","id":2465056368,"node_id":"I_kwDOLf0nHM6S7cZw","number":35,"title":"Crypto faucet","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[{"id":6922609484,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jTA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C1%20Week","name":"Time: <1 Week","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":11,"created_at":"2024-08-14T07:01:27Z","updated_at":"2024-08-16T07:06:39Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"We have plans for generating contributors' ethereum wallet private keys via webauthn passkeys in order to make reward claiming \"gasless\". So the flow for a contributor could be:\r\n1. User calls a `/register` command (handled by the faucet plugin). The bot replies with smth like \"Pls register your account at safe.ubq.fi\".\r\n2. User opens `safe.ubq.fi`, generates a new passkey, we derive user's private key and public address, user's newly generated wallet address is saved to a DB.\r\n3. When user solves an issue (i.e. the issue is closed as completed) the faucet plugin sends some funds to the user's address.\r\n\r\nThere already exists a faucet worker at https://github.com/ubiquity/faucet. We need to wrap https://github.com/ubiquity/faucet into the bot's plugin.\r\n\r\nSo as a part of this issue the faucet plugin should:\r\n1. Handle the `register` (or similar) command in order to show to a contributor the \"Pls register your account at safe.ubq.fi\" message\r\n2. Handle the issue's \"closed as completed\" event and send some funds to the contributor's wallet (if that's the 1st issue solved by the contributor and he hadn't received funds earlier)\r\n\r\nOriginal [comment](https://github.com/ubiquity/safe.ubq.fi/pull/2).","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/35/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/35/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/33","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/33/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/33/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/33/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/33","id":2441607677,"node_id":"I_kwDOLf0nHM6Rh_n9","number":33,"title":"Rewards for simplifying/cleaning code","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609409,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jAQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C4%20Hours","name":"Time: <4 Hours","color":"ededed","default":false,"description":null},{"id":6922609500,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jXA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":6922610683,"node_id":"LA_kwDOLf0nHM8AAAABnJ6n-w","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%20100%20USD","name":"Price: 100 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-08-01T06:34:53Z","updated_at":"2024-09-02T19:55:22Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I was working on [this pull](https://github.com/ubiquity/ubiquibot-telegram/pull/45/files) and thought it could be cool to have a small reward for simplifying the codebase. \r\n\r\nDiff stats: \r\n\r\n```diff\r\n+5426\r\n-6760\r\n```\r\n\r\nA simple formula could be to divide by 10 then subtract. i.e. `676 - 542.6 = $133.4`\r\n\r\nWith our strict linter rules we should be able to avoid BS refactors. \r\n\r\n### Rationale \r\n\r\nGenerally codebase maintainers should try and keep the code clean and simple. This offers a direct financial incentive for everybody to do so. Our task oriented system is not very compatible with the continuous nature of code simplification and reduction, so this plugin addresses that. \r\n\r\n### Filters\r\n\r\nWe can use filename regex to make specific types of files eligible such as `*.ts`, `*.sol`\r\n\r\n### Remark\r\n\r\nThis is intended to be stacked on regular task related pulls as well (it doesn't need to be a dedicated refactor pull.)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/33/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/33/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/31","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/31/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/31/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/31/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/31","id":2436809994,"node_id":"I_kwDOLf0nHM6RPsUK","number":31,"title":"Auto `/fix` CI failures","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609409,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jAQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C4%20Hours","name":"Time: <4 Hours","color":"ededed","default":false,"description":null},{"id":6922609500,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jXA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":6922610683,"node_id":"LA_kwDOLf0nHM8AAAABnJ6n-w","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%20100%20USD","name":"Price: 100 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":24,"created_at":"2024-07-30T03:35:19Z","updated_at":"2024-07-31T10:16:14Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"> One dream I always had was to have ChatGPT automatically commit a change (perhaps via pull) if tests break, and giving it like ten attempts to keep trying a fix until it gives up on its pull. \r\n\r\n> Then it could, in theory automatically fix small problems. This might be difficult to get right so that it doesn't get in the way but it could be a handy feature. \r\n\r\n> Perhaps it could be invoked with a slash command /fix etc\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquibot/automated-merging/pull/4#discussion_r1694415502_\r\n \r\nCan probably make use of the code in the linked pull above.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/31/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/31/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/30","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/30/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/30/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/30/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/30","id":2431862625,"node_id":"I_kwDOLf0nHM6Q80dh","number":30,"title":"Config Protection","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609365,"node_id":"LA_kwDOLf0nHM8AAAABnJ6i1Q","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":6922609500,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jXA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":7253033872,"node_id":"LA_kwDOLf0nHM8AAAABsFCDkA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2024-07-26T09:51:25Z","updated_at":"2024-07-26T12:42:19Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Not sure if this is fully possible from within the webhook event, but the idea is that only admins or billing managers should be able to modify the config because it affects money flow. \r\n\r\nOn commit, check if config was modified. If it is unauthorized, rollback the change by immediately committing the previous version as the UbiquiBot. \r\n\r\nThis should make it near impossible for fraud. \r\n\r\n---\r\n\r\nSeems like [relevant logic](https://github.com/ubiquibot/assistive-pricing/blob/d259e29b2896026a164e7c1af4f2b72ce31fe90c/src/handlers/get-base-rate-changes.ts) I saw in [a pull](https://github.com/ubiquibot/assistive-pricing/pull/18/files#). ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/30/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/30/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/29","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/29/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/29/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/29/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/29","id":2402769945,"node_id":"I_kwDOLf0nHM6PN1wZ","number":29,"title":"`/gpt` ask a context aware question","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609449,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jKQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":6922609500,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jXA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":7191503619,"node_id":"LA_kwDOLf0nHM8AAAABrKWjAw","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%20200%20USD","name":"Price: 200 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2024-07-11T09:56:17Z","updated_at":"2024-09-11T01:14:04Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"# Overview\r\n- Similar to an old proposal for `/ask`.\r\n- The goal is to ask a context-aware question.\r\n- Feed the entire conversation context into ChatGPT4o.\r\n- Include any linked pull requests or issues and their entire conversation context.\r\n- Prioritize the issue specification to set the topic, then add comments.\r\n- Simplify comments by showing the username prepending the comment.\r\n- Divide conversations in the prompt using headers and footers.\r\n\r\n# Prompt Template\r\n\r\n**=== Start Project Specification === ubiquibot/plugins-wishlist #[Issue Number] ===**\r\n```\r\n[GitHub issue specification body]\r\n```\r\n**=== End Project Specification ===**\r\n\r\n**=== Start Issue Conversation === ubiquibot/plugins-wishlist #[Issue Number] ===**\r\n```\r\n[Comment ID] [Username]: [Comment]\r\n[Comment ID] [Username]: [Comment]\r\n...\r\n```\r\n**=== End Issue Conversation ===**\r\n\r\n**=== Start Linked Pull Request Conversation === ubiquibot/plugins-wishlist #[Pull Request Number] ===**\r\n```\r\n[Comment ID] [Username]: [Comment]\r\n[Comment ID] [Username]: [Comment]\r\n...\r\n```\r\n**=== End Linked Pull Request Conversation ===**\r\n\r\n**=== Start Linked Pull Request Code Diff === ubiquibot/plugins-wishlist #[Pull Request Number] ===**\r\n```diff\r\n- [Old Code]\r\n+ [New Code]\r\n```\r\n**=== End Linked Pull Request Code Diff ===**\r\n\r\n# Example\r\n\r\n**=== Start Project Specification === ubiquibot/plugins-wishlist #29 ===**\r\n```\r\nAdd a new feature to support XYZ plugins.\r\n```\r\n**=== End Project Specification ===**\r\n\r\n**=== Start Issue Conversation === ubiquibot/plugins-wishlist #29 ===**\r\n```\r\n2222517181 0x4007: We should consider adding support for plugins to enhance functionality.\r\n2222517182 rndquu: I agree, this would be beneficial.\r\n2222517184 gentlementlegen: Do we have any specific plugins in mind?\r\n```\r\n**=== End Issue Conversation ===**\r\n\r\n**=== Start Linked Pull Request Conversation === ubiquibot/plugins-wishlist #30 ===**\r\n```\r\n2222517187 devuser1: Implemented basic support for plugins.\r\n2222517189 devuser2: This looks good, but needs more testing.\r\n```\r\n**=== End Linked Pull Request Conversation ===**\r\n\r\n**=== Start Linked Pull Request Code Diff === ubiquibot/plugins-wishlist #30 ===**\r\n```diff\r\n- // insert log\r\n+ console.log(\"test\");\r\n```\r\n**=== End Linked Pull Request Code Diff ===**\r\n\r\n# Notes\r\n- Include the org/repo/issue to help ChatGPT understand references to other issues/pulls.\r\n- Annotate comments with their IDs so that ChatGPT can produce outputs with links to other comments for references.\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/29/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/29/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/28","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/28/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/28/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/28/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/28","id":2397700892,"node_id":"I_kwDOLf0nHM6O6gMc","number":28,"title":"Configuration checks and annotations","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-07-09T09:48:52Z","updated_at":"2024-07-10T05:31:15Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Currently the bot is capable to annotate errors on the configuration, when it is changed. It would be nice to benefit from the same capability on the v2.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/28/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/28/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/27","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/27/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/27/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/27/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/27","id":2397200564,"node_id":"I_kwDOLf0nHM6O4mC0","number":27,"title":"Reviewer Competition","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-07-09T05:49:45Z","updated_at":"2024-07-09T05:49:45Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Leverage game theory and incentivize reviewers to post a review before the others. \n\nFor example, the first to review gets $100 reward and the others get $50 reward. \n\nWe could also consider a linear drop off depending on how long the review was available for. \n\nFor example if a pull is ready for review, we make available the full reward ($100) and then after 3.5 days it's $0 \n\n1.75 day delay would be $50 \n\nSo it's a linear drop off in the reward and this is calculated based on how long it took the reviewer to get around to it. \n\nThis could carve out dedicated reviewer roles which might be useful for speeding up merges","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/27/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":1},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/27/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/25","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/25/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/25/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/25/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/25","id":2371338962,"node_id":"I_kwDOLf0nHM6NV8LS","number":25,"title":"Telegram GitHub Issue \"Workroom\"","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609484,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jTA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C1%20Week","name":"Time: <1 Week","color":"ededed","default":false,"description":null},{"id":6922609603,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jww","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":6952524237,"node_id":"LA_kwDOLf0nHM8AAAABnmcZzQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%20600%20USD","name":"Price: 600 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":19,"created_at":"2024-06-25T00:11:26Z","updated_at":"2024-10-12T05:57:47Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"I realize that some projects require collaboration, and our team has a natural tendency to direct message each other. The problem with this approach is that the collaborative research in direct messages is not auditable. The conversation that occurred would be useful for future reference to post a summary to the completed task. \n\nIt would be nice if as soon as a task is started, the bot can post a link to a freshly generated telegram chat room that acts as a collaborative \"work room\" to solve that particular task \n\nOnce the task is closed as complete, we can use ChatGPT to summarize the essential details from the telegram group chat and post it to the GitHub issue as a conversation summary for future reference \n\nInventing the telegram integration will probably take some time so I'll set this to a week.\n\n---\n\nIt would be nice to get automatically kicked from the chat when the task is completed so that our telegrams don't get cluttered with these. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/25/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":1},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/25/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/24","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/24/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/24/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/24/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/24","id":2369505964,"node_id":"I_kwDOLf0nHM6NO8qs","number":24,"title":"KYC Permits","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609500,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jXA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":6952524237,"node_id":"LA_kwDOLf0nHM8AAAABnmcZzQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%20600%20USD","name":"Price: 600 USD","color":"1f883d","default":false,"description":null},{"id":7098679006,"node_id":"LA_kwDOLf0nHM8AAAABpx0-3g","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C2%20Weeks","name":"Time: <2 Weeks","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":19,"created_at":"2024-06-24T07:52:15Z","updated_at":"2024-10-06T09:30:06Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"[Powerhouse](https://powerhouse.inc/) inquired about KYC for payments. \r\n\r\n- We can fork our permit generation module and then add a KYC check. \r\n- We should use an API for a third party KYC provider. \r\n\r\nTodo:\r\n\r\n- Research a suitable KYC provider.\r\n- Decide if we should intercept the `/start` command and check if they already KYC'd (seems like the best UX to warn them up front.) \r\n- Ensure that the permit is not generated if KYC did not pass. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/24/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/24/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/22","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/22/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/22/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/22/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/22","id":2359308363,"node_id":"I_kwDOLf0nHM6MoDBL","number":22,"title":"Generalized \"GitHub Webhook + Contributor Role -> Rewards\" Plugin","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-06-18T08:47:42Z","updated_at":"2024-09-25T13:25:57Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"- [ ] #46\r\n- [ ] #48\r\n- [ ] #47\r\n- [ ] #49\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/22/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":1,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/22/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/21","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/21/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/21/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/21/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/21","id":2347274332,"node_id":"I_kwDOLf0nHM6L6JBc","number":21,"title":"failed workflow catcher","user":{"login":"Keyrxng","id":106303466,"node_id":"U_kgDOBlYP6g","avatar_url":"https://avatars.githubusercontent.com/u/106303466?v=4","gravatar_id":"","url":"https://api.github.com/users/Keyrxng","html_url":"https://github.com/Keyrxng","followers_url":"https://api.github.com/users/Keyrxng/followers","following_url":"https://api.github.com/users/Keyrxng/following{/other_user}","gists_url":"https://api.github.com/users/Keyrxng/gists{/gist_id}","starred_url":"https://api.github.com/users/Keyrxng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keyrxng/subscriptions","organizations_url":"https://api.github.com/users/Keyrxng/orgs","repos_url":"https://api.github.com/users/Keyrxng/repos","events_url":"https://api.github.com/users/Keyrxng/events{/privacy}","received_events_url":"https://api.github.com/users/Keyrxng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-06-11T20:43:01Z","updated_at":"2024-06-14T19:24:51Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"See [this](https://github.com/ubiquity/pay.ubq.fi/actions/runs/9472156534/job/26097027405?pr=246) workflow run regarding `Build` CI failing during the `yarn` step. I've came across this in testing plugin workflows where the workflow fails for reasons out of user control during a step it shouldn't such as `yarn`.\r\n\r\nIt's reasonable to expect this to happen again for plugin workflows and the kernel wouldn't know the wf has failed (afaik)\r\n\r\n
\r\n\r\nEvents to work with below, I think it's possible to track workflow steps by name that fail that are expected to never fail. If so, it would be a beneficial plugin to have that can automatically refire these runs.\r\n\r\n\r\n```yml\r\nworkflow_dispatch: [],\r\nworkflow_job: [],\r\n'workflow_job.completed': [],\r\n'workflow_job.in_progress': [],\r\n'workflow_job.queued': [],\r\n'workflow_job.waiting': [],\r\nworkflow_run: [],\r\n'workflow_run.completed': [],\r\n'workflow_run.in_progress': [],\r\n'workflow_run.requested': []\r\n```\r\n\r\n
\r\n\r\nI feel I lack the insight to properly define the spec for this one, if it is possible at all given the kernel structure.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/21/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/21/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/19","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/19/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/19/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/19/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/19","id":2332610127,"node_id":"I_kwDOLf0nHM6LCM5P","number":19,"title":"`read.ai` Reports for \"Communications Team\" Management","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-06-04T05:50:16Z","updated_at":"2024-06-10T07:47:36Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"# Integrate Read.AI Webhooks with Task Management System\r\n\r\n## Overview\r\nIntegrate Read.AI webhooks to automate action item tracking for the communications team. The goal is to ensure sales personnel are paid based on their performance, which includes:\r\n1. Taking scheduled calls (and being on time)\r\n2. Covering key points on the calls\r\n3. Handling follow-up tasks\r\n\r\nThis integration focuses on managing investor relations associates who pitch high-level information about Ubiquity DAO Series A round to prospective investors.\r\n\r\n## Background\r\nOur communications team consists of lead generation and investor relations associates. Investor relations associates take the first wave of investor candidates, pitch the high-level overview of Ubiquity, and loop in the technical team for detailed due diligence if the investors are interested. Associates follow a script regarding the investment opportunity while focusing on relationship building with the investors.\r\n\r\nRead.AI records Zoom calls and generates summaries, including post-call action items. We aim to automate task assignment and management for salespersons by creating GitHub issues for follow-up tasks based on Read.AI's analysis.\r\n\r\n## 1/3 Taking the Scheduled Calls\r\nThe basic function of their job is to make it to the scheduled calls. The lead generation team, familiar with setting up webhooks, can send information about when a call is booked and whose calendar it is on. They also monitor when bookings are rescheduled, which could be useful to capture.\r\n\r\nBy cross-referencing the call start and end times, we can easily determine if the associate attended the scheduled call.\r\n\r\n## 2/3 Covering Key Points\r\nAssociates must communicate key points to qualify the investor candidate. Important points to cover include:\r\n- Series A $10-$20m raise at $100-$200m valuation (explain the valuation strategy)\r\n- Kernel-plugin architecture and the potential for an \"Apple App Store\" of agents\r\n- MakerDAO partnership\r\n- Card issuance\r\n- Stablecoin history\r\n\r\n### Sales Team Key Points to Emphasize\r\nFrom the [Sales Team Handbook](https://docs.google.com/document/d/13HR8GgPq0zHfr74YwYotRQaC3Fzxio4CGgBpw31Jg1I/edit):\r\n- Series A fundraising specifics and timeline\r\n- Current financial status and previous seed round details\r\n- Overview of the Ubiquity Operating System and its benefits\r\n- Dynamic compensation system for improved productivity\r\n- Potential revenue streams and current stage of monetization\r\n- Commitment to open-source and efficient global team management\r\n- Unique value proposition and competitive advantages\r\n- Plans for partnerships and pilot programs\r\n- Clear closing with an invitation for further engagement\r\n\r\nRead.AI summarizes what points were covered, and we can run it through another ChatGPT prompt to identify any points that were not hit, according to the Read.AI payload.\r\n\r\n## 3/3 Handling Follow-Up Tasks\r\nRead.AI generates a bullet point list of follow-up tasks, including the Zoom username per task. We can extract these follow-up tasks and assign them to the associate on GitHub as separate issues. One issue per week with all the follow-up tasks could be created, with default priority and time levels set, so that when tasks are completed, associates can receive a reward.\r\n\r\n## Example Read.AI Payload\r\n\r\n```json\r\n{\r\n \"payload\": {\r\n \"session_id\": \"01HZJ1FY5RRM6NR0W87J5ZBHC1\",\r\n \"trigger\": \"meeting_end\",\r\n \"title\": \"Meet Meeting\",\r\n \"start_time\": \"2024-06-04T16:32:28+00:00\",\r\n \"end_time\": \"2024-06-04T17:47:25+00:00\",\r\n \"participants\": [\r\n {\r\n \"name\": \"アレクサンダー\",\r\n \"first_name\": \"アレクサンダー\",\r\n \"last_name\": null,\r\n \"email\": null\r\n },\r\n {\r\n \"name\": \"K77 Dewhales\",\r\n \"first_name\": \"K77\",\r\n \"last_name\": \"Dewhales\",\r\n \"email\": null\r\n },\r\n {\r\n \"name\": \"[redacted]\",\r\n \"first_name\": \"[redacted]\",\r\n \"last_name\": null,\r\n \"email\": \"[redacted]\"\r\n }\r\n ],\r\n \"owner\": {\r\n \"name\": \"[redacted]\",\r\n \"first_name\": \"[redacted]\",\r\n \"last_name\": null,\r\n \"email\": \"[redacted]\"\r\n },\r\n \"summary\": \"The meeting began with Alexander discussing his transition from a developer to focusing on fundraising, highlighting the challenges faced with existing investors and the strategy behind the previous seed round. K77 Dewhales inquired about the potential involvement of previous backers in the current round, and Alexander emphasized the importance of finding partners to help the company and discussed the approach of extending the round to existing investors as a courtesy. \\n\\nK77 Dewhales presented an in-depth overview of DeWales Capital, emphasizing its role as a crypto native organization operating at the intersection of an investment DAO and a VC. They detailed the collective decision-making process involving over 200 members with a combined portfolio of 350 million, the comprehensive VC structure, advisory services, liquidity provision capabilities, connections to portfolio companies and partners, and the meticulous voting and pledge phases for project approval and investment. \\n\\nAlexander provided insights into the fundraising strategy, highlighting the original window for fundraising and the need to refine pitch materials and onboard investor relations associates. He also delved into the potential partnership with Microsoft's fund for GitHub, emphasizing the importance of open source products in encouraging new developers to join the movement. Additionally, he explained the impact of the Bitcoin halving cycle on the fundraising timeline and the objective to secure partners unaffected by the price of Bitcoin.\\n\\nThe meeting also covered Ubiquity's future plans and funding strategy, including the development of an on-chain neobank with a stablecoin, aiming to build an ecosystem of useful applications and incentivize settlement in their stablecoin. Alexander elaborated on the plan to offer banking services, such as providing lines of credit based on users' income and offering prepaid Visa and Mastercards with no KYC requirements, which can be used for cashing out or making payments via mobile wallets. The discussion also touched on the challenges of working with card issuers and the prototype solution developed by Ubiquity to provide banking services.\",\r\n \"action_items\": [\r\n {\r\n \"text\": \"Alexander will develop and implement the XP system for governance within the Ubiquity platform.\"\r\n },\r\n {\r\n \"text\": \"Alexander will research and select a company for smart contract audits and security assessments.\"\r\n },\r\n {\r\n \"text\": \"Alexander will finalize the fundraising strategy and terms for the current round.\"\r\n },\r\n {\r\n \"text\": \"Alexander will refine the go-to-market strategy for attracting developers to the Ubiquity platform and contributing to DAO tasks.\"\r\n },\r\n {\r\n \"text\": \"K77 will pass the information gathered from the meeting to the members for voting.\"\r\n },\r\n {\r\n \"text\": \"Alexander will send the developer onboarding document to K77.\"\r\n },\r\n {\r\n \"text\": \"Alexander will identify and pursue additional strategic partnerships with DAOs beyond the current list.\"\r\n },\r\n {\r\n \"text\": \"アレクサンダー will send the read AI report and await feedback from [K77 Dewhales].\"\r\n },\r\n {\r\n \"text\": \"Alexander will send the read AI report to K77.\"\r\n },\r\n {\r\n \"text\": \"Alexander will keep in touch with K77 on Telegram for further discussions.\"\r\n }\r\n ],\r\n \"key_questions\": [\r\n {\r\n \"text\": \"Which companies are being considered for smart contract audits and security assessments?\"\r\n },\r\n {\r\n \"text\": \"What is the developer onboarding process like at Ubiquity?\"\r\n },\r\n {\r\n \"text\": \"What is the go-to-market strategy for attracting developers to use the Ubiquity platform and contribute to DAO tasks?\"\r\n },\r\n {\r\n \"text\": \"Is the payment processing system fully reliant on human reviewers?\"\r\n },\r\n {\r\n \"text\": \"What is the jurisdiction of the company and the token issuer?\"\r\n }\r\n ],\r\n \"topics\": [\r\n {\r\n \"text\": \"Development of DAO Operating System\"\r\n },\r\n {\r\n \"text\": \"Fundraising Strategy and Objectives\"\r\n },\r\n {\r\n \"text\": \"Smart Contract Auditing and Security\"\r\n },\r\n {\r\n \"text\": \"Payment processing and bot review system\"\r\n },\r\n {\r\n \"text\": \"Company jurisdiction and token issuer\"\r\n }\r\n ],\r\n \"report_url\": \"https://app.read.ai/analytics/meetings/01HZJ1FY5RRM6NR0W87J5ZBHC1\",\r\n \"chapter_summaries\": [\r\n {\r\n \"title\": \"Fundraising Strategy and Investor Relations\",\r\n \"description\": \"Alexander shares his shift from a developer role to focusing on fundraising, the challenges faced with existing investors, and the strategy behind the previous seed round. K77 Dewhales asks about the potential involvement of previous backers in the current round and expresses understanding of the situation.\",\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Introduction to DeWales Capital\",\r\n \"description\": \"K77 Dewhales introduces DeWales Capital, highlighting its unique position as a crypto native organization combining an investment DAO and a VC. They outline the collaborative decision-making process, the comprehensive VC structure, advisory services, liquidity provision capabilities, connections to portfolio companies and partners, and the detailed voting and pledge phases for project approval and investment.\",\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Discussion on Fundraising and Potential Partnerships\",\r\n \"description\": \"Alexander outlines the fundraising plans, mentioning the original window for fundraising and the need to refine pitch materials and onboard investor relations associates. He also discusses the potential partnership with Microsoft's fund for GitHub and the importance of open source products in incentivizing new developers to join the open source movement.\",\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Development of DAO Operating System\",\r\n \"description\": null,\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Fundraising Strategy and Objectives\",\r\n \"description\": null,\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Project Overview and Partnerships\",\r\n \"description\": \"K77 Dewhales requests a quick intro about the project from Alexander, who then shares the backstory, highlighting the pilot phase and partnerships with Powerhouse and Yearn Finance. Alexander explains the focus on engineering and decentralized values, as well as the intention to work with a select few DAOs before going public with the project.\",\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Alexander's Experience with Self-Employment and Payroll Solution\",\r\n \"description\": \"Alexander discusses his transition from self-employment to founding a digital agency and later developing a payroll solution for his team. He details the use of time tracking software to create a productive work environment without a traditional clock-in, clock-out system, allowing team members to work on their own time while being compensated based on their productive hours.\",\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Operational Efficiency and DAO Solutions\",\r\n \"description\": \"Alexander shares his experiences with operational efficiency and the crypto world, emphasizing the importance of managing a global workforce in DAOs. He introduces the concept of dynamic compensation and discusses the AI manager for DAOs, which monitors work contributions and offers financial incentives across various platforms.\",\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Ubiquity's Ecosystem Expansion\",\r\n \"description\": \"Alexander outlines the revenue share model for projects using Ubiquity's plugin and the development of an on-chain neobank with a stablecoin. He emphasizes the goal of building an ecosystem of useful applications and incentivizing settlement in their stablecoin. Additionally, he discusses the prototype of prepaid Visa and Mastercards with no KYC requirements, which can be used for cashing out or making payments via mobile wallets.\",\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Governance and Auditing Discussion\",\r\n \"description\": \"Alexander presents the XP system for governance, highlighting the significance of contributors' influence based on their contributions. He also outlines the auditing process for smart contracts and the company's financial stability, expressing openness to strategic partnerships.\",\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Smart Contract Auditing and Security\",\r\n \"description\": null,\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Future Vision for Contributor Ecosystem and Matchmaking Market\",\r\n \"description\": \"Alexander presents the future vision for Ubiquity, envisioning a contributor ecosystem where developers and DAOs can efficiently find and work on tasks. He highlights the use of AI for matchmaking and the potential exposure through partnerships with large organizations, emphasizing the goal of creating a highly efficient marketplace for tasks.\",\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Payment Process and Workflow\",\r\n \"description\": \"アレクサンダー explained the system's process, where bot reviews and human reviewers play a crucial role in approving projects and generating payment permits. He also demonstrated how the system handles simultaneous submissions and assigns tasks to contributors, along with the allocation of rewards and bounties based on contributions and code reviews. K77 Dewhales expressed interest and noted the need to wrap up the discussion due to time constraints.\",\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Payment processing and bot review system\",\r\n \"description\": null,\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Presentation on Ubiquity's Future Plans and Funding Strategy\",\r\n \"description\": \"Alexander, representing Ubiquity, presents the company's future plans, focusing on deep vertical integration, user experience, and revenue strategies. He highlights the company's R&D efforts, treasury status, and the integration of DeFi and AI. Additionally, he addresses the jurisdiction of the company and token issuer, emphasizing compliance and transparency.\",\r\n \"topics\": []\r\n },\r\n {\r\n \"title\": \"Company jurisdiction and token issuer\",\r\n \"description\": null,\r\n \"topics\": []\r\n }\r\n ]\r\n }\r\n}\r\n```\r\n\r\n## Implementation Details\r\n\r\n- We need a webhook endpoint to receive these events from read.ai. These are transmitted as soon as the Zoom call ends. \r\n\r\n## Order of Implementation\r\n\r\n1. I think for the first version, we can focus on \"covering key points\" \r\n - This will essentially automate training, which makes our recruiting efforts a lot easier.\r\n2. Next would be \"follow up tasks\"\r\n3. Last would be \"taking the scheduled calls\" \r\n - They should be terminated if they miss calls, which can be audited through other means.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/19/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/19/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/12","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/12/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/12/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/12/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/12","id":2294447023,"node_id":"I_kwDOLf0nHM6Iwnuv","number":12,"title":"Comment metadata command","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":10,"created_at":"2024-05-14T05:35:24Z","updated_at":"2024-09-24T10:22:04Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"The bot comment metadata system is very useful for error logs, but sometimes the error logs dont show enough information and this should be fixed.\r\n\r\n[See source code](https://github.com/ubiquity/ubiquibot/blob/8aaf055c091cc3e7f2b42c9f1cf88f45b1d86d17/src/handlers/shared/structured-metadata.ts)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/12/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/12/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/8","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/8/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/8/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/8/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/8","id":2292579147,"node_id":"I_kwDOLf0nHM6IpftL","number":8,"title":"push/check modified base rate on base rate change","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[{"id":6922609409,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jAQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C4%20Hours","name":"Time: <4 Hours","color":"ededed","default":false,"description":null},{"id":6922609603,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jww","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":6952525870,"node_id":"LA_kwDOLf0nHM8AAAABnmcgLg","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%20300%20USD","name":"Price: 300 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":14,"created_at":"2024-05-13T11:42:17Z","updated_at":"2024-09-10T05:04:14Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"A plugin that will update all the price labels if a base rate change is detected. Should most likely be carried out within https://github.com/ubiquibot/assistive-pricing if not already there.\r\n\r\n[See code reference](https://github.com/ubiquity/ubiquibot/tree/4f15f0f294728e701cb9a2e1aac89e2f73623f31/src/handlers/push)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/8/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/8/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/5","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/5/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/5/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/5/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/5","id":2218509351,"node_id":"I_kwDOLf0nHM6EO8Qn","number":5,"title":"Porting Capabilities","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-04-01T15:33:32Z","updated_at":"2024-07-15T03:10:43Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We have many capabilities that should be ported from the old bot code. \r\n\r\nSome useful ones: \r\n\r\n- [x] #7\r\n- [x] #6\r\n- [ ] #8\r\n- [x] #9\r\n- [x] #10\r\n- [x] #11\r\n- [ ] #12\r\n\r\nWe can break this apart into separate tasks as we get closer to implementation. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/5/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/5/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/4","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/4/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/4/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/4/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/4","id":2217881913,"node_id":"I_kwDOLf0nHM6EMjE5","number":4,"title":"Developer Referrals","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":24,"created_at":"2024-04-01T09:11:57Z","updated_at":"2024-04-04T06:23:36Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"In order to increase the size of our developer community, we should pay who refer developers who contribute. Let's call them DevRels.\r\n\r\nThe vision is to generate a new permit for the DevRel upon task completion. \r\n- It is unclear to me exactly how to do default pricing (flat fee, percentage) \r\n- It can be easy to game and squeeze out extra rewards with a self referral unless the DevRel's cut is zero sum from the developer. If it is zero sum, then a percentage would be safest i.e. 5% or 10%. What is the highest percentage we can go before developers get annoyed? Perhaps we can also set a max cap, like 50 USD per reward in addition to the percentage. For example, if a developer receives a 1000 USD reward, perhaps the DevRel cap can be max 50 USD. \r\n- I fear the rewards may not be very competitive. We can consider high (non zero sum) rewards in the short term to kick things off, then switch it to zero sum mode later.\r\n- We should also consider a reward for every developer referred (this may be implemented as a separate tool though, because it seems incompatible with the percentage or zero sum system)\r\n\r\n### Configuration Requirements\r\n\r\n- For version one, lets go only with percentages support. Make sure that the percentage is configurable. \r\n - This will keep things simple in case the DevRel earns a tiny reward for leaving a small comment etc.\r\n- Make sure that we can toggle zero sum mode (subtract from developer reward to pay the DevRel.) \r\n\r\n### Implementation Overview\r\n\r\nWe can do this in a couple of parts:\r\n1. the new referral logs in with GitHub at `work.ubq.fi?ref=[github user id of DevRel]` \r\n2. we associate in a KV store the key being the DevRel GitHub ID and the value being an array of DevRel values. \r\n```typescript\r\ntype GitHubId = number;\r\ntype KV = { [key: GitHubId]: GitHubId[] };\r\n```\r\n\r\nThis feels a little parasitic if a developer accidentally clicks a DevRel's link at some point in the future, especially if they start losing some of their rewards. I think we need some type of system to \"undo\" a referral. This doesn't feel like the right solution but I'm unsure what is. \r\n\r\n### Sybils\r\nWe can protect against sybils based on the age of a GitHub profile as well as a minimum XP requirement. For example, if the developer XP is low then the rewards are zero sum?","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/4/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/4/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/3","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/3/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/3/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/3","id":2208105478,"node_id":"I_kwDOLf0nHM6DnQQG","number":3,"title":"Personal Agent","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609365,"node_id":"LA_kwDOLf0nHM8AAAABnJ6i1Q","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C2%20Hours","name":"Time: <2 Hours","color":"ededed","default":false,"description":null},{"id":6922609603,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jww","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null},{"id":6970035825,"node_id":"LA_kwDOLf0nHM8AAAABn3JOcQ","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%20150%20USD","name":"Price: 150 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2024-03-26T12:24:26Z","updated_at":"2024-10-03T18:19:32Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"# Task\r\n\r\n- This will be registered under `issues_comment.created`\r\n- This will look for username tags at the beginning of any comment, and relay everything to their self hosted plugin. \r\n- The rest of the magic happens within their own self hosted plugin so this should be a super simple plugin to build.\r\n\r\n### Config\r\n\r\nThe host repository name. For example:\r\n\r\n```yml\r\nplugins:\r\n - uses:\r\n - plugin: ubiquity-os-marketplace/ubiquity-os-agent\r\n with:\r\n target: ubiquity-os-agent\r\n```\r\n\r\nThen comments starting with `@0x4007` will relay the full `issues_comment.created` payload to `0x4007/ubiquity-os-agent`\r\n\r\n# Context\r\n\r\nThis one I'm very excited about. The vision here is that we can make custom user \"agents\" (i.e. plugins with LLMs) that are hosted by the user's GitHub (so they can modify it) and will automate actions for the user (with their PAT to authorize as them) with the full context of a particular repository/organization. \r\n\r\n- We make a repository that power users are intended to fork, for example `@ubiquibot/personal-agent` -> `@pavlovcik/personal-agent`\r\n- A repository/organization configures personal agents command to be `/@` `/@pavlovcik` maybe something like that. This should also support arguments, for example a sentence that can be parsed by an LLM `/@pavlovcik review my pull #123`\r\n - This technically would allow other users to invoke other user's agents. We can easily see if the invoker is an \"authorized\" user by checking the event context, and hard coding authorized users (self) in the boilerplate plugin code. \r\n - I wonder if it would be more useful if we just look for comments that start with a username tag instead, it might be more natural to set up automations for common questions/requests i.e. `@pavlovcik can i work on this issue?` then my agent, with my PAT, and my custom prompt saying what to do in this situation, would just automatically assign them and explain the `/start` command.\r\n- The kernel will invoke a request (and pass all parameters) to that user's plugin/agent (hosted at `@username/personal-agent` actions)\r\n- The user can grant access to their PAT from their agent, allowing the agent to act on behalf of the owner inheriting their permissions. \r\n\r\nThere are some ways we can make the template code which will be forked:\r\n1. simple starting point would be just template/boilerplate that doesn't do anything\r\n2. code makes a call to an LLM (we could even run a small model locally on the GitHub Action runner potentially in order to make dealing with credentials/API keys more hands off, at the tradeoff of it being dumber than ChatGPT etc but decentralization/free is cool)\r\n 1. this LLM has a big prompt in the template that explains the context (you're running in a github action runner and a user invoked you from this repo...) and its capabilities (we can provide some local functions from our SDK that it can invoke to perform specific tasks by using an authenticated octokit instance using the person's PAT. It also receives all of the context of the event invocation (which user called the function, what repository and organization is it coming in from? possibly even scraping all the linked issues and pull requests for more context)\r\n 2. If we can reliably get the LLM to write working code with Octokit (or just raw CURLs with the PAT) then we can have a context aware and english language input to any function a user can perform on GitHub (limited to the PAT permissions) which is quite interesting. \r\n 3. The user can \"fine-tune\" their LLM by adding extra details and preferences to their prompt in their forked code. I imagine that I would continue to add new sections as I see repetitive questions/queries.\r\n\r\n---\r\n\r\nAssuming that the org config enables support for personal agents, technically we can extend personal agent capabilities beyond GitHub. Generic telegram example: `@pavlovcik send me the credentials on Telegram @username` with the right code in my personal agent, the GitHub Action can send information to their Telegram. All invoked from the GitHub Action runner!\r\n\r\nThis could make plugin development a lot more exciting and rapid. If the team all works on their own agents, and tests them in production, we could extract useful bits from eachothers' and release \"official\" plugins which may normally have slower r&d cycles. \r\n\r\nIn the further future, our kernel can support webhooks coming in from other services (like Telegram) and invoke user agents which can be a very powerful architecture for platform composability. For example, a bot call (can be \"inline\" in a dm to someone as well) that will pass along the conversation context to our kernel, then to a user's personal agent (github action) back to kernel and then back to Telegram\r\n\r\n### Notes for @pavlovcik/personal-agent\r\n\r\n- I want to make use of the XP system (as an admin) to soft incentivize/disincentivize behaviors. \r\n - Prompt follow ups: there are situations where I tag team members for input and they take days to reply. I think if they take longer than 24 hours to reply, I would want to dock XP, and include an automated follow up (perhaps even on Telegram dm!) High performing team members generally reply promptly. XP can be used as a heartbeat for how actively engaged the contributor is, and how well they are performing, which is important for performance evaluations regarding base pay. \r\n - On the other end of the spectrum: unnecessary tags[^1^]. If I make it clear to team members that I am around to help but more for emergencies, I would appreciate not being pinged on things unless its essential. Would be interesting to make a personal agent that will automatically reply (like an away message) explaining this, while also scrubbing out the tag from their message. Assuming it is during my awake/working hours, I would still receive a push notification on my device from the original tag. \r\n\r\n## Planned Capabilities\r\n\r\n### Comment rewrites:\r\n\r\nFrom my phone sometimes writing comments can be arduous with the custom vocabulary we use and the autocorrect. A simple agent that will save me from a lot of frustration is to edit my comments posted, and correct any typos when I post from my phone. \r\n\r\n### Review and follow up:\r\n\r\nSometimes a pull request will be 99% of the way there. It will be something like \"just make sure CI passes\" or \"fix merge conflicts\" \r\n\r\nIdeally the personal agent should monitor pulls that I approved and are still opened. If I said something like this, and if those conditions are met, it should merge the pull. \r\n\r\n- Example: https://github.com/ubiquity-os/plugin-template/pull/23#issuecomment-2391416311\r\n\r\n[^1^]: Although it is not clear to me how we can capture the event from this. I suppose I would need to manually add in the org/repo config for `issue_comment.created`.\r\n\r\n###### Similar [^01^]\r\n\r\n[^01^]: [2025 Plugins Wishlist](https://www.github.com/ubiquity-os/plugins-wishlist/issues/52) 84%\r\n[^02^]: [New Task Or Edit Pull Arbiter](https://www.github.com/ubiquity-os/plugins-wishlist/issues/53) 82%","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/3/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/3/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/2","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/2/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/2/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/2/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/2","id":2204223494,"node_id":"I_kwDOLf0nHM6DYcgG","number":2,"title":"Rewrite Specification","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":6922609484,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jTA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C1%20Week","name":"Time: <1 Week","color":"ededed","default":false,"description":null},{"id":6922609500,"node_id":"LA_kwDOLf0nHM8AAAABnJ6jXA","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":7191503619,"node_id":"LA_kwDOLf0nHM8AAAABrKWjAw","url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%20200%20USD","name":"Price: 200 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":11,"created_at":"2024-03-24T07:27:00Z","updated_at":"2024-09-08T03:29:20Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Sometimes issues are submitted but not finalized until the team contributes more ideas and research. This leads to the issue specification being out of sync with the latest information, leading to the contributors having to be sure to read the full conversation before starting the task and delivering their work. \r\n\r\n- A simple tech solution to this would be some type of `/rewrite` specification command (I'm unsure whats the best default slash command for this.) \r\n- This will feed the entire GitHub conversation into an LLM to rewrite the issue specification. \r\n- This command can directly edit the issue specification with the results (we have revision history built in so no information is lost.)\r\n- We can also place more weight on the issue author's comments as they likely have the clearest vision. \r\n- It would be nice to think of a way for this to be automatically called instead of relying on manual invocation. \r\n- Perhaps when a pricing related label is adjusted (like `Time: ` in particular) as this is what I recall having to change based on new information being added to an issue.\r\n\r\n### Recommended Default Invocations\r\n\r\nRemember invocations should be fully customizable based on a repo/org's config. However we should support defaults/recommended invocations based on our dogfooding to give the best default experience to new partners. \r\n\r\n- Listen for `/rewrite` command\r\n- Listen for `Time: ` label change\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/2/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/2/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/1","repository_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist","labels_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/1/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/1/events","html_url":"https://github.com/ubiquity-os/plugins-wishlist/issues/1","id":2184179291,"node_id":"I_kwDOLf0nHM6CL-5b","number":1,"title":"Daily Streak Multiplier","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-03-13T14:38:28Z","updated_at":"2024-03-14T04:17:35Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"> [!WARNING]\r\n> This is an incomplete draft\r\n\r\n### Overview\r\n\r\nA way for the system to pay extra rewards for contributors working on a regular basis. Consistency is key! It's a bit inspired by how some games provide rewards for logging in once a day.\r\n\r\n### Objective\r\n\r\n- It may yield better performance if we incentivize contributors to work \"full time.\"\r\n- Take into consideration that sometimes days off are needed, and not necessarily exactly on weekends. \r\n\r\n### Examples\r\n\r\nI asked ChatGPT to design a system that takes those factors into account and produce a math formula, then simulate. This still needs refinement, and I don't think this proposal is ready for primetime because the math should be figured out first.\r\n\r\n> can you please plot these scenarios?\r\n> 1. normal 40 hour work week. \r\n> 2. part timer doing 20 hours in a week.\r\n> 3. hardcore contributor doing two weeks straight then taking a double weekend break\r\n\r\n> ![image](https://github.com/ubiquibot/plugins-wishlist/assets/4975670/b7c005d0-c58d-4bbf-8c44-d9e9aed69f41)\r\n\r\nThe exploratory discussion continued on to attempt to figure out a means to see how many hours a contributor is working.\r\n\r\n### Necessary components\r\n\r\n- aggregator: aggregating all contributions across all repositories within a specific organization of a specific contributor, and collecting their timestamps\r\n- clustering: approximate the contributor's workday based on clusters of work. \r\n\r\nhttps://chat.openai.com/c/d765d6f7-56d2-460c-a9a7-a0c75334f97b","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/1/reactions","total_count":2,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":2,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/1/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/26","repository_url":"https://api.github.com/repos/ubiquity-os/plugin-template","labels_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/26/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/26/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/26/events","html_url":"https://github.com/ubiquity-os/plugin-template/issues/26","id":2563805590,"node_id":"I_kwDOMBcers6Y0JGW","number":26,"title":"Production Builds & Distribution","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7083000010,"node_id":"LA_kwDOMBcers8AAAABpi4Ayg","url":"https://api.github.com/repos/ubiquity-os/plugin-template/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-10-03T11:25:20Z","updated_at":"2024-10-03T11:27:13Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"- Semi related to https://github.com/ubiquity-os/plugin-template/issues/24 \r\n\r\nI was working on [this pull](https://github.com/m1guelpf/plz-cli/pull/40/files) and appreciate how they automated releases and distributions (based on label) \r\n\r\nWe should consider \"distributing\" as well with a special build script using `ncc` that will compile all the code and used dependencies into a single javascript string. This will make our plugins read for production as these should run almost immediately. \r\n\r\nThis essentially adds the `plz-cli` distribution logic on top of #24 when its implemented. \r\n###### Similar [^01^]\n\n[^01^]: [Optimize Update Manifest Configuration Speed](https://www.github.com/ubiquity-os/plugin-template/issues/25) 89%","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/26/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/26/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/25","repository_url":"https://api.github.com/repos/ubiquity-os/plugin-template","labels_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/25/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/25/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/25/events","html_url":"https://github.com/ubiquity-os/plugin-template/issues/25","id":2561877460,"node_id":"I_kwDOMBcers6YsyXU","number":25,"title":"Optimize Update Manifest Configuration Speed","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7082999692,"node_id":"LA_kwDOMBcers8AAAABpi3_jA","url":"https://api.github.com/repos/ubiquity-os/plugin-template/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":7082999910,"node_id":"LA_kwDOMBcers8AAAABpi4AZg","url":"https://api.github.com/repos/ubiquity-os/plugin-template/labels/Priority:%201%20(Normal)","name":"Priority: 1 (Normal)","color":"ededed","default":false,"description":null},{"id":7097411771,"node_id":"LA_kwDOMBcers8AAAABpwnouw","url":"https://api.github.com/repos/ubiquity-os/plugin-template/labels/Price:%2025%20USD","name":"Price: 25 USD","color":"1f883d","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-10-02T14:43:33Z","updated_at":"2024-10-02T14:44:26Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"> Probably best to compile the js with `ncc` \r\n> \r\n> This will allow us to skip on installing node and all the dependencies and allow for a near instant cold start time \r\n> \r\n> In exchange for possibly less maintainability because we won't have the original source code here \r\n> \r\n> However we can store the source code (typescript) in a separate file and have a simple comment inside explaining how to compile it to be placed within this file.\r\n\r\n_Originally posted by @0x4007 in https://github.com/ubiquity-os/plugin-template/pull/23#discussion_r1783925398_\r\n ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/25/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/25/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/13","repository_url":"https://api.github.com/repos/ubiquity-os/plugin-template","labels_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/13/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/13/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/13/events","html_url":"https://github.com/ubiquity-os/plugin-template/issues/13","id":2410069247,"node_id":"I_kwDOMBcers6Pprz_","number":13,"title":"Make Knip and Jest workflows reusable","user":{"login":"gentlementlegen","id":9807008,"node_id":"MDQ6VXNlcjk4MDcwMDg=","avatar_url":"https://avatars.githubusercontent.com/u/9807008?v=4","gravatar_id":"","url":"https://api.github.com/users/gentlementlegen","html_url":"https://github.com/gentlementlegen","followers_url":"https://api.github.com/users/gentlementlegen/followers","following_url":"https://api.github.com/users/gentlementlegen/following{/other_user}","gists_url":"https://api.github.com/users/gentlementlegen/gists{/gist_id}","starred_url":"https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gentlementlegen/subscriptions","organizations_url":"https://api.github.com/users/gentlementlegen/orgs","repos_url":"https://api.github.com/users/gentlementlegen/repos","events_url":"https://api.github.com/users/gentlementlegen/events{/privacy}","received_events_url":"https://api.github.com/users/gentlementlegen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-07-16T02:47:23Z","updated_at":"2024-09-25T12:43:53Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":" @0x4007 I would propose to convert the Knip workflow into a reusable workflow (https://docs.github.com/en/actions/using-workflows/reusing-workflows) . There is a correct Knip setup now but it needs to be propagated into multiple repositories. The differences between Knip workflow configurations between repositories are minor: bun vs yarn and different yarn versions. I can work on this as soon as I finish the plugin screencasts.\r\n\r\n_Originally posted by @gitcoindev in https://github.com/ubiquibot/permit-generation/issues/35#issuecomment-2216602242_\r\n \r\nWhat we are aiming to solve is the changes needed within all the repositories that inherited from the template when we are fixing a workflow. Having it as a template could solve the synching thus not requiring to update all the workflows across the repositories. This change also applies to https://github.com/ubiquity/ts-template/","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/13/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/13/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/2","repository_url":"https://api.github.com/repos/ubiquity-os/plugin-template","labels_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/2/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/2/comments","events_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/2/events","html_url":"https://github.com/ubiquity-os/plugin-template/issues/2","id":2333453394,"node_id":"I_kwDOMBcers6LFaxS","number":2,"title":"Standard Storage Solution","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":14,"created_at":"2024-06-04T12:49:50Z","updated_at":"2024-10-05T11:01:49Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"# Standardizing Plug-in Data Storage in Organization-Wide Configuration Repository\r\n\r\n## Objective\r\nEstablish a standardized method for storing plug-in data in the `.ubiquibot-config` repository, ensuring data integrity and security. An additional benefit is that this allows partners full control over their data and decentralizes the data storage.\r\n\r\n## Specification\r\n\r\n### Storage Structure\r\n- Each plug-in will have its own JSON database file.\r\n- The filename of each JSON database will be the plug-in ID.\r\n- This ensures that plug-ins cannot tamper with each other's data.\r\n\r\n### JSON Database Format\r\n- Each JSON file will store data specific to its corresponding plug-in.\r\n- The structure within the JSON file is determined by the plug-in's requirements.\r\n\r\n### Example\r\nFor a plug-in with ID `@ubiquibot/command-start-stop`, the JSON file will be named `ubiquibot-command-start-stop.json`.\r\n\r\n```json\r\n{\r\n \"dataKey1\": \"value1\",\r\n \"dataKey2\": \"value2\",\r\n ...\r\n}\r\n```\r\n\r\n### Access Control\r\n- The kernel will manage read and write permissions.\r\n- Write access will be restricted to ensure plug-ins can only modify their own JSON file.\r\n- Read access can be granted based on plug-in ID, allowing access to other plug-ins' data as needed.\r\n\r\n### Implementation\r\n1. **Repository Setup**\r\n - Use the `.ubiquibot-config` repository as the general-purpose utility repository per organization.\r\n - Configure GitHub App permissions to allow the kernel to manage repository access.\r\n\r\n2. **Kernel Configuration**\r\n - Ensure the kernel has write access to the repository.\r\n - Implement read access control based on plug-in IDs.\r\n\r\n### Security Considerations\r\n- Restrict write permissions to prevent unauthorized modifications.\r\n\r\n### GitHub App Permissions\r\n- The kernel requires the following GitHub App permissions:\r\n - Read and write access to the configuration repository.\r\n\r\n## Benefits\r\n- **Data Integrity and Security**: By isolating each plug-in's data in its own JSON file, we ensure that plug-ins cannot interfere with each other’s data.\r\n- **Partner Control**: Partners have full control over their data, enhancing privacy and security.\r\n- **Decentralized Storage**: Decentralizing data storage minimizes the risk of data breaches and central points of failure.\r\n- **Simplified Development**: Standardizing data storage eliminates the need to handle different data providers when developing plugins. Methods in our SDK will make it simple for plugin developers to store and access data.\r\n\r\n## Summary\r\nBy standardizing the storage of plug-in data in separate JSON files named after the plug-in ID, we ensure data integrity and security. The kernel will manage access control, providing a robust framework for plug-in data management, and simplifying the development process for plugin developers.\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/2/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/plugin-template/issues/2/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/7","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/7/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/7/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/7/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-plugin-installer/issues/7","id":2535411936,"node_id":"I_kwDOMyHsAM6XH1Dg","number":7,"title":"Import Kernel Config Parser","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7469052357,"node_id":"LA_kwDOMyHsAM8AAAABvTCxxQ","url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/labels/Price:%2050%20USD","name":"Price: 50 USD","color":"1f883d","default":false,"description":null},{"id":7469052409,"node_id":"LA_kwDOMyHsAM8AAAABvTCx-Q","url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/labels/Time:%20%3C1%20Hour","name":"Time: <1 Hour","color":"ededed","default":false,"description":null},{"id":7469052423,"node_id":"LA_kwDOMyHsAM8AAAABvTCyBw","url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/labels/Priority:%202%20(Medium)","name":"Priority: 2 (Medium)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-09-19T06:32:27Z","updated_at":"2024-09-25T15:20:28Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We should import the same parser logic that the kernel uses to keep behavior consistent. \n\nThere should also be another render function to write the config reliably as well.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/7/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/7/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/6","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/6/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/6/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/6/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-plugin-installer/issues/6","id":2530243224,"node_id":"I_kwDOMyHsAM6W0HKY","number":6,"title":"Marketplace","user":{"login":"rndquu","id":119500907,"node_id":"U_kgDOBx9waw","avatar_url":"https://avatars.githubusercontent.com/u/119500907?v=4","gravatar_id":"","url":"https://api.github.com/users/rndquu","html_url":"https://github.com/rndquu","followers_url":"https://api.github.com/users/rndquu/followers","following_url":"https://api.github.com/users/rndquu/following{/other_user}","gists_url":"https://api.github.com/users/rndquu/gists{/gist_id}","starred_url":"https://api.github.com/users/rndquu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rndquu/subscriptions","organizations_url":"https://api.github.com/users/rndquu/orgs","repos_url":"https://api.github.com/users/rndquu/repos","events_url":"https://api.github.com/users/rndquu/events{/privacy}","received_events_url":"https://api.github.com/users/rndquu/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":6,"created_at":"2024-09-17T07:07:40Z","updated_at":"2024-10-05T05:32:02Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Depends on https://github.com/ubiquity-os/ubiquity-os-plugin-installer/issues/1\r\n\r\nThe `ubiquity-os-plugin-installer` repository is basically one of the core features of ubiquibot plugins marketplace. We can transform current repository in a plugin marketplace.\r\n\r\nAll plugins will reside in the https://github.com/ubiquity-os-marketplace organization:\r\n- \"official\" plugins (like [conversation-rewards](https://github.com/ubiquity-os/conversation-rewards) or [command-start-stop](https://github.com/ubiquity-os/command-start-stop)) will be transferred to the https://github.com/ubiquity-os-marketplace organization\r\n- partner plugins will have to be forked\r\n\r\nWhat should be done:\r\n1. Create a new UI page that will:\r\n a) Fetch all available plugins from the https://github.com/ubiquity-os-marketplace organization\r\n b) Fetch plugins' manifests from the `manifest.json` file located in a plugin github repository ([example](https://github.com/ubiquibot/conversation-rewards/blob/e46ac5ca9c7c0ca09d7299bed7daee334af4be53/manifest.json))\r\n c) Display all available plugins\r\n3. Implement a caching mechanism (similar to the one in `work.ubq.fi`) so that target github users are not rate limited by github\r\n\r\nIn the end we should support this flow:\r\n1. User opens the marketplace UI\r\n2. User selects a plugin that he wants to install or edit\r\n3. User clicks the \"Install\" or \"Edit\" button and user's `ubiquibot-os` config is updated\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/6/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/6/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/3","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/3/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/3/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-plugin-installer/issues/3","id":2527172531,"node_id":"I_kwDOMyHsAM6WoZez","number":3,"title":"Create add/remove config logic","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[{"id":7469052380,"node_id":"LA_kwDOMyHsAM8AAAABvTCx3A","url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/labels/Price:%20600%20USD","name":"Price: 600 USD","color":"1f883d","default":false,"description":null},{"id":7469052413,"node_id":"LA_kwDOMyHsAM8AAAABvTCx_Q","url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/labels/Time:%20%3C1%20Day","name":"Time: <1 Day","color":"ededed","default":false,"description":null},{"id":7469052421,"node_id":"LA_kwDOMyHsAM8AAAABvTCyBQ","url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/labels/Priority:%203%20(High)","name":"Priority: 3 (High)","color":"ededed","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":11,"created_at":"2024-09-15T20:05:10Z","updated_at":"2024-10-10T13:08:22Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"1. We need to be able to select which `ubiquibot-config.yml` to edit, so we at minimum need an organization picker after GitHub authentication. \r\n2. We need to parse the YML file, and target the config based on the plugin's URL/location. Then edit the YML file and push the commit using the user's credentials.\r\n\r\nMore thoughts on [the readme](https://github.com/Ubiquity-OS/ubiquity-os-plugin-installer?tab=readme-ov-file#add--remove-config).\r\n\r\n### LLM \r\n\r\nWithout research, the lazy answer is that LLMs can easily solve the problem. We could even consider passing in the most important/relevant files of the plugin so that the LLM can figure out all the default values and other miscellaneous details. \r\n\r\nBut it would certainly be preferred to implement this with traditional code. I think with a bit of research it can be pretty straightforward.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/3/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/3/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/1","repository_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer","labels_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/1/comments","events_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/1/events","html_url":"https://github.com/ubiquity-os/ubiquity-os-plugin-installer/issues/1","id":2527168033,"node_id":"I_kwDOMyHsAM6WoYYh","number":1,"title":"Install Plugin UI","user":{"login":"0x4007","id":4975670,"node_id":"MDQ6VXNlcjQ5NzU2NzA=","avatar_url":"https://avatars.githubusercontent.com/u/4975670?v=4","gravatar_id":"","url":"https://api.github.com/users/0x4007","html_url":"https://github.com/0x4007","followers_url":"https://api.github.com/users/0x4007/followers","following_url":"https://api.github.com/users/0x4007/following{/other_user}","gists_url":"https://api.github.com/users/0x4007/gists{/gist_id}","starred_url":"https://api.github.com/users/0x4007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0x4007/subscriptions","organizations_url":"https://api.github.com/users/0x4007/orgs","repos_url":"https://api.github.com/users/0x4007/repos","events_url":"https://api.github.com/users/0x4007/events{/privacy}","received_events_url":"https://api.github.com/users/0x4007/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-15T19:57:14Z","updated_at":"2024-09-15T20:05:24Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"When visiting a plugin URL from web browser, this UI should help us install the plugin and see/configure the default values. \r\n\r\nThis will require GitHub authentication to commit on behalf of the user and make changes to one's `ubiquibot-config.yml` file. \r\n\r\n- [ ] #2\r\n- [ ] #3\r\n- [ ] #4","closed_by":null,"reactions":{"url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/1/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/1/timeline","performed_via_github_app":null,"state_reason":null}]
\ No newline at end of file
diff --git a/devpool-statistics.json b/devpool-statistics.json
index c887b25cc..dc084fa9e 100644
--- a/devpool-statistics.json
+++ b/devpool-statistics.json
@@ -1 +1 @@
-{"rewards":{"notAssigned":15662,"assigned":7200,"completed":81204,"total":104066},"tasks":{"notAssigned":144,"assigned":17,"completed":594,"total":755}}
\ No newline at end of file
+{"rewards":{"notAssigned":15662,"assigned":10975,"completed":77429,"total":104066},"tasks":{"notAssigned":144,"assigned":20,"completed":591,"total":755}}
\ No newline at end of file