{"id":20450061,"url":"https://github.com/ooni/probe-desktop","last_synced_at":"2025-04-13T02:10:39.709Z","repository":{"id":29652627,"uuid":"105703015","full_name":"ooni/probe-desktop","owner":"ooni","description":"The next generation OONI Probe desktop app","archived":false,"fork":false,"pushed_at":"2024-04-09T09:44:00.000Z","size":7457,"stargazers_count":73,"open_issues_count":12,"forks_count":14,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-04-14T09:04:44.245Z","etag":null,"topics":["desktop-app","electron","hacktoberfest","macos","nextjs","ooni","ooniprobe","reactjs","windows"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ooni.png","metadata":{"files":{"readme":"Readme.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2017-10-03T21:02:51.000Z","updated_at":"2024-05-27T19:00:49.668Z","dependencies_parsed_at":"2023-12-08T10:34:48.650Z","dependency_job_id":"c54c2968-d9c0-4a65-a42e-c9e23266e002","html_url":"https://github.com/ooni/probe-desktop","commit_stats":{"total_commits":1133,"total_committers":10,"mean_commits":113.3,"dds":"0.49955869373345096","last_synced_commit":"b981a8f431e58ddef7684b134424104e3718db35"},"previous_names":[],"tags_count":72,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ooni%2Fprobe-desktop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ooni%2Fprobe-desktop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ooni%2Fprobe-desktop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ooni%2Fprobe-desktop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ooni","download_url":"https://codeload.github.com/ooni/probe-desktop/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248654090,"owners_count":21140236,"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":["desktop-app","electron","hacktoberfest","macos","nextjs","ooni","ooniprobe","reactjs","windows"],"created_at":"2024-11-15T10:50:07.428Z","updated_at":"2025-04-13T02:10:39.678Z","avatar_url":"https://github.com/ooni.png","language":"JavaScript","readme":"# OONI Probe Desktop\n\n[![OONI Probe Desktop](assets/OONIProbeLogo.png)](https://ooni.org)\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://slack.openobservatory.org/\"\u003e\n        \u003cimg src=\"https://slack.openobservatory.org/badge.svg\"\n            alt=\"chat on Slack\"\u003e\u003c/a\u003e\n\n  \u003ca href=\"https://github.com/ooni/probe/issues?q=label%3Aooni%2Fprobe-desktop\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/issues/ooni/probe/ooni/probe-desktop\" alt=\"open issues\"\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://twitter.com/intent/follow?screen_name=OpenObservatory\"\u003e\n    \u003cimg src=\"https://img.shields.io/twitter/follow/OpenObservatory?style=social\u0026logo=twitter\"\n    alt=\"follow on Twitter\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nOONI Probe is a free and open source software designed to measure internet\ncensorship and other forms of network interference.\n\n[Click here to report a bug](https://github.com/ooni/probe/issues/new)\n\nOther supported platforms: [iOS](https://github.com/ooni/probe-ios), [Desktop](https://github.com/ooni/probe-desktop), [CLI](https://github.com/ooni/probe-cli)\n\nThis is the desktop implementation of OONI Probe.\n\nOur two primary target platforms are:\n\n- macOS\n- Windows \u003e 7 (we may also support older versions, but not as primary targets)\n\nMoreover, since it's written in electron, we plan on also supporting Linux desktop users.\n\nFor some background on the decision to use electron and the libraries we chose\nto use, see: [Writing a modern cross-platform desktop\napp](https://ooni.org/post/writing-a-modern-cross-platform-desktop-app/).\n\n## Setup\n\nIn order to start hacking on this, we assume you have `node` and `yarn`\ninstalled.\n\nThen you can run:\n\n```bash\nyarn install\n```\n\nYou will also need to have copied a compiled binary of `probe-cli` and `tor`\ninto the directory for the platform you plan to do development on.\n\nTo verify the downloaded tor binaries you should import the PGP key of the tor\ndevelopers as follows (it can be verified from:\nhttps://support.torproject.org/tbb/how-to-verify-signature/):\n```\ngpg --recv-keys EF6E286DDA85EA2A4BA7DE684E2C6E8793298290\n```\n\nYou can then download the assets by running:\n\n```bash\nyarn run download:probe-cli\nyarn run download:tor\n```\n\n## Run app in development mode\n\nTo build and run a development mode electron instance run:\n\n```bash\nyarn run start\n```\n\n## Update the translations\n\n- Save the strings from the canonical spreadsheet into `data/lang-en.csv`\n- Run `node scripts/update-translations.js`\n- Commit `data/lang-en.csv`, `lang/*.json` and `renderer/static/translations.js`\ninto git\n\n## Build and sign macOS app\n\nObtain the development certificate and private key for our team (`YWCG8FZTLT`)\nfrom another OONI developer who has access to it. They need to ensure they export\nnot only the certificate but also the related private key. You should receive a\npassword encrypted `.p12` file containing both. Just double click on this file and\nprovide the password to import the certificate and the key into your keyring. At\ntime point, dispose of the the `.p12` file using `rm -P`.\n\nCreate a `.env` file in the root directory with the following content:\n\n```bash\nGH_TOKEN=TOKEN\nOONI_APPLEID=your@apple.id\nOONI_APPLEIDPASS=XXXX\nOONI_TEAMID=YWCG8FZTLT\n```\n\nwhere `TOKEN` is a [personal github token](https://github.com/settings/tokens/new)\nwith repository scope, `your@apple.id` is the Apple ID you are using as part of our\nteam, `XXXX` is a password specific application created by visiting\n[appleid.apple.com](https://appleid.apple.com) and logging in as `your@apple.id`, and\n`YWCG8FZTLT` is the team ID used by OONI.\n\nThen, run:\n\n```bash\nyarn install\nyarn pack:mac\n```\n\nThis will build `./dist/OONI Probe-$VERSION.dmg`.\n\n## Build and sign an app on Windows\n\nYou will need a copy of the code signing key for windows that ends with `.p12`.\n\nTo generate a signed build you will have to set the environment variables:\n```\nWIN_CSC_LINK=/path/to/key.p12\nWIN_CSC_KEY_PASSWORD=KEY_PASSWORD\n```\n\nYou will then be able to run:\n```bash\nyarn install\nyarn run pack:win\n```\n\n## Publish a release\n\nRun:\n\n```bash\nyarn install\nyarn run publish:mac\nyarn run publish:win\n```\n\n**Important caveat** be sure to not push the tag for the upcoming release until\nafter the `yarn run publish` command has run successfully. If you do so users\nof the OONI Probe Desktop app will get an error when they start the app because\nthe auto-update system will try to fetch the metadata associated with that tag.\n","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fooni%2Fprobe-desktop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fooni%2Fprobe-desktop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fooni%2Fprobe-desktop/lists"}