{"id":13851947,"url":"https://github.com/pusher/atom-pair","last_synced_at":"2025-05-16T15:02:35.878Z","repository":{"id":26473302,"uuid":"29925020","full_name":"pusher/atom-pair","owner":"pusher","description":"An Atom package that allows for epic pair programming","archived":false,"fork":false,"pushed_at":"2017-08-30T09:45:57.000Z","size":4030,"stargazers_count":1445,"open_issues_count":16,"forks_count":27,"subscribers_count":26,"default_branch":"master","last_synced_at":"2025-04-12T03:52:50.285Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/pusher.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}},"created_at":"2015-01-27T17:15:19.000Z","updated_at":"2025-03-22T22:26:25.000Z","dependencies_parsed_at":"2022-08-07T12:00:34.167Z","dependency_job_id":null,"html_url":"https://github.com/pusher/atom-pair","commit_stats":null,"previous_names":[],"tags_count":59,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pusher%2Fatom-pair","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pusher%2Fatom-pair/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pusher%2Fatom-pair/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pusher%2Fatom-pair/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pusher","download_url":"https://codeload.github.com/pusher/atom-pair/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248564869,"owners_count":21125412,"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":[],"created_at":"2024-08-04T22:00:50.160Z","updated_at":"2025-04-12T11:49:30.600Z","avatar_url":"https://github.com/pusher.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# AtomPair\n[![Build Status](https://travis-ci.org/pusher/atom-pair.svg?branch=tweaks)](https://travis-ci.org/pusher/atom-pair)\n\nRemote pairing within the [Atom](http://atom.io) text editor, powered by Pusher.\n\n## Version 2.0.0\n\n* This major release allows users to share multiple tabs. Any new tabs open within a window where a pairing session is active will be synchronized across.\n* Hand-made notifications views have now been ditched in favour of using Atom's Notifications API.\n* Initiating a session automatically writes the session ID to your clipboard, allowing you to simply paste it to your partner.\n* Using autocomplete no longer leaves clients out of sync.\n\n## How Do I Get Started?\n\n### Install\n\nFirst off, install Atom if you haven't already. Now type into your terminal:\n\n    $ apm install atom-pair\n\nAlternatively, go to the command palette via \u003ckbd\u003eCommand\u003c/kbd\u003e+\u003ckbd\u003eShift\u003c/kbd\u003e+\u003ckbd\u003eP\u003c/kbd\u003e and go to `Install Packages and Themes`. Then search for and install `atom-pair`.\n\n### Invite\n\nYou can either decide to pair on a blank slate, or on existing code. If you invite somebody to collaborate on existing code, they will see everything you can, and their syntax highlighting will be synchronized with yours.\n\nAs detailed below, there are two ways you can invite others. Given a [free](https://pusher.com/signup?utm_source=Reddit\u0026utm_medium=Atom.io_Package_Page\u0026utm_campaign=AtomPair) Sandbox plan, there will be a maximum of 20 collaborators per session. *Note that you must enable client-events in App Settings when you create a new Pusher app, otherwise this plugin will not work.*\n\n#### Basic Invitation\n\nHit \u003ckbd\u003eCommand\u003c/kbd\u003e+\u003ckbd\u003eShift\u003c/kbd\u003e+\u003ckbd\u003eP\u003c/kbd\u003e, and in the command palette, hit `AtomPair: Start A New Pairing Session`.\n\nA session ID will be automatically copied to your clipboard.\n\n![Basic Invite](https://raw.githubusercontent.com/pusher/atom-pair/master/images/invite.gif)\n\n#### HipChat Invitation\n\nThe other way - one that we use quite often - is to invite collaborators over [HipChat](http://hipchat.com), a service for intra-company chat. You can sign up for a free account [here](https://www.hipchat.com/sign_up).\n\nWe wanted this partly as an easy way of giving collaborators a session ID, but also so that other members of the team could join in if they wanted to.\n\nIf you have admin privileges in a HipChat organization, go to your Package Settings (`⌘+,` -\u003e 'Packages' -\u003e 'atom-pair'). Enter your HipChat API key and the room you wish the invitation to be sent through.\n\nNow, when you enter `AtomPair: Invite Over HipChat` and enter your collaborator's HipChat @mention_name in the command palette, they will receive an invitation with a session ID.\n\n![HipChat Invite](https://raw.githubusercontent.com/pusher/atom-pair/master/images/hipchat.jpg)\n\n#### Slack Invitation\n\nIf you use [Slack](https://slack.com/) instead of HipChat, we have you covered for that too.  It works pretty much the same way as the HipChat integration.  All you need to do is log into your Slack account and click \"Configure Integrations\" and configure an \"Incoming Webhook\".  It will ask you to choose a channel you want to post messages to, but this doesn't really matter too much, you will manually specify the channel or recipient when you send the invite.  Once you set up your integration, it will give you a \"Webhook URL\".  You'll need to copy this URL, and put it in your atom-pair configuration where it asks for a \"WebHook URL for Slack Incoming Webhook Integration\".\n\nTo send the invite, simply enter \"AtomPair: Invite Over Slack\" and enter either the channel you want to send the invite to _(#channel)_ or the person you want to send the invite to _(@person)_.  Once you do, all they have to do is join the session with the session ID and you'll be pair programming!\n\n![Slack Invite](https://raw.githubusercontent.com/pusher/atom-pair/master/images/slack.jpg)\n\n### Collaborate!\n\n![Demo](https://raw.githubusercontent.com/pusher/atom-pair/master/images/demo.gif)\n\nOnce your partner has a session ID, they should go to the command pallette and hit `AtomPair: Join a pairing session`, and enter the ID.\n\nOnce there are more than one of you in a session, your collaborators will be represented by a coloured marker in the gutter, which will changed position based on their selections and inputs.\n\nAny new files opened in that window will be automatically synced across, and you can work on different files at the same time.\n\nTo end a pairing session, go to `AtomPair: Disconnect`, and you will be disconnected from Pusher, and the file will be free for you to save.\n\n## Free And Open For Everyone\n\nCurrently, you are given default Pusher credentials when you install the package, so that you can get started with as less friction as possible. Communication will take place over a randomly generated channel name. However, for improved security, we encourage you to [create a free account](https://pusher.com/signup?utm_source=Reddit\u0026utm_medium=Atom.io_Package_Page\u0026utm_campaign=AtomPair) and enter your own app key and app secret by going to your Package Settings. A free Sandbox plan should be more than enough for your pairing sessions. *Note that you must enable client-events in App Settings when you create a new Pusher app, otherwise this plugin will not work.*\n\n### Contributing\n\nHere is a current list of features:\n\n* Text synchronization\n* Multiple tab syncing\n* File-sharing\n* HipChat invitations\n* Slack invitations\n* Synchronized syntax highlighting\n* Collaborator visibility.\n\nBut if there are any features you find lacking, feel more than welcome to [get in touch](\u003cmailto:jamie@pusher.com\u003e).\n\n### Running Tests\n\nTo run the tests, just type into your command line at the root of the project:\n\n    $ apm test\n\n### Adding New Methods of Invitation\n\nCurrently there is support for inviting people over HipChat and Slack. If you would like to invite friends or colleagues through any other integration, there is a mini-API to make this more simple. All you have to do is inherit from our `Invitation` class and implement two methods:\n\n```coffee\nclass YourInvitation extends Invitation\n\n  checkConfig: -\u003e\n     # Must be implemented\n     # Returns false if they are missing your integration's API keys, otherwise true.\n\n  send: (callback)-\u003e\n    # Must be implemented\n    # Send your invitation and simple call the callback when you're done.\n\n```\n\nSee [here](https://github.com/pusher/atom-pair/blob/master/lib/modules/invitations/slack_invitation.coffee) for an example.\n\n## Credits\n\nThis project is owned and maintained by [@jpatel531](http://github.com/jpatel531), a developer at [Pusher](http://pusher.com).\n\nSpecial thanks for contributing go to:\n\n* [@snollygolly](http://github.com/snollygolly)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpusher%2Fatom-pair","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpusher%2Fatom-pair","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpusher%2Fatom-pair/lists"}