{"id":51664885,"url":"https://github.com/thunderbird/thundermail-zendesk-sidebar","last_synced_at":"2026-07-14T19:34:09.373Z","repository":{"id":370493672,"uuid":"1279079724","full_name":"thunderbird/thundermail-zendesk-sidebar","owner":"thunderbird","description":"Private Zendesk Support sidebar for viewing Thundermail customer account context.","archived":false,"fork":false,"pushed_at":"2026-06-25T21:05:20.000Z","size":182,"stargazers_count":1,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-09T13:28:34.475Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thunderbird.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-24T10:58:51.000Z","updated_at":"2026-07-02T19:00:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/thunderbird/thundermail-zendesk-sidebar","commit_stats":null,"previous_names":["thunderbird/thundermail-zendesk-sidebar"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/thunderbird/thundermail-zendesk-sidebar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thunderbird%2Fthundermail-zendesk-sidebar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thunderbird%2Fthundermail-zendesk-sidebar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thunderbird%2Fthundermail-zendesk-sidebar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thunderbird%2Fthundermail-zendesk-sidebar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thunderbird","download_url":"https://codeload.github.com/thunderbird/thundermail-zendesk-sidebar/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thunderbird%2Fthundermail-zendesk-sidebar/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35476731,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-14T02:00:06.603Z","response_time":114,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2026-07-14T19:34:08.727Z","updated_at":"2026-07-14T19:34:09.368Z","avatar_url":"https://github.com/thunderbird.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Thundermail Zendesk Sidebar\n\nThe Thundermail Zendesk Sidebar helps support agents give better, faster answers to people using\nThunderbird services. When an agent opens a Zendesk ticket, the sidebar shows the Thundermail account\ncontext connected to the requester: subscription state, account details, mail setup, legal acceptance,\nand links to the internal records that may help resolve the issue.\n\nThis is a private Zendesk Support app. Agents sign in with their Thunderbird Account, and the\naccounts API only returns data to active staff users with the required support-view permissions.\n\nThe app is built as a standalone Vite, Vue, and TypeScript package so it can stay close to the rest of\nthe Thundermail frontend stack while still producing the zip file Zendesk expects.\n\n## Development\n\n### Local Testbed\n\nCreate a local `.env` from `.env.example` to control the Zendesk app settings for local development.\nRun the development server with the following command and open the URL it tells you. At the root\nthere is a local testbed that loads the sidebar.\n\n```bash\nnpm install\nnpm run dev\n```\n\nThere are three ways to test the sidebar:\n* Testbed Local: Uses local mocks to simulate the sidebar loading data from a server.\n* Testbed Stage: Uses real OAuth and makes a request to the configured stage server.\n* Zendesk Apps: Follow Zendesk's instructions to [test your app locally](https://developer.zendesk.com/documentation/apps/getting-started/using-zcli/#testing-your-zendesk-app-locally).\n\nNote that you may run into local network access or CORS issues if you use localhost for either\nTestbed Stage or the Zendesk Apps approach. You may need to set up a tunneling mechanism such as\nTailscale Funnel.\n\n\n### Useful checks\n\nRun these checks before you push a pull request\n\n```bash\nnpm run test\nnpm run typecheck\nnpm run lint\n```\n\n## Deployment\n\n### Zendesk\n\nCreate a Zendesk upload archive with:\n\n```bash\nnpm run build\n```\n\nThe build produces only the production ZAF entry points from `src/zaf`, and then\ncreates `dist/zendesk-sidebar.zip`. Upload `dist/zendesk-sidebar.zip` as a private Support app in\nZendesk Admin Center, or use the update functionality for the existing application.\n\nThe private app needs some settings when it is installed in Zendesk. You can see example values in\nthe `.env.example` file. Once installed you can get the Zendesk Application ID to adjust the Keycloak\nsettings. Use production hosts and client id for the production install.\n\nMore information on how to upload/update Zendesk apps is [available in their\ndocumentation](https://developer.zendesk.com/documentation/apps/getting-started/using-zcli/#updating-a-private-zendesk-app).\n\n### Keycloak \n\nThe Keycloak client should be public and use the standard authorization-code flow with PKCE. Add the\npackaged callback page as an exact valid redirect URI, and add the Zendesk app origin as a web origin\nso the adapter can exchange and refresh tokens from inside Zendesk.\n\nDo not use the development URLs in production clients.\n\n* Redirect URL:\n  * Stage/Production: `https://YOUR_APP_ID.apps.zdusercontent.com/YOUR_APP_ID/assets/*/oauth-callback.html`\n  * For Development: `http://localhost:5175/assets/oauth-callback.html`\n* Web Origin\n  * Stage/Production: `https://YOUR_APP_ID.apps.zdusercontent.com`\n  * For Development: `http://localhost:5175`\n* Client Authentication: Off\n* PCKE Method: S256\n* Client scopes: Delete all optional scopes, especially offline_access\n* Advanced Settings: Reduce access token lifespan, client session idle/max to a minimum\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthunderbird%2Fthundermail-zendesk-sidebar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthunderbird%2Fthundermail-zendesk-sidebar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthunderbird%2Fthundermail-zendesk-sidebar/lists"}