├── .gitignore ├── screenshot.png ├── src ├── assets │ ├── Logo.icns │ ├── Logo.ico │ ├── Logo.png │ ├── images │ │ ├── sos.png │ │ ├── avatars │ │ │ ├── adam.png │ │ │ ├── nick.png │ │ │ ├── orion.png │ │ │ ├── pvh.png │ │ │ ├── martin.png │ │ │ ├── natasha.png │ │ │ └── roshan.png │ │ ├── delta.svg │ │ ├── switch-on.svg │ │ ├── switch-off.svg │ │ ├── microscope.svg │ │ ├── documents.svg │ │ ├── comment.svg │ │ ├── trash.svg │ │ └── peers.svg │ └── fonts │ │ ├── Pacifico.ttf │ │ ├── Nunito-Bold.ttf │ │ ├── Nunito-Regular.ttf │ │ └── OpenSans-ExtraBold.ttf ├── lib │ ├── uuid.js │ ├── seed_data.js │ └── store.js ├── components │ ├── assignments │ │ ├── assignments.css │ │ └── assignments.jsx │ ├── list │ │ ├── list.css │ │ └── list.jsx │ ├── flash │ │ ├── flash.css │ │ └── flash.jsx │ ├── automerge_info.jsx │ ├── add_list │ │ ├── add_list.css │ │ └── add_list.jsx │ ├── board │ │ ├── board.css │ │ └── board.jsx │ ├── inspector │ │ ├── inspector.css │ │ └── inspector.jsx │ ├── add_card │ │ ├── add_card.css │ │ └── add_card.jsx │ ├── list_card │ │ ├── list_card.css │ │ └── list_card.jsx │ ├── drop_target.jsx │ ├── inline_input.jsx │ ├── card │ │ ├── card.jsx │ │ └── card.css │ ├── comments.jsx │ ├── documents.jsx │ ├── changes.jsx │ ├── network.jsx │ └── app.jsx ├── index.html ├── index.js └── index.css ├── .eslintrc ├── .compilerc ├── LICENSE ├── package.json ├── test ├── merge-root.trellis ├── merge-fork-a.trellis ├── merge-fork-b.trellis ├── application.js └── fixture.trellis └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | out 3 | trellis/ 4 | .env 5 | *.swp 6 | *.trellis 7 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/automerge/trellis/HEAD/screenshot.png -------------------------------------------------------------------------------- /src/assets/Logo.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/automerge/trellis/HEAD/src/assets/Logo.icns -------------------------------------------------------------------------------- /src/assets/Logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/automerge/trellis/HEAD/src/assets/Logo.ico -------------------------------------------------------------------------------- /src/assets/Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/automerge/trellis/HEAD/src/assets/Logo.png -------------------------------------------------------------------------------- /src/assets/images/sos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/automerge/trellis/HEAD/src/assets/images/sos.png -------------------------------------------------------------------------------- /src/assets/fonts/Pacifico.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/automerge/trellis/HEAD/src/assets/fonts/Pacifico.ttf -------------------------------------------------------------------------------- /src/assets/fonts/Nunito-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/automerge/trellis/HEAD/src/assets/fonts/Nunito-Bold.ttf -------------------------------------------------------------------------------- /src/assets/fonts/Nunito-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/automerge/trellis/HEAD/src/assets/fonts/Nunito-Regular.ttf -------------------------------------------------------------------------------- /src/assets/images/avatars/adam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/automerge/trellis/HEAD/src/assets/images/avatars/adam.png -------------------------------------------------------------------------------- /src/assets/images/avatars/nick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/automerge/trellis/HEAD/src/assets/images/avatars/nick.png -------------------------------------------------------------------------------- /src/assets/images/avatars/orion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/automerge/trellis/HEAD/src/assets/images/avatars/orion.png -------------------------------------------------------------------------------- /src/assets/images/avatars/pvh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/automerge/trellis/HEAD/src/assets/images/avatars/pvh.png -------------------------------------------------------------------------------- /src/assets/images/avatars/martin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/automerge/trellis/HEAD/src/assets/images/avatars/martin.png -------------------------------------------------------------------------------- /src/assets/images/avatars/natasha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/automerge/trellis/HEAD/src/assets/images/avatars/natasha.png -------------------------------------------------------------------------------- /src/assets/images/avatars/roshan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/automerge/trellis/HEAD/src/assets/images/avatars/roshan.png -------------------------------------------------------------------------------- /src/assets/fonts/OpenSans-ExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/automerge/trellis/HEAD/src/assets/fonts/OpenSans-ExtraBold.ttf -------------------------------------------------------------------------------- /src/lib/uuid.js: -------------------------------------------------------------------------------- 1 | export default function() { 2 | let uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { 3 | var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8); 4 | return v.toString(16); 5 | }) 6 | 7 | return uuid 8 | } 9 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "eslint-config-airbnb", 3 | "rules": { 4 | "import/extensions": 0, 5 | "import/no-extraneous-dependencies": 0, 6 | "import/no-unresolved": [2, { "ignore": ["electron"] }], 7 | "linebreak-style": 0, 8 | "react/prefer-stateless-function": 0 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/components/assignments/assignments.css: -------------------------------------------------------------------------------- 1 | .Assignments { 2 | margin-top: 10pt; 3 | } 4 | 5 | .Assignments img { 6 | width: 15pt; 7 | margin-left: 4pt; 8 | } 9 | 10 | .Assignments img:first-child { 11 | margin-left: 0; 12 | } 13 | 14 | .Assignments__active { 15 | opacity: 0.8; 16 | } 17 | .Assignments__inactive { 18 | opacity: 0.2; 19 | filter: grayscale(100%) 20 | } 21 | 22 | -------------------------------------------------------------------------------- /src/components/list/list.css: -------------------------------------------------------------------------------- 1 | .List { 2 | margin-right: 20px; 3 | padding: 10px; 4 | width: 240px; 5 | overflow-y: scroll; 6 | flex-shrink: 0; 7 | color: var(--color-light); 8 | } 9 | 10 | .List__title { 11 | text-transform: uppercase; 12 | font-weight: bold; 13 | margin-bottom: 10px; 14 | font-family: "Open Sans"; 15 | font-size: 18px; 16 | } 17 | 18 | .List__delete { 19 | float: right; 20 | cursor: pointer; 21 | } 22 | -------------------------------------------------------------------------------- /src/lib/seed_data.js: -------------------------------------------------------------------------------- 1 | import uuid from './uuid' 2 | 3 | export default function() { 4 | let lists = [ { id: uuid(), title: "This Week" }, 5 | { id: uuid(), title: "Done" }, 6 | { id: uuid(), title: "Soon" } ] 7 | 8 | let cards = [ { id: uuid(), 9 | listId: lists[0].id, 10 | title: "Hello world", 11 | assigned: {} } ] 12 | 13 | return { lists: lists, cards: cards } 14 | } 15 | -------------------------------------------------------------------------------- /src/components/flash/flash.css: -------------------------------------------------------------------------------- 1 | @keyframes slide-down { 2 | 0% { top: -200px } 3 | 5% { top: 20px } 4 | 90% { top: 20px } 5 | 100% { top: -200px } 6 | } 7 | 8 | .Flash { 9 | background: var(--color-change-highlight-bg); 10 | color: var(--color-dark); 11 | position: absolute; 12 | top: -200px; 13 | left: 50%; 14 | margin-left: -40%; 15 | width: 80%; 16 | padding: 20px; 17 | box-sizing: border-box; 18 | text-align: center; 19 | animation: slide-down 2s linear 0s 1 normal forwards; 20 | border-radius: 2px; 21 | box-shadow: 0 2px 2px 0 rgba(0,0,0,0.1) 22 | } 23 | 24 | -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 24 | 25 | -------------------------------------------------------------------------------- /.compilerc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "development": { 4 | "application/javascript": { 5 | "presets": [ 6 | ["env", { "targets": { "electron": "1.6.0" } }], 7 | "react" 8 | ], 9 | "plugins": ["transform-async-to-generator", "transform-es2015-classes"], 10 | "sourceMaps": "inline" 11 | } 12 | }, 13 | "production": { 14 | "application/javascript": { 15 | "presets": [ 16 | ["env", { "targets": { "electron": "1.6.0" } }], 17 | "react" 18 | ], 19 | "plugins": ["transform-async-to-generator", "transform-es2015-classes"], 20 | "sourceMaps": "none" 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/components/automerge_info.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default class AutomergeInfo extends React.Component { 4 | constructor(props) { 5 | super(props) 6 | } 7 | 8 | render() { 9 | let t = this.props.Automerge 10 | let peers = Object.keys(t.peers).map((peer) => { return peer }) 11 | let peer_actions = Object.keys(t.peer_actions).map((pa) => { 12 | return pa + "(" + t.peer_actions[pa].length + ") " 13 | }) 14 | 15 | return ( 16 |