houston-core 0.7.0 → 0.8.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +45 -45
  3. data/app/assets/javascripts/houston/app/models/ticket.coffee +7 -5
  4. data/app/assets/javascripts/houston/app/views/new_ticket_view.coffee +1 -21
  5. data/app/assets/javascripts/houston/core/handlebars_helpers.coffee +0 -6
  6. data/app/assets/stylesheets/houston/application/commit.scss +16 -0
  7. data/app/assets/stylesheets/houston/application/navigation.scss +1 -0
  8. data/app/assets/stylesheets/houston/application/new_ticket_view.scss +0 -4
  9. data/app/assets/stylesheets/houston/application/projects.css.scss +0 -14
  10. data/app/assets/stylesheets/houston/application/release_form.scss +1 -1
  11. data/app/assets/stylesheets/houston/application/teams.scss +68 -0
  12. data/app/assets/templates/tickets/index.hbs +0 -1
  13. data/app/controllers/github/pulls_controller.rb +1 -0
  14. data/app/controllers/project_tickets_controller.rb +1 -5
  15. data/app/controllers/projects_controller.rb +10 -12
  16. data/app/controllers/teams_controller.rb +60 -0
  17. data/app/controllers/users_controller.rb +12 -12
  18. data/app/helpers/commit_helper.rb +3 -5
  19. data/app/helpers/exposure_helper.rb +1 -1
  20. data/app/helpers/ticket_helper.rb +0 -13
  21. data/app/interactors/ticket_report.rb +0 -7
  22. data/app/mailers/project_notification.rb +2 -23
  23. data/app/mailers/view_mailer.rb +0 -1
  24. data/app/models/ability.rb +28 -19
  25. data/app/models/commit.rb +0 -4
  26. data/app/models/project.rb +14 -29
  27. data/app/models/release.rb +0 -18
  28. data/app/models/role.rb +0 -22
  29. data/app/models/team.rb +43 -0
  30. data/app/models/team_user.rb +68 -0
  31. data/app/models/ticket.rb +2 -22
  32. data/app/models/user.rb +21 -30
  33. data/app/views/devise/sessions/new.html.erb +9 -7
  34. data/app/views/layouts/_mobile_navigation.html.erb +5 -3
  35. data/app/views/layouts/_navigation.html.erb +11 -10
  36. data/app/views/layouts/_tester_bar.html.erb +1 -1
  37. data/app/views/layouts/application.html.erb +1 -2
  38. data/app/views/project_tickets/_tickets.html.erb +0 -1
  39. data/app/views/project_tickets/index.xls.erb +0 -35
  40. data/app/views/project_tickets/new.html.erb +1 -2
  41. data/app/views/projects/_form.html.erb +7 -12
  42. data/app/views/projects/index.html.erb +10 -17
  43. data/app/views/releases/_changelog.html.erb +11 -14
  44. data/app/views/teams/_form.html.erb +45 -0
  45. data/app/views/teams/edit.html.erb +8 -0
  46. data/app/views/teams/index.html.erb +62 -0
  47. data/app/views/teams/new.html.erb +7 -0
  48. data/app/views/users/_form.html.erb +2 -11
  49. data/app/views/users/index.html.erb +8 -20
  50. data/app/views/users/new.html.erb +1 -1
  51. data/config/initializers/inflections.rb +7 -6
  52. data/config/routes.rb +19 -17
  53. data/db/migrate/20160812233255_repurpose_users_role.rb +16 -0
  54. data/db/migrate/20160813001242_create_teams.rb +42 -0
  55. data/db/structure.sql +110 -116
  56. data/lib/houston/boot.rb +0 -1
  57. data/lib/houston/boot/configuration.rb +26 -11
  58. data/lib/houston/boot/events.rb +0 -4
  59. data/lib/houston/version.rb +1 -1
  60. data/templates/new-instance/config/abilities.rb +68 -51
  61. data/templates/new-instance/config/conversations/mentions/unfurl_tasks.rb +1 -1
  62. data/templates/new-instance/config/events/deploy/notify_deployer_when_finished.rb +24 -16
  63. data/templates/new-instance/config/events/tests/email_when_completed.rb +11 -0
  64. data/templates/new-instance/config/integrations/ldap.rb +4 -0
  65. data/templates/new-instance/config/main.rb +10 -17
  66. data/templates/new-module/test/fixtures/users.yml +1 -2
  67. data/test/acceptance/creating_a_release_test.rb +1 -1
  68. data/test/factories/project_factory.rb +1 -0
  69. data/test/factories/user_factory.rb +3 -1
  70. data/test/fixtures/teams.yml +2 -0
  71. data/test/fixtures/teams_users.yml +5 -0
  72. data/test/fixtures/users.yml +1 -2
  73. data/test/integration/ci_integration_test.rb +2 -2
  74. data/test/support/config.rb +3 -5
  75. data/test/unit/controllers/deploys_controller_test.rb +11 -5
  76. data/test/unit/controllers/users_controller_test.rb +46 -0
  77. data/test/unit/models/release_test.rb +0 -9
  78. data/test/unit/models/serializer_test.rb +0 -8
  79. data/test/unit/models/ticket_test.rb +0 -32
  80. metadata +21 -24
  81. data/app/assets/javascripts/houston/app/table_row_expander.coffee +0 -52
  82. data/app/assets/javascripts/houston/app/views/problems_view.coffee +0 -114
  83. data/app/assets/stylesheets/houston/application/follow_up.scss +0 -44
  84. data/app/controllers/project_exceptions_controller.rb +0 -36
  85. data/app/controllers/project_pretickets_controller.rb +0 -27
  86. data/app/mailers/deploy_notification.rb +0 -33
  87. data/app/models/antecedent.rb +0 -15
  88. data/app/models/ticket_antecedent.rb +0 -39
  89. data/app/models/value_statement.rb +0 -9
  90. data/app/presenters/problem_presenter.rb +0 -49
  91. data/app/presenters/tester_presenter.rb +0 -15
  92. data/app/views/project_notification/follow_up.html.erb +0 -26
  93. data/app/views/project_pretickets/show.html.erb +0 -49
  94. data/app/views/releases/_antecedents.html.erb +0 -12
  95. data/config/initializers/hard_coded_knowledge.rb +0 -141
  96. data/db/migrate/20130427223925_create_project_quotas.rb +0 -14
  97. data/db/migrate/20140506035755_create_value_statements.rb +0 -9
  98. data/lib/houston/boot/ticket_antecedent_serializer.rb +0 -21
  99. data/test/unit/models/ticket_antecedents_test.rb +0 -38
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7313503e6891a81d74ee02d5c9b06315dce2df20
4
- data.tar.gz: aa75366ce3181bebdb91e6f883a1c8879adbcdf9
3
+ metadata.gz: 5c421314112e267c1d8fb60f812aadf4eb5e49ed
4
+ data.tar.gz: a596952d1eb956ceccc4a2f39117de8ab42e0b3c
5
5
  SHA512:
6
- metadata.gz: db72d7a2dcc0808d565cd6a2262e63d1ab0ffb8b144b4a701086126d92c6f1f9ceb944352209ed35bbf5d8a5777ecf80c6186ac9e986ae1ebbf319a6f89bf537
7
- data.tar.gz: 4a99188cdd551613eac66106a3b0a86e79df16a64dc6f019e74137fb9bccd562ebc0fde7c4a78e575283aeaeb7ee3f00619a74fd9c1cc5b0f6c167ee41ce24a4
6
+ metadata.gz: caa4d1e8db286c8cf6e539f98313933e97cad69404049afe4d8be66ee99c10f6e080a8a8dc07ddeed762e2c4ea9392fd2b2a0bb7e3ccd7ec61a89282f201ad3c
7
+ data.tar.gz: 1bdf41fa186a2aaa2ab564f6b5961d7e673a367d4d62aac84089afaf1cd92e6748e201102bcd93d37f4d12f7c6082ddf1817b44dc1e9acc6423caea5213fbb71
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- houston-core (0.7.0)
4
+ houston-core (0.8.0.pre)
5
5
  activerecord-import
6
6
  activerecord-pluck_in_batches
7
7
  addressable (~> 2.3.8)
@@ -51,40 +51,40 @@ PATH
51
51
  GEM
52
52
  remote: https://rubygems.org/
53
53
  specs:
54
- actionmailer (4.2.7)
55
- actionpack (= 4.2.7)
56
- actionview (= 4.2.7)
57
- activejob (= 4.2.7)
54
+ actionmailer (4.2.7.1)
55
+ actionpack (= 4.2.7.1)
56
+ actionview (= 4.2.7.1)
57
+ activejob (= 4.2.7.1)
58
58
  mail (~> 2.5, >= 2.5.4)
59
59
  rails-dom-testing (~> 1.0, >= 1.0.5)
60
- actionpack (4.2.7)
61
- actionview (= 4.2.7)
62
- activesupport (= 4.2.7)
60
+ actionpack (4.2.7.1)
61
+ actionview (= 4.2.7.1)
62
+ activesupport (= 4.2.7.1)
63
63
  rack (~> 1.6)
64
64
  rack-test (~> 0.6.2)
65
65
  rails-dom-testing (~> 1.0, >= 1.0.5)
66
66
  rails-html-sanitizer (~> 1.0, >= 1.0.2)
67
- actionview (4.2.7)
68
- activesupport (= 4.2.7)
67
+ actionview (4.2.7.1)
68
+ activesupport (= 4.2.7.1)
69
69
  builder (~> 3.1)
70
70
  erubis (~> 2.7.0)
71
71
  rails-dom-testing (~> 1.0, >= 1.0.5)
72
72
  rails-html-sanitizer (~> 1.0, >= 1.0.2)
73
- activejob (4.2.7)
74
- activesupport (= 4.2.7)
73
+ activejob (4.2.7.1)
74
+ activesupport (= 4.2.7.1)
75
75
  globalid (>= 0.3.0)
76
- activemodel (4.2.7)
77
- activesupport (= 4.2.7)
76
+ activemodel (4.2.7.1)
77
+ activesupport (= 4.2.7.1)
78
78
  builder (~> 3.1)
79
- activerecord (4.2.7)
80
- activemodel (= 4.2.7)
81
- activesupport (= 4.2.7)
79
+ activerecord (4.2.7.1)
80
+ activemodel (= 4.2.7.1)
81
+ activesupport (= 4.2.7.1)
82
82
  arel (~> 6.0)
83
83
  activerecord-import (0.15.0)
84
84
  activerecord (>= 3.2)
85
85
  activerecord-pluck_in_batches (0.1.1)
86
86
  activerecord
87
- activesupport (4.2.7)
87
+ activesupport (4.2.7.1)
88
88
  i18n (~> 0.7)
89
89
  json (~> 1.7, >= 1.7.7)
90
90
  minitest (~> 5.1)
@@ -101,7 +101,7 @@ GEM
101
101
  browser (1.1.0)
102
102
  builder (3.2.2)
103
103
  cancan (1.6.10)
104
- capybara (2.7.0)
104
+ capybara (2.7.1)
105
105
  addressable
106
106
  mime-types (>= 1.16)
107
107
  nokogiri (>= 1.3.3)
@@ -167,10 +167,10 @@ GEM
167
167
  faraday-raise-errors (0.2.0)
168
168
  faraday
169
169
  gemoji (2.1.0)
170
- globalid (0.3.6)
170
+ globalid (0.3.7)
171
171
  activesupport (>= 4.1.0)
172
172
  googlecharts (1.6.12)
173
- handlebars_assets (0.23.0)
173
+ handlebars_assets (0.23.1)
174
174
  execjs (~> 2.0)
175
175
  multi_json (~> 1.0)
176
176
  sprockets (>= 2.0.0)
@@ -200,18 +200,18 @@ GEM
200
200
  mime-types (2.99.2)
201
201
  mini_portile2 (2.1.0)
202
202
  minitest (5.9.0)
203
- minitest-reporters (1.1.8)
203
+ minitest-reporters (1.1.11)
204
204
  ansi
205
205
  builder
206
206
  minitest (>= 5.0)
207
207
  ruby-progressbar
208
208
  minitest-reporters-turn_reporter (0.1.0)
209
209
  minitest-reporters
210
- multi_json (1.11.2)
210
+ multi_json (1.12.1)
211
211
  multi_xml (0.5.5)
212
212
  multipart-post (2.0.0)
213
213
  neat-rails (0.5.0)
214
- nested_editor_for (0.1.0)
214
+ nested_editor_for (0.1.1)
215
215
  net-ldap (0.12.1)
216
216
  net-ssh (2.9.4)
217
217
  netrc (0.11.0)
@@ -235,7 +235,7 @@ GEM
235
235
  nokogiri
236
236
  openxml-package (>= 0.2.0)
237
237
  orm_adapter (0.5.0)
238
- ox (2.4.3)
238
+ ox (2.4.4)
239
239
  pg (0.18.4)
240
240
  pg_search (1.0.6)
241
241
  activerecord (>= 3.1)
@@ -246,7 +246,7 @@ GEM
246
246
  css_parser (>= 1.4.5)
247
247
  htmlentities (>= 4.0.0)
248
248
  progressbar (0.21.0)
249
- pry (0.10.3)
249
+ pry (0.10.4)
250
250
  coderay (~> 1.1.0)
251
251
  method_source (~> 0.8.1)
252
252
  slop (~> 3.4)
@@ -255,16 +255,16 @@ GEM
255
255
  rack (>= 1.0)
256
256
  rack-utf8_sanitizer (1.3.2)
257
257
  rack (>= 1.0, < 3.0)
258
- rails (4.2.7)
259
- actionmailer (= 4.2.7)
260
- actionpack (= 4.2.7)
261
- actionview (= 4.2.7)
262
- activejob (= 4.2.7)
263
- activemodel (= 4.2.7)
264
- activerecord (= 4.2.7)
265
- activesupport (= 4.2.7)
258
+ rails (4.2.7.1)
259
+ actionmailer (= 4.2.7.1)
260
+ actionpack (= 4.2.7.1)
261
+ actionview (= 4.2.7.1)
262
+ activejob (= 4.2.7.1)
263
+ activemodel (= 4.2.7.1)
264
+ activerecord (= 4.2.7.1)
265
+ activesupport (= 4.2.7.1)
266
266
  bundler (>= 1.3.0, < 2.0)
267
- railties (= 4.2.7)
267
+ railties (= 4.2.7.1)
268
268
  sprockets-rails
269
269
  rails-deprecated_sanitizer (1.0.3)
270
270
  activesupport (>= 4.2.0.alpha)
@@ -274,9 +274,9 @@ GEM
274
274
  rails-deprecated_sanitizer (>= 1.0.1)
275
275
  rails-html-sanitizer (1.0.3)
276
276
  loofah (~> 2.0)
277
- railties (4.2.7)
278
- actionpack (= 4.2.7)
279
- activesupport (= 4.2.7)
277
+ railties (4.2.7.1)
278
+ actionpack (= 4.2.7.1)
279
+ activesupport (= 4.2.7.1)
280
280
  rake (>= 0.8.7)
281
281
  thor (>= 0.18.1, < 2.0)
282
282
  rake (11.2.2)
@@ -287,14 +287,14 @@ GEM
287
287
  http-cookie (>= 1.0.2, < 2.0)
288
288
  mime-types (>= 1.16, < 3.0)
289
289
  netrc (~> 0.7)
290
- rr (1.1.2)
291
- ruby-progressbar (1.7.5)
290
+ rr (1.2.0)
291
+ ruby-progressbar (1.8.1)
292
292
  rubyzip (1.1.7)
293
293
  rufus-scheduler (3.2.1)
294
294
  rugged (0.24.0)
295
295
  safe_yaml (1.0.4)
296
296
  sass (3.4.22)
297
- sass-rails (5.0.5)
297
+ sass-rails (5.0.6)
298
298
  railties (>= 4.0.0, < 6)
299
299
  sass (~> 3.1)
300
300
  sprockets (>= 2.8, < 4.0)
@@ -313,7 +313,7 @@ GEM
313
313
  json
314
314
  simplecov
315
315
  slop (3.6.0)
316
- sprockets (3.6.3)
316
+ sprockets (3.7.0)
317
317
  concurrent-ruby (~> 1.0)
318
318
  rack (> 1, < 3)
319
319
  sprockets-rails (3.1.1)
@@ -322,7 +322,7 @@ GEM
322
322
  sprockets (>= 3.0.0)
323
323
  strongbox (0.7.2)
324
324
  activerecord
325
- test_after_commit (1.0.0)
325
+ test_after_commit (1.1.0)
326
326
  activerecord (>= 3.2)
327
327
  thor (0.19.1)
328
328
  thread_safe (0.3.5)
@@ -330,14 +330,14 @@ GEM
330
330
  timecop (0.8.1)
331
331
  tzinfo (1.2.2)
332
332
  thread_safe (~> 0.1)
333
- uglifier (3.0.0)
333
+ uglifier (3.0.1)
334
334
  execjs (>= 0.3.0, < 3)
335
335
  unf (0.1.4)
336
336
  unf_ext
337
337
  unf_ext (0.0.7.2)
338
338
  warden (1.2.6)
339
339
  rack (>= 1.0)
340
- webmock (1.24.3)
340
+ webmock (2.1.0)
341
341
  addressable (>= 2.3.6)
342
342
  crack (>= 0.3.2)
343
343
  hashdiff
@@ -1,3 +1,9 @@
1
+ # copied from sugar.js
2
+ escapeRegExp = (str)->
3
+ str = String(str) unless _.isString(str)
4
+ str.replace /([\\\/\'*+?|()\[\]{}.^$-])/g, '\\$1'
5
+
6
+
1
7
  class window.Ticket extends Backbone.Model
2
8
  urlRoot: '/tickets'
3
9
 
@@ -53,11 +59,10 @@ class window.Tickets extends Backbone.Collection
53
59
 
54
60
  search: (summary)->
55
61
  words = @getWords(summary)
56
- # console.log(summary, '->', words)
57
62
 
58
63
  return [] if words.length == 0
59
64
 
60
- regexes = (new RegExp("\\b#{RegExp.escape(word)}", 'i') for word in words)
65
+ regexes = (new RegExp("\\b#{escapeRegExp(word)}", 'i') for word in words)
61
66
 
62
67
  results = []
63
68
  for ticket in @models
@@ -116,8 +121,5 @@ class window.Tickets extends Backbone.Collection
116
121
  when 'summary' then (ticket)-> ticket.get('summary').toLowerCase().replace(/^\W/, '')
117
122
  when 'openedAt' then (ticket)-> ticket.get('openedAt')
118
123
  when 'number' then (ticket)-> ticket.get('number')
119
- when 'antecedents' then (ticket)->
120
- len = ticket.get('antecedents').length
121
- if len is 0 then null else len
122
124
  when 'closedAt' then (ticket)-> ticket.get('closedAt')
123
125
  else throw "Tickets#sorterFor doesn't know how to sort #{attribute}!"
@@ -28,7 +28,6 @@ class window.NewTicketView extends Backbone.View
28
28
  @$el.html HandlebarsTemplates['new_ticket/form']()
29
29
  @project = @options.project
30
30
  @tickets = new Tickets(@options.tickets)
31
- @LABELS = @options.labels
32
31
  @TAGS = @TYPES.map (type)-> "[#{type}]"
33
32
  @TAG_MATCHER = "\\[(#{@TYPES.join('|')})\\]"
34
33
  @renderSuggestion = HandlebarsTemplates['new_ticket/suggestion']
@@ -37,11 +36,6 @@ class window.NewTicketView extends Backbone.View
37
36
  @$summary.val "[#{@options.type}] " if @options.type
38
37
  @lastSearch = ''
39
38
 
40
- if @options.antecedents
41
- description = '### Antecedents\n' + (" - #{antecedent}" for antecedent in @options.antecedents).join("\n")
42
- $('#ticket_description').val(description)
43
- @showNewTicket(animate: false)
44
-
45
39
  Mousetrap.bindScoped '#ticket_summary, #ticket_description', 'mod+enter', (e)=>
46
40
  @$el.find('#create_ticket').click() if @$el.find(':focus').length > 0
47
41
 
@@ -73,20 +67,13 @@ class window.NewTicketView extends Backbone.View
73
67
  source: (query)->
74
68
  pos = @$element.getCursorPosition()
75
69
  a = query.indexOf(']')
76
- b = query.indexOf(':')
77
70
 
78
71
  if a is -1 or pos <= a
79
72
  @tquery = query.match(z)[1].toLowerCase()
80
73
  @mode = 'type'
81
74
  return view.TAGS
82
75
 
83
- else if a > 0 and (b is -1 or pos <= b)
84
- @lquery = query.match(y)[1]
85
- @lquery = new RegExp "\\b#{@lquery}", "i"
86
- @mode = 'label'
87
- return view.LABELS
88
-
89
- else if a > 0 and b > 0
76
+ else if a > 0
90
77
  @mode = 'summary'
91
78
  return []
92
79
 
@@ -98,14 +85,10 @@ class window.NewTicketView extends Backbone.View
98
85
  if @mode == 'type'
99
86
  view.autocompleteDescriptionFor(item)
100
87
  @$element.val().replace(/^[^\]]*(\] ?|$)?/, item + ' ')
101
- else if @mode == 'label'
102
- @$element.val().replace(/\] ?[^:]*(: ?|$)/, '] ' + item + ': ')
103
88
 
104
89
  matcher: (item)->
105
90
  if @mode == 'type'
106
91
  ~item.toLowerCase().indexOf(@tquery)
107
- else if @mode == 'label'
108
- @lquery.test(item)
109
92
  else
110
93
  false
111
94
 
@@ -119,9 +102,6 @@ class window.NewTicketView extends Backbone.View
119
102
  if !///#{@TAG_MATCHER} ///.test(summary)
120
103
  @$el.attr('data-mode', 'type')
121
104
  @$suggestions.empty()
122
- else if !///#{@TAG_MATCHER} (.*):///.test(summary)
123
- @$el.attr('data-mode', 'label')
124
- @$suggestions.empty()
125
105
  else
126
106
  @$el.attr('data-mode', 'summary')
127
107
  md = summary.match(///#{@TAG_MATCHER} (.*)///)
@@ -91,12 +91,6 @@ Handlebars.registerHelper 'ifEq', (v1, v2, block)->
91
91
  else
92
92
  block.inverse(@)
93
93
 
94
- Handlebars.registerHelper 'summarizeAntecedents', (antecedents)->
95
- html = ''
96
- for kind, antecedents of _.groupBy(antecedents, (antecedent)-> antecedent.kind)
97
- html += "#{kind} <span class=\"badge\">#{antecedents.length}</span>"
98
- html
99
-
100
94
  Handlebars.registerPartial 'sprintTask', (task)->
101
95
  HandlebarsTemplates['sprints/task'](task)
102
96
 
@@ -4,3 +4,19 @@
4
4
  h2 { font-weight: 100; margin-left: 110px; }
5
5
  h4 { font-weight: 400; }
6
6
  }
7
+
8
+ .commit-extra-attribute {
9
+ color: #666;
10
+ font-size: 10px;
11
+ line-height: normal;
12
+ background: #f4f4f4;
13
+ display: inline-block;
14
+ padding: 2px;
15
+
16
+ &::before { content: '{{'; }
17
+ &::after { content: '}}'; }
18
+ }
19
+
20
+ .commit-extra-attribute-key::after {
21
+ content: ':';
22
+ }
@@ -136,6 +136,7 @@ $current-project-active-bg: #222;
136
136
  }
137
137
 
138
138
  &:hover { color: white; }
139
+ &:focus { color: white; }
139
140
  }
140
141
 
141
142
  .navbar .nav li.current-project.dropdown.open > .dropdown-toggle,
@@ -16,10 +16,6 @@
16
16
  content: 'What kind of ticket is this? [bug]? [feature]?';
17
17
  }
18
18
 
19
- &[data-mode="label"]::after {
20
- content: 'What view or feature does it have to do with? Profile? Enter Attendance?';
21
- }
22
-
23
19
  &[data-mode="summary"]::after {
24
20
  content: 'Hit return to finish making your ticket ⏎';
25
21
  }
@@ -65,20 +65,6 @@ td.project-participants .hidden-text { display: inline-block; }
65
65
  input[type="image"], input[type="checkbox"], input[type="radio"] { margin: 0; }
66
66
  }
67
67
 
68
- th, td {
69
- &.project-unfuddle-link {
70
- padding-right: 2px !important;
71
- }
72
- &.project-errbit-link {
73
- padding-left: 2px !important;
74
- padding-right: 2px !important;
75
- }
76
- &.project-github-link {
77
- padding-left: 2px !important;
78
- padding-right: 2px !important;
79
- }
80
- }
81
-
82
68
  td.project-title { white-space: nowrap; }
83
69
 
84
70
  td.project-feature-error {
@@ -43,7 +43,7 @@
43
43
  color: #777;
44
44
  }
45
45
 
46
- .release-antecedents ul, .release-commits ul {
46
+ .release-commits ul {
47
47
  max-width: 680px;
48
48
  margin: 5px 0;
49
49
  }
@@ -0,0 +1,68 @@
1
+ .teams {
2
+ column-width: 320px;
3
+ column-gap: 1em;
4
+ columns: 3;
5
+ }
6
+ @media (max-width: 1024px) { .teams { columns: 2; } }
7
+ @media (max-width: 720px) { .teams { columns: 1; } }
8
+
9
+ .team-wrapper {
10
+ -webkit-column-break-inside: avoid;
11
+ page-break-inside: avoid;
12
+ break-inside: avoid;
13
+ padding-bottom: 1em;
14
+ }
15
+
16
+ .team {
17
+ box-shadow: 0 1px 2px rgba(34, 25, 25, 0.1);
18
+ border: 1px solid #ccc;
19
+ padding: 2em;
20
+ border-radius: 4px;
21
+
22
+ h3 {
23
+ line-height: normal;
24
+ margin: 0 0 1em 0;
25
+ }
26
+
27
+ h6 {
28
+ text-transform: uppercase;
29
+ font-weight: 500;
30
+ color: #ccc;
31
+ margin: 2em 0 0.5em 0;
32
+ }
33
+
34
+ ol {
35
+ overflow: auto;
36
+ margin: 0;
37
+ padding: 0;
38
+ }
39
+
40
+ ol.team-members {
41
+ column-width: 320px;
42
+ column-gap: 1em;
43
+ columns: 2;
44
+ }
45
+
46
+ li.team-member {
47
+ -webkit-column-break-inside: avoid;
48
+ page-break-inside: avoid;
49
+ break-inside: avoid;
50
+ display: block;
51
+ position: relative;
52
+ line-height: normal;
53
+ padding: 0 0 0.5em 40px;
54
+ min-height: 32px;
55
+
56
+ .user-avatar {
57
+ position: absolute;
58
+ left: 0;
59
+ }
60
+
61
+ .user-name { display: block; }
62
+ .user-roles { display: block; }
63
+ }
64
+
65
+ .team-projects-add {
66
+ margin: 1em 0 0 0;
67
+ }
68
+ }