Kamino is a Chrome and Edge Extension that creates a button on GitHub issue pages. This button can be used to clone an issue to any other repository in which you, the user, are a contributor or member.
In your Google Chrome browser, simply look for Kamino in the Chrome Extensions store and install it (direct link). Once the extension is installed, go to chrome://extensions and click the Options link to enter your GitHub Personal Access Token (PAT). When creating your PAT, make sure to check the following:
repo - all
If you don't know how to create a PAT or need help, check out Creating a token section here
Once you have your PAT, enter it on the Options screen for Kamino and click Save. After that is done, go to any GitHub issue page in which you are a member and you should see a button labeled Clone to.
Kamino also supports GitHub Enterprise Server hosts such as https://github.mycompany.com. For Enterprise use, create the PAT on that Enterprise host; Kamino will use that host's /api/v3 API instead of api.github.com.
Go to original repo's issue list after cloningwill navigate to the issue list for the repo from which the cloning was doneCreate tab for cloned issuewill open a new tab and navigate to the newly cloned issueCopy comments when cloning issuewill copy all comments when the issue is clonedDisable Kamino automatic comments on original issuewill disable automatic comments on the original issue by Kamino
Clicking this button will display a dropdown list of repos. Selecting a repo will ask you to perform one of the following actions:
Clone and Closewill clone the issue and automatically close the original issueJust Clonewill clone the issue and keep the original issue open. This is useful if you've got shared code bases across repos and the issue is similar or the same across repos.Nevermindwill close the modal and no action will be performed
Kamino will remember the last 5 repositories you cloned to so that it will be easy for you to find. If you are someone that is a member of a lot of repos, this should be very handy!
Kamino now supports a quick clone feature. The last repository you cloned to will be shown on a button next to the dropdown. Rather than having to pick the item from the repo list, you can simply click the button to clone to your last used repository!
For those who have a large number of repositories, Kamino has now introduced a search feature. This can be used to filter the list of repositories quickly. Thanks to @CamSoper for the request!
For those who require the ability to clone multiple issues all at once to a repository, there is now a Batch Clone button on the issue list page. This will display a popup that asks where the issue(s) should be cloned and which issue(s) should be cloned. Again, this is a new feature(as of May 2021) and Kamino wasn't meant to do batch cloning, so use at your own risk but I appreciate any and all feedback.
Kamino leverages the GitHub API to gather information about the issue you are on. Kamino is a chrome extension utilizing content scripts to create a button on specific web pages, specifically GitHub issue pages.
If you find an issue, feel free to create an issue here. If you think of a way Kamino can be enhanced, also create an issue outlining your feature.
Outside of the use of your Personal Access Token used by Kamino to perform its core function, we do not have the ability to view or retrieve your token. We do not transmit any information stored by Kamino and it is all stored via the chrome.storage object provided by Google in the development of Chrome extensions. We do not collect or track any personal information such as addresses, IP address, name, emails, credit card numbers, etc... Any analytics package that may be installed will only be used to track number of uses as well as the way Kamino is being used. Any analytics package will NOT store or track repo names, tokens, issue numbers or names or anything else related to the GitHub data used by Kamino.
Kamino can be packaged and uploaded to the Chrome Web Store from the command line or from a manual GitHub Actions workflow. The automation uses the Chrome Web Store API v2 documented at https://developer.chrome.com/docs/webstore/using-api.
Run unit tests with:
yarn testRun the browser-based extension smoke tests with:
yarn playwright install chromium
yarn test:e2eThe Playwright suite loads Kamino as an unpacked Chromium extension and uses mocked GitHub pages/API responses.
yarn buildThis creates dist/kamino-v<manifest version>.zip, which is the package to upload to the Chrome Web Store. The build includes the extension runtime files and leaves out development-only files such as tests, node_modules, and Git metadata.
Before uploading a release, update the version field in manifest.json; Chrome Web Store rejects uploads that do not increase the extension version.
Set these environment variables before uploading:
CWS_CLIENT_IDCWS_CLIENT_SECRETCWS_REFRESH_TOKENCWS_PUBLISHER_IDCWS_EXTENSION_ID
For local releases, you can put those values in a root .env file. .env is ignored by Git.
Then run one of these commands:
yarn upload:chrome
yarn release:chromeyarn upload:chrome uploads the new zip but does not submit it for review. yarn release:chrome uploads the zip and submits it for review using the store item's existing visibility settings.
The deploy script also supports:
node scripts/deploy-chrome-web-store.js --publish --staged
node scripts/deploy-chrome-web-store.js --publish --skip-review
node scripts/deploy-chrome-web-store.js --publish --deploy-percentage 25
node scripts/deploy-chrome-web-store.js --dry-runThe Publish Chrome Web Store workflow is intentionally manual. Add these repository secrets:
CWS_CLIENT_IDCWS_CLIENT_SECRETCWS_REFRESH_TOKENCWS_PUBLISHER_IDCWS_EXTENSION_ID
You can store CWS_PUBLISHER_ID and CWS_EXTENSION_ID as repository variables instead if preferred. The workflow runs tests, creates the zip artifact, uploads it to the Chrome Web Store, and optionally submits it for review.
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!