{"id":17459076,"url":"https://github.com/arjunattam/rubberduck","last_synced_at":"2025-04-15T16:38:42.610Z","repository":{"id":39554675,"uuid":"120296951","full_name":"arjunattam/rubberduck","owner":"arjunattam","description":"Better code navigation on GitHub: Usages, Definitions and Files Tree on code pages and pull requests","archived":false,"fork":false,"pushed_at":"2022-12-22T09:49:41.000Z","size":37014,"stargazers_count":54,"open_issues_count":47,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-04-25T10:02:18.595Z","etag":null,"topics":["bitbucket","chrome-extension","github","javascript","language-server-protocol","typescript"],"latest_commit_sha":null,"homepage":"https://rubberduck.io","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arjunattam.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-02-05T11:38:50.000Z","updated_at":"2023-07-07T22:57:16.000Z","dependencies_parsed_at":"2023-01-30T06:45:39.219Z","dependency_job_id":null,"html_url":"https://github.com/arjunattam/rubberduck","commit_stats":null,"previous_names":["karigari/rubberduck"],"tags_count":52,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arjunattam%2Frubberduck","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arjunattam%2Frubberduck/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arjunattam%2Frubberduck/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arjunattam%2Frubberduck/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arjunattam","download_url":"https://codeload.github.com/arjunattam/rubberduck/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249109762,"owners_count":21214214,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitbucket","chrome-extension","github","javascript","language-server-protocol","typescript"],"created_at":"2024-10-18T04:41:56.336Z","updated_at":"2025-04-15T16:38:42.585Z","avatar_url":"https://github.com/arjunattam.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rubberduck\n\n\u003cimg width=\"100\" height=\"100\" align=\"right\" src=\"./src/logo.svg\" /\u003e\n\nRubberduck is a browser extension that improves code navigation on GitHub. Specifically, it helps:\n\n- **Speed up code comprehension**: find symbol usages and definitions\n- **Reduce context switches**: see documentation inline, on hovering on symbols\n- **Navigate in control**: use the files tree to navigate diffs and code pages\n\nSee it in action on [our website](https://www.rubberduck.io/).\n\nRubberduck is completely open source, and runs entirely on your personal machine (without any external server dependency). We feel this is critical for users to be comfortable using it [on private repos](#using-on-private-repos).\n\n## Setup\n\n1. **Install the native host**: The browser extension relies on a native host application, which manages git repos, and runs the language analysis to find usages and definitions. The native host source is in the [`native-host` dir](./native-host/README.md). To install, run:\n\n   ```\n   npm install -g rubberduck-native\n   ```\n\n2. **Install the browser extension**: The browser extension is available on [the Chrome Store](https://chrome.google.com/webstore/detail/rubberduck/nopekhgebkpkbjoclackdlofmcpokgmc).\n\n## Using on private repos\n\nRubberduck uses personal access tokens to access private repos. Potential improvements are being tracked [in this issue](https://github.com/karigari/rubberduck/issues/42).\n\n### Getting a token\n\n1. Head over to GitHub [create token page](https://github.com/settings/tokens/new).\n2. Select the **repo** scope. The browser extension uses a read-only access to the repo code to provide code-aware features (like usages/definitions).\n3. Set the token in the browser extension settings (`chrome-extension://nopekhgebkpkbjoclackdlofmcpokgmc/options.html`; requires extension to be installed).\n\n### Where is my code stored?\n\nRubberduck runs locally, without any external dependencies. Which means your repo code is stored only on your machine. To see current state of repos on disk, open the extension settings page(`chrome-extension://nopekhgebkpkbjoclackdlofmcpokgmc/options.html`).\n\n### Where is my token stored?\n\nCurrently, the token is stored inside the browser's local storage (using the `chrome.storage.local` APIs). This ensures that the token is **not synced** with other Chrome devices.\n\nA better place to store tokens will be the local system keychain, which is in the backlog and [tracked here](https://github.com/karigari/rubberduck/issues/42).\n\n## Contributions and support\n\nRubberduck is very new, actively developed and you might run into issues here and there. Please help us out by [filing an issue](https://github.com/karigari/rubberduck/issues) when you run into one.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farjunattam%2Frubberduck","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farjunattam%2Frubberduck","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farjunattam%2Frubberduck/lists"}