3llo 0.3.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (131) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/ci.yml +33 -0
  3. data/.rubocop.yml +122 -0
  4. data/3llo.gemspec +11 -11
  5. data/CHANGELOG.md +31 -0
  6. data/Gemfile +3 -3
  7. data/{LICENSE.md → LICENSE} +1 -0
  8. data/README.md +118 -38
  9. data/Rakefile +3 -9
  10. data/bin/3llo +5 -27
  11. data/lib/3llo.rb +13 -11
  12. data/lib/3llo/api.rb +7 -4
  13. data/lib/3llo/api/board.rb +29 -26
  14. data/lib/3llo/api/card.rb +131 -104
  15. data/lib/3llo/api/checklist.rb +106 -0
  16. data/lib/3llo/api/label.rb +64 -0
  17. data/lib/3llo/api/list.rb +29 -27
  18. data/lib/3llo/api/token.rb +27 -0
  19. data/lib/3llo/api/user.rb +12 -27
  20. data/lib/3llo/application.rb +188 -0
  21. data/lib/3llo/command.rb +80 -0
  22. data/lib/3llo/{commands → command}/.gitkeep +0 -0
  23. data/lib/3llo/command/board.rb +40 -0
  24. data/lib/3llo/command/board/add.rb +29 -0
  25. data/lib/3llo/command/board/invalid.rb +18 -0
  26. data/lib/3llo/command/board/list.rb +18 -0
  27. data/lib/3llo/command/board/select.rb +29 -0
  28. data/lib/3llo/command/card.rb +140 -0
  29. data/lib/3llo/command/card/add.rb +37 -0
  30. data/lib/3llo/command/card/add_checklist.rb +22 -0
  31. data/lib/3llo/command/card/add_item.rb +22 -0
  32. data/lib/3llo/command/card/add_label.rb +56 -0
  33. data/lib/3llo/command/card/archive.rb +37 -0
  34. data/lib/3llo/command/card/assign.rb +56 -0
  35. data/lib/3llo/command/card/check_item.rb +22 -0
  36. data/lib/3llo/command/card/comment.rb +30 -0
  37. data/lib/3llo/command/card/comments.rb +28 -0
  38. data/lib/3llo/command/card/edit.rb +33 -0
  39. data/lib/3llo/command/card/edit_checklist.rb +24 -0
  40. data/lib/3llo/command/card/edit_item.rb +26 -0
  41. data/lib/3llo/command/card/invalid.rb +18 -0
  42. data/lib/3llo/command/card/list.rb +40 -0
  43. data/lib/3llo/command/card/list_mine.rb +19 -0
  44. data/lib/3llo/command/card/move.rb +42 -0
  45. data/lib/3llo/command/card/remove_checklist.rb +20 -0
  46. data/lib/3llo/command/card/remove_item.rb +21 -0
  47. data/lib/3llo/command/card/self_assign.rb +35 -0
  48. data/lib/3llo/command/card/show.rb +37 -0
  49. data/lib/3llo/command/card/uncheck_item.rb +22 -0
  50. data/lib/3llo/command/exit.rb +17 -0
  51. data/lib/3llo/command/help.rb +15 -0
  52. data/lib/3llo/command/invalid.rb +15 -0
  53. data/lib/3llo/command/label.rb +47 -0
  54. data/lib/3llo/command/label/add.rb +22 -0
  55. data/lib/3llo/command/label/edit.rb +37 -0
  56. data/lib/3llo/command/label/invalid.rb +18 -0
  57. data/lib/3llo/command/label/list.rb +18 -0
  58. data/lib/3llo/command/label/remove.rb +28 -0
  59. data/lib/3llo/command/list.rb +51 -0
  60. data/lib/3llo/command/list/add.rb +21 -0
  61. data/lib/3llo/command/list/archive_cards.rb +33 -0
  62. data/lib/3llo/command/list/cards.rb +34 -0
  63. data/lib/3llo/command/list/invalid.rb +18 -0
  64. data/lib/3llo/command/list/list.rb +18 -0
  65. data/lib/3llo/controller.rb +38 -21
  66. data/lib/3llo/entities.rb +43 -0
  67. data/lib/3llo/errors.rb +5 -1
  68. data/lib/3llo/interface.rb +9 -2
  69. data/lib/3llo/registry.rb +42 -0
  70. data/lib/3llo/remote_server.rb +99 -0
  71. data/lib/3llo/utils.rb +77 -0
  72. data/lib/3llo/version.rb +1 -1
  73. data/lib/3llo/view.rb +13 -0
  74. data/lib/3llo/{presenter → view}/.gitkeep +0 -0
  75. data/lib/3llo/view/board/help.rb +19 -0
  76. data/lib/3llo/view/board/list.rb +21 -0
  77. data/lib/3llo/view/card/comments.rb +32 -0
  78. data/lib/3llo/view/card/help.rb +38 -0
  79. data/lib/3llo/view/card/list.rb +57 -0
  80. data/lib/3llo/view/card/list_mine.rb +25 -0
  81. data/lib/3llo/view/card/show.rb +78 -0
  82. data/lib/3llo/view/help.rb +33 -0
  83. data/lib/3llo/view/label/help.rb +20 -0
  84. data/lib/3llo/view/label/list.rb +21 -0
  85. data/lib/3llo/view/list/cards.rb +34 -0
  86. data/lib/3llo/view/list/help.rb +20 -0
  87. data/lib/3llo/view/list/list.rb +21 -0
  88. metadata +97 -58
  89. data/.travis.yml +0 -22
  90. data/CODE_OF_CONDUCT.md +0 -49
  91. data/lib/3llo/board_command_factory.rb +0 -27
  92. data/lib/3llo/card_command_factory.rb +0 -70
  93. data/lib/3llo/command_factory.rb +0 -40
  94. data/lib/3llo/commands/board/invalid.rb +0 -33
  95. data/lib/3llo/commands/board/list.rb +0 -29
  96. data/lib/3llo/commands/board/select.rb +0 -38
  97. data/lib/3llo/commands/card/add.rb +0 -47
  98. data/lib/3llo/commands/card/archive.rb +0 -31
  99. data/lib/3llo/commands/card/assign.rb +0 -45
  100. data/lib/3llo/commands/card/comment.rb +0 -34
  101. data/lib/3llo/commands/card/comments.rb +0 -29
  102. data/lib/3llo/commands/card/invalid.rb +0 -41
  103. data/lib/3llo/commands/card/list.rb +0 -37
  104. data/lib/3llo/commands/card/list_mine.rb +0 -30
  105. data/lib/3llo/commands/card/move.rb +0 -42
  106. data/lib/3llo/commands/card/self_assign.rb +0 -33
  107. data/lib/3llo/commands/card/show.rb +0 -29
  108. data/lib/3llo/commands/error.rb +0 -18
  109. data/lib/3llo/commands/exit.rb +0 -16
  110. data/lib/3llo/commands/help.rb +0 -15
  111. data/lib/3llo/commands/invalid.rb +0 -18
  112. data/lib/3llo/commands/list/archive_cards.rb +0 -39
  113. data/lib/3llo/commands/list/cards.rb +0 -29
  114. data/lib/3llo/commands/list/invalid.rb +0 -34
  115. data/lib/3llo/commands/list/list.rb +0 -29
  116. data/lib/3llo/http/client.rb +0 -75
  117. data/lib/3llo/http/request_error.rb +0 -18
  118. data/lib/3llo/list_command_factory.rb +0 -33
  119. data/lib/3llo/presenter.rb +0 -11
  120. data/lib/3llo/presenter/board/list.rb +0 -25
  121. data/lib/3llo/presenter/card/assign.rb +0 -24
  122. data/lib/3llo/presenter/card/comments.rb +0 -33
  123. data/lib/3llo/presenter/card/list.rb +0 -53
  124. data/lib/3llo/presenter/card/list_mine.rb +0 -25
  125. data/lib/3llo/presenter/card/move.rb +0 -26
  126. data/lib/3llo/presenter/card/show.rb +0 -54
  127. data/lib/3llo/presenter/confirmation.rb +0 -18
  128. data/lib/3llo/presenter/help.rb +0 -44
  129. data/lib/3llo/presenter/list/cards.rb +0 -45
  130. data/lib/3llo/presenter/list/list.rb +0 -25
  131. data/lib/core_ext.rb +0 -41
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: e05bd8d3c7bea9ee60906b240c091388184e4564
4
- data.tar.gz: 3c42a1c12897aba513a736b3afd84d3dcf624838
2
+ SHA256:
3
+ metadata.gz: 924f5388e35597e1570a41cc0e0d346d999a6c5a354904e2d4db189579a5047d
4
+ data.tar.gz: 0d6d728e7831db53095118317a12e3d952793ecdae041db2dd75ca6d8282f515
5
5
  SHA512:
6
- metadata.gz: d81e257f0a944ec5ab3dd6373814ee8d4ae0482d0029d169222b827865a10cbfff93b08a6f508dab1c2b068acbecc7f40dbf4d13fe8032617dbfd299e27e56b8
7
- data.tar.gz: fbaa8605fb23e12ecf5c93133bcbe70933b6eb8f7bcfe33cf4cae18920ecaca99fa6d355eed44e77e79fb37b060b046aa136b86e655be0931d2716b08eec77e1
6
+ metadata.gz: 11c88432c0490b325080423edee099ac78263f7f0efcb7ef0f9d81d5348733d26649bddfcb335452946b5b8150b2dc539fb224094f6efeabc128ee14694cc198
7
+ data.tar.gz: '0318a410ef4b35661a9442cab3cdf9a22dcec2cda1645e0000e6eab0629b38ea6df4c97183dae1beb814b444bbd05a841d7da4db1f86aea1882207466f91664d'
@@ -0,0 +1,33 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ pull_request:
8
+
9
+ jobs:
10
+ build:
11
+
12
+ runs-on: ubuntu-latest
13
+
14
+ strategy:
15
+ matrix:
16
+ ruby_version: ['2.5.x', '2.6.x']
17
+
18
+ steps:
19
+ - uses: actions/checkout@v1
20
+ - name: Set up Ruby ${{ matrix.ruby_version }}
21
+ uses: actions/setup-ruby@v1
22
+ with:
23
+ ruby-version: ${{ matrix.ruby_version }}
24
+ - name: Install dependencies
25
+ run: |
26
+ gem install bundler
27
+ bundle install --jobs 4 --retry 3
28
+ - name: Start httpbin container
29
+ run: docker run -d -p 8080:80 kennethreitz/httpbin
30
+ - name: Run Rubocop
31
+ run: bundle exec rubocop
32
+ - name: Run test
33
+ run: bundle exec rspec
@@ -0,0 +1,122 @@
1
+ # The behavior of RuboCop can be controlled via the .rubocop.yml
2
+ # configuration file. It makes it possible to enable/disable
3
+ # certain cops (checks) and to alter their behavior if they accept
4
+ # any parameters. The file can be placed either in your home
5
+ # directory or in some project directory.
6
+ #
7
+ # RuboCop will start looking for the configuration file in the directory
8
+ # where the inspected file is and continue its way up to the root directory.
9
+ #
10
+ # See https://github.com/rubocop-hq/rubocop/blob/master/manual/configuration.md
11
+
12
+ AllCops:
13
+ TargetRubyVersion: 2.5
14
+
15
+ Layout/LineLength:
16
+ Max: 120
17
+
18
+ Layout/DotPosition:
19
+ EnforcedStyle: leading
20
+
21
+ Layout/EmptyLinesAroundBlockBody:
22
+ EnforcedStyle: no_empty_lines
23
+
24
+ Layout/FirstArrayElementIndentation:
25
+ EnforcedStyle: consistent
26
+
27
+ Layout/FirstHashElementIndentation:
28
+ EnforcedStyle: consistent
29
+
30
+ Layout/HeredocIndentation:
31
+ Enabled: false
32
+
33
+ Layout/MultilineMethodCallIndentation:
34
+ EnforcedStyle: indented
35
+
36
+ Layout/SpaceInsideBlockBraces:
37
+ EnforcedStyle: space
38
+
39
+ Layout/SpaceInsideHashLiteralBraces:
40
+ EnforcedStyle: no_space
41
+
42
+ Layout/SpaceInsideParens:
43
+ EnforcedStyle: no_space
44
+
45
+ Lint/AssignmentInCondition:
46
+ Enabled: false
47
+
48
+ Metrics:
49
+ Enabled: false
50
+
51
+ Naming/RescuedExceptionsVariableName:
52
+ Enabled: false
53
+
54
+ Security/JSONLoad:
55
+ Enabled: false
56
+
57
+ Style/Alias:
58
+ EnforcedStyle: prefer_alias
59
+
60
+ Style/HashEachMethods:
61
+ Enabled: true
62
+
63
+ Style/HashTransformKeys:
64
+ Enabled: true
65
+
66
+ Style/HashTransformValues:
67
+ Enabled: true
68
+
69
+ Style/DefWithParentheses:
70
+ Enabled: false
71
+
72
+ Style/Documentation:
73
+ Enabled: false
74
+
75
+ Style/FrozenStringLiteralComment:
76
+ Enabled: false
77
+
78
+ Style/GlobalVars:
79
+ AllowedVariables: ['$application']
80
+
81
+ Style/GuardClause:
82
+ Enabled: false
83
+
84
+ Style/HashSyntax:
85
+ EnforcedStyle: ruby19
86
+
87
+ Style/MethodCallWithoutArgsParentheses:
88
+ Enabled: false
89
+
90
+ Style/ModuleFunction:
91
+ Enabled: false
92
+
93
+ Style/MultilineBlockChain:
94
+ Enabled: false
95
+
96
+ Style/PreferredHashMethods:
97
+ EnforcedStyle: verbose
98
+
99
+ Style/TrailingCommaInArguments:
100
+ EnforcedStyleForMultiline: no_comma
101
+
102
+ Style/TrailingCommaInHashLiteral:
103
+ EnforcedStyleForMultiline: no_comma
104
+
105
+ Style/WordArray:
106
+ EnforcedStyle: percent
107
+ MinSize: 3
108
+
109
+ Style/SpecialGlobalVars:
110
+ EnforcedStyle: use_english_names
111
+
112
+ Style/StringLiterals:
113
+ EnforcedStyle: double_quotes
114
+
115
+ Style/StringLiteralsInInterpolation:
116
+ EnforcedStyle: double_quotes
117
+
118
+ Style/RaiseArgs:
119
+ EnforcedStyle: compact
120
+
121
+ Lint/NonDeterministicRequireOrder:
122
+ Enabled: false
@@ -1,21 +1,20 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path("lib", __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require '3llo/version'
3
+ require "3llo/version"
5
4
 
6
5
  Gem::Specification.new do |spec|
7
6
  spec.name = "3llo"
8
7
  spec.version = Tr3llo::VERSION
9
- spec.authors = ["Cẩm Huỳnh"]
10
- spec.email = ["huynhquancam@gmail.com"]
8
+ spec.authors = ["Cẩm Huỳnh", "Diệp Sở Hùng"]
9
+ spec.email = ["huynhquancam@gmail.com", "diepsohung@gmail.com"]
11
10
 
12
- spec.summary = %q{Trello CLI}
13
- spec.description = %q{CLI for Trello}
11
+ spec.summary = "Trello CLI app"
12
+ spec.description = "Interactive CLI application for Trello"
14
13
  spec.homepage = "https://github.com/qcam/3llo"
15
14
  spec.license = "MIT"
16
15
 
17
16
  if spec.respond_to?(:metadata)
18
- spec.metadata['allowed_push_host'] = "https://rubygems.org"
17
+ spec.metadata["allowed_push_host"] = "https://rubygems.org"
19
18
  else
20
19
  raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
21
20
  end
@@ -25,9 +24,10 @@ Gem::Specification.new do |spec|
25
24
  spec.executables = spec.files.grep(%r{^bin/}) { |filename| File.basename(filename) }
26
25
  spec.require_paths = ["lib"]
27
26
 
28
- spec.required_ruby_version = '~> 2.0'
27
+ spec.required_ruby_version = "~> 2.5"
29
28
 
30
- spec.add_runtime_dependency 'tty-prompt', '~> 0.12.0'
29
+ spec.add_runtime_dependency "tty-prompt", "~> 0.20"
31
30
 
32
- spec.add_development_dependency 'rspec', '~> 3.0'
31
+ spec.add_development_dependency "rspec", "~> 3.0"
32
+ spec.add_development_dependency "rubocop", "~> 0.79"
33
33
  end
@@ -1,5 +1,36 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v1.2.0
4
+
5
+ * Support running multiple commands with `--init` switch (#83)
6
+ * Include current board name to status line (#77)
7
+ * Introduce `card add-label` command (#74)
8
+ * Support multiline card description (#72)
9
+
10
+ ## v1.1.0
11
+
12
+ * Introduce "list add" command.
13
+ * Introduce "board add" command.
14
+ * Introduce label related command.
15
+ * Support exiting with Ctrl+D.
16
+
17
+ ## v1.0.0
18
+
19
+ * Support using shortcuts to access entities.
20
+ * Introduce `--config` switch.
21
+ * Introduce `--init` switch.
22
+ * Introduce `--configure` switch.
23
+ * Deprecate using environment variables for configuration.
24
+ * Improve performance of several commands.
25
+ * Support checklist related commands.
26
+ * Support Ruby 2.5+.
27
+ * Introduce `card edit` command.
28
+ * Improve command auto completion.
29
+
30
+ ## v0.3.1
31
+
32
+ * Improve self-documentation [#39](https://github.com/qcam/3llo/pull/39).
33
+
3
34
  ## v0.3.0
4
35
 
5
36
  * Accept multiline in "card comment" command [#33](https://github.com/qcam/3llo/pull/33).
data/Gemfile CHANGED
@@ -1,7 +1,7 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in trecli.gemspec
4
4
  gemspec
5
5
 
6
- gem 'bundler'
7
- gem 'rake'
6
+ gem "bundler"
7
+ gem "rake"
@@ -1,6 +1,7 @@
1
1
  The MIT License (MIT)
2
2
 
3
3
  Copyright (c) 2017 Cẩm Huỳnh
4
+ Copyright (c) 2020 Cẩm Huỳnh and Diệp Sở Hùng
4
5
 
5
6
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
7
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,66 +1,146 @@
1
- # 3llo - Interactive CLI for Trello
1
+ 3llo - The interactive CLI application for Trello
2
+ ================
2
3
 
3
- 3llo is the terminal client for Trello, which helps you manage Trello cards without
4
- leaving your awesome terminal.
4
+ 3llo allows you to work with Trello without exiting your favorite terminal.
5
5
 
6
- [![video](intro.gif)](https://asciinema.org/a/0z3l05hwph3vdq91gu7n1m3o4)
6
+ ![video](intro.gif)
7
7
 
8
8
  3llo was inspired by the awesome
9
9
  [rainbowstream](https://github.com/DTVD/rainbowstream) and
10
10
  [facy](https://github.com/huydx/facy).
11
11
 
12
- ## Why this named 3llo?
13
-
14
- Good to know that `3 == "tre"` in Swedish.
15
-
16
12
  ## Installation
17
13
 
18
14
  ```ruby
19
15
  gem install 3llo
20
16
  ```
21
17
 
22
- You also need to have these environment variables set in your shell.
18
+ Run `3llo --configure` and follow the instructions to complete the set up.
19
+
20
+ ## Usage
21
+
22
+ ### "board" command family
23
+
24
+ Just like the web version of Trello, you need to select a board:
23
25
 
24
26
  ```
25
- export TRELLO_USER=your_username
26
- export TRELLO_KEY=your_key
27
- export TRELLO_TOKEN=your_token
27
+ 3llo > board list
28
+
29
+ [123abc000000000000000001 #1] - Weekend TODOs
30
+ [123abc000000000000000002 #2] - 3llo project
31
+ [123abc000000000000000003 #3] - Grocery list
32
+
33
+ 3llo > board select #2
34
+
35
+ Board Work stuff selected
28
36
  ```
29
37
 
30
- ### Obtain Trello API key and token
38
+ Please note that you can also access any entities with their Trello ID.
39
+
40
+ ```
41
+ 3llo > board select 123abc000000000000000002
31
42
 
32
- 1. Go to [Get started](https://developers.trello.com/get-started/start-building).
33
- 2. Click on **Get your Application Key**.
34
- 3. Copy the Application Key and generate a Token using the instruction on the page.
43
+ Board Work stuff selected
44
+ ```
35
45
 
36
- ## Usage
46
+ ### "list" command family
47
+
48
+ Executing `list list` will list all the lists in the board.
49
+
50
+ ```
51
+ 3llo > list list
52
+
53
+ [123abc000000000000000001 #1] To Do
54
+ [123abc000000000000000002 #2] Doing
55
+ [123abc000000000000000003 #3] Pending
56
+ [123abc000000000000000004 #4] Done
57
+ ```
58
+
59
+ `list cards <list_key>` will list all the cards.
60
+
61
+ ```
62
+ 3llo > list cards #1
63
+
64
+ [123abc000000000000000001 #1] Merge card editing command
65
+ [123abc000000000000000002 #2] Refactor code
66
+ ...
67
+ ```
68
+
69
+ ### "card" command family
70
+
71
+ "card" command family comes with many commands to work with cards.
72
+
73
+ To list all the cards in the board, run `card list`.
37
74
 
38
- There are a couple of commands available in 3llo.
39
-
40
- * `board list`: List your board
41
- * `board select <board_id>`: Select the active board.
42
- * `card list`: List all cards of the active board.
43
- * `card list mine`: List all your cards of the active board.
44
- * `card add`: Create a card.
45
- * `card show <card_id>`: Show card information.
46
- * `card move <card_id> <list_id>`: Move card to a specified list.
47
- * `card self-assign <card_id>`: Self-assign a card.
48
- * `card comments <card_id>`: Show recent comments of a card.
49
- * `card comment <card_id>`: Add a comment to a card.
50
- * `card archive <card_id>`: Archive a card.
51
- * `list list`: List all the lists of the active board.
52
- * `list archive-cards <list_id>`: Archives all the cards on the specified list.
53
- * `help`: Show help menu.
54
- * `exit`: Exit.
75
+ ```
76
+ 3llo > card list
77
+
78
+ #To Do
79
+ ======
80
+ [123abc000000000000000001 #1] Merge card editing command [#small]
81
+ [123abc000000000000000002 #2] Refactor code [#medium] [@qcam]
82
+
83
+
84
+ #Doing
85
+ ======
86
+ [123abc000000000000000003 #3] Release v1.0 [#release] [@qcam]
87
+
88
+ #Pending
89
+ ...
90
+ ```
91
+
92
+ You can also list cards that have been assigned to you with `card list mine`.
93
+
94
+ ```
95
+ 3llo > card list mine
96
+
97
+ [123abc000000000000000002 #2] (To Do) Refactor code
98
+ [123abc000000000000000003 #3] (Doing) Release v1.0
99
+ ```
100
+
101
+ To view a card in detail, `card show <card_key>` is your friend.
102
+
103
+ ```
104
+ 3llo > card show #2
105
+
106
+ Refactor code
107
+ [123abc000000000000000002 #2]
108
+ Link: https://trello.com/c/AbCdEfG
109
+
110
+ Things to do [123abc000000000000000001 #1]
111
+ [ ] Item 1 [123abc000000000000000001 #1]
112
+ [ ] Item 2 [123abc000000000000000002 #2]
113
+ [ ] Item 3 [123abc000000000000000003 #3]
114
+ [ ] Item 4 ...
115
+ ```
116
+
117
+ Want to comment on a card? Run `card comment <card_key>`.
118
+
119
+ ```
120
+ 3llo > card comment #2
121
+
122
+ Comment: (Press CTRL-D or CTRL-Z to finish)
123
+ What else should we refactor more?<enter>
124
+
125
+ Comment has been posted
126
+
127
+ 3llo > card comments #2
128
+
129
+ @just_another_person_on_the_internet on <Jan 01, 2020 00:55:55> wrote:
130
+ This card is awesome!
131
+
132
+ @qcam on <Jan 01, 2020 00:55:55> wrote:
133
+ What else should we refactor more?
134
+ ```
55
135
 
56
136
  ## Contributing
57
137
 
58
- Bug reports and pull requests are welcome on GitHub at https://github.com/qcam/3llo. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
138
+ Bug reports and pull requests are welcome on GitHub at https://github.com/qcam/3llo.
59
139
 
60
- ### Development Roadmap
140
+ ### "3llo" sounds odd to me. Where did the name come from?
61
141
 
62
- View in [Issues](https://github.com/qcam/3llo/issues)
142
+ It might be interesting to know that `3 == "tre"` in Swedish 🇸🇪.
63
143
 
64
144
  ## License
65
145
 
66
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
146
+ MIT