CHANGELOG 15.4 KB
Newer Older
1 2 3
v 6.2.0
  - Public projects are visible from the outside

4
v 6.1.0
5 6 7
  - Project specific IDs for issues, mr, milestones
    Above items will get a new id and for example all bookmarked issue urls will change.
    Old issue urls are redirected to the new one if the issue id is too high for an internal id.
8 9 10 11 12
  - Description field added to Merge Request
  - API: Sudo api calls (Izaak Alpert)
  - API: Group membership api (Izaak Alpert)
  - Improved commit diff
  - Improved large commit handling (Boyan Tabakov)
13
  - Rewrite: Init script now less prone to errors and keeps better track of the service (Rovanion Luckey)
14
  - Link issues, merge requests, and commits when they reference each other with GFM (Ash Wilson)
15
  - Close issues automatically when pushing commits with a special message
16
  - Improve user removal from admin area
17
  - Invalidate events cache when project was moved
18 19 20
  - Remove deprecated classes and rake tasks
  - Add event filter for group and project show pages
  - Add links to create branch/tag from project home page
21 22 23 24
  - Add public-project? checkbox to new-project view
  - Improved compare page. Added link to proceed into Merge Request
  - Send email to user when he was added to group
  - New landing page when you have 0 projects
25

26
v 6.0.0
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
27
  - Feature: Replace teams with group membership
28 29 30 31 32 33 34
    We introduce group membership in 6.0 as a replacement for teams.
    The old combination of groups and teams was confusing for a lot of people.
    And when the members of a team where changed this wasn't reflected in the project permissions.
    In GitLab 6.0 you will be able to add members to a group with a permission level for each member.
    These group members will have access to the projects in that group.
    Any changes to group members will immediately be reflected in the project permissions.
    You can even have multiple owners for a group, greatly simplifying administration.
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
35 36 37 38 39 40 41 42 43 44 45 46 47
  - Feature: Ability to have multiple owners for group
  - Feature: Merge Requests between fork and project (Izaak Alpert)
  - Feature: Generate fingerprint for ssh keys
  - Feature: Ability to create and remove branches with UI
  - Feature: Ability to create and remove git tags with UI
  - Feature: Groups page in profile. You can leave group there
  - API: Allow login with LDAP credentials
  - Redesign: project settings navigation
  - Redesign: snippets area
  - Redesign: ssh keys page
  - Redesign: buttons, blocks and other ui elements
  - Add comment title to rss feed
  - You can use arrows to navigate at tree view
48
  - Add project filter on dashboard
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
49
  - Cache project graph
50 51 52 53 54 55 56 57
  - Drop support of root namespaces
  - Default theme is classic now
  - Cache result of methods like authorize_projects, project.team.members etc
  - Remove $.ready events
  - Fix onclick events being double binded
  - Add notification level to group membership
  - Move all project controllers/views under Projects:: module
  - Move all profile controllers/views under Profiles:: module
58
  - Apply user project limit only for personal projects
59
  - Unicorn is default web server again
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
60 61 62 63 64
  - Store satellites lock files inside satellites dir
  - Disabled threadsafety mode in rails
  - Fixed bug with loosing MR comments
  - Improved MR comments logic
  - Render readme file for projects in public area
65

66 67 68 69 70 71 72
v 5.4.0
  - Ability to edit own comments
  - Documentation improvements
  - Improve dashboard projects page
  - Fixed nav for empty repos
  - GitLab Markdown help page
  - Misspelling fixes
Takao Baba's avatar
Takao Baba committed
73
  - Added support of unicorn and fog gems
74
  - Added client list to API doc
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
75 76 77 78 79
  - Fix PostgreSQL database restoration problem
  - Increase snippet content column size
  - allow project import via git:// url
  - Show participants on issues, including mentions
  - Notify mentioned users with email
80

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
81
v 5.3.0
82
  - Refactored services
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
83
  - Campfire service added
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
84 85
  - HipChat service added
  - Fixed bug with LDAP + git over http
Takao Baba's avatar
Takao Baba committed
86
  - Fixed bug with google analytics code being ignored
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
87 88 89
  - Improve sign-in page if ldap enabled
  - Respect newlines in wall messages
  - Generate the Rails secret token on first run
90
  - Rename repo feature
Dennis Boldt's avatar
Typos  
Dennis Boldt committed
91
  - Init.d: remove gitlab.socket on service start
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
92 93
  - Api: added teams api
  - Api: Prevent blob content being escaped
94
  - Api: Smart deploy key add behaviour
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
95
  - Api: projects/owned.json return user owned project
96
  - Fix bug with team assignation on project from #4109
97
  - Advanced snippets: public/private, project/personal (Andrew Kulakov)
98
  - Repository Graphs (Karlo Nicholas T. Soriano)
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
99 100 101 102 103 104 105
  - Fix dashboard lost if comment on commit
  - Update gitlab-grack. Fixes issue with --depth option
  - Fix project events duplicate on project page
  - Fix postgres error when displaying network graph.
  - Fix dashboard event filter when navigate via turbolinks
  - init.d: Ensure socket is removed before starting service
  - Admin area: Style teams:index, group:show pages
106
  - Own page for failed forking
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
107
  - Scrum view for milestone
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
108

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
109 110 111 112 113 114 115 116 117
v 5.2.0
  - Turbolinks
  - Git over http with ldap credentials
  - Diff with better colors and some spacing on the corners
  - Default values for project features
  - Fixed huge_commit view
  - Restyle project clone panel
  - Move Gitlab::Git code to gitlab_git gem
  - Move update docs in repo
118 119
  - Requires gitlab-shell v1.4.0
  - Fixed submodules listing under file tab
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
120 121 122
  - Fork feature (Angus MacArthur)
  - git version check in gitlab:check
  - Shared deploy keys feature
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
123
  - Ability to generate default labels set for issues
124 125
  - Improve gfm autocomplete (Harold Luo)
  - Added support for Google Analytics
126
  - Code search feature (Javier Castro)
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
127

128
v 5.1.0
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
129
  - You can login with email or username now
130
  - Corrected project transfer rollback when repository cannot be moved
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
131
  - Move both repo and wiki when project transfer requested
132 133
  - Admin area: project editing was removed from admin namespace
  - Access: admin user has now access to any project.
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
134 135 136
  - Notification settings
  - Gitlab::Git set of objects to abstract from grit library
  - Replace Unicorn web server with Puma
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
137 138 139
  - Backup/Restore refactored. Backup dump project wiki too now
  - Restyled Issues list. Show milestone version in issue row
  - Restyled Merge Request list
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
140
  - Backup now dump/restore uploads
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
141
  - Improved performance of dashboard (Andrew Kumanyaev)
142
  - File history now tracks renames (Akzhan Abdulin)
143 144
  - Drop wiki migration tools
  - Drop sqlite migration tools
145 146
  - project tagging
  - Paginate users in API
147
  - Restyled network graph (Hiroyuki Sato)
148 149

v 5.0.1
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
150
  - Fixed issue with gitlab-grit being overridden by grit
151

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
152
v 5.0.0
153
  - Replaced gitolite with gitlab-shell
154 155 156 157 158 159 160 161 162 163 164 165 166 167
  - Removed gitolite-related libraries
  - State machine added
  - Setup gitlab as git user
  - Internal API
  - Show team tab for empty projects
  - Import repository feature
  - Updated rails
  - Use lambda for scopes
  - Redesign admin area -> users
  - Redesign admin area -> user
  - Secure link to file attachments
  - Add validations for Group and Team names
  - Restyle team page for project
  - Update capybara, rspec-rails, poltergeist to recent versions
168
  - Wiki on git using Gollum
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
169
  - Added Solarized Dark theme for code review
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
170
  - Don't show user emails in autocomplete lists, profile pages
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
171 172 173 174 175 176 177
  - Added settings tab for group, team, project
  - Replace user popup with icons in header
  - Handle project moving with gitlab-shell
  - Added select2-rails for selectboxes with ajax data load
  - Fixed search field on projects page
  - Added teams to search autocomplete
  - Move groups and teams on dashboard sidebar to sub-tabs
178
  - API: improved return codes and docs. (Felix Gilcher, Sebastian Ziebell)
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
179 180
  - Redesign wall to be more like chat
  - Snippets, Wall features are disabled by default for new projects
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
181

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
182
v 4.2.0
183
  - Teams
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
184 185
  - User show page. Via /u/username
  - Show help contents on pages for better navigation
186 187 188 189 190 191 192 193 194
  - Async gitolite calls
  - added satellites logs
  - can_create_group, can_create_team booleans for User
  - Process web hooks async
  - GFM: Fix images escaped inside links
  - Network graph improved
  - Switchable branches for network graph
  - API: Groups
  - Fixed project download
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
195

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
196
v 4.1.0
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
197
  - Optional Sign-Up
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
198 199 200 201
  - Discussions
  - Satellites outside of tmp
  - Line numbers for blame
  - Project public mode
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
202 203 204 205 206 207 208 209
  - Public area with unauthorized access
  - Load dashboard events with ajax
  - remember dashboard filter in cookies
  - replace resque with sidekiq
  - fix routing issues
  - cleanup rake tasks
  - fix backup/restore
  - scss cleanup
210
  - show preview for note images
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
211 212 213 214 215
  - improved network-graph
  - get rid of app/roles/
  - added new classes Team, Repository
  - Reduce amount of gitolite calls
  - Ability to add user in all group projects
216
  - remove deprecated configs
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
217 218 219 220
  - replaced Korolev font with open font
  - restyled admin/dashboard page
  - restyled admin/projects page

221
v 4.0.0
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
222
  - Remove project code and path from API. Use id instead
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
223
  - Return valid cloneable url to repo for web hook
224
  - Fixed backup issue
225 226 227 228 229 230 231 232 233 234 235
  - Reorganized settings
  - Fixed commits compare
  - Refactored scss
  - Improve status checks
  - Validates presence of User#name
  - Fixed postgres support
  - Removed sqlite support
  - Modified post-receive hook
  - Milestones can be closed now
  - Show comment events on dashboard
  - Quick add team members via group#people page
236
  - [API] expose created date for hooks and SSH keys
237 238 239
  - [API] list, create issue notes
  - [API] list, create snippet notes
  - [API] list, create wall notes
240 241 242 243 244 245 246 247 248 249 250
  - Remove project code - use path instead
  - added username field to user
  - rake task to fill usernames based on emails create namespaces for users
  - STI Group < Namespace
  - Project has namespace_id
  - Projects with namespaces also namespaced in gitolite and stored in subdir
  - Moving project to group will move it under group namespace
  - Ability to move project from namespaces to another
  - Fixes commit patches getting escaped (see #2036)
  - Support diff and patch generation for commits and merge request
  - MergeReqest doesn't generate a temporary file for the patch any more
Nihad Abbasov's avatar
Nihad Abbasov committed
251
  - Update the UI to allow downloading Patch or Diff
252

253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270
v 3.1.0
  - Updated gems
  - Services: Gitlab CI integration
  - Events filter on dashboard
  - Own namespace for redis/resque
  - Optimized commit diff views
  - add alphabetical order for projects admin page
  - Improved web editor
  - Commit stats page
  - Documentation split and cleanup
  - Link to commit authors everywhere
  - Restyled milestones list
  - added Milestone to Merge Request
  - Restyled Top panel
  - Refactored Satellite Code
  - Added file line links
  - moved from capybara-webkit to poltergeist + phantomjs

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
271 272 273 274
v 3.0.3
  - Fixed bug with issues list in Chrome
  - New Feature: Import team from another project

Dmitriy Zaporozhets's avatar
v3.0.2  
Dmitriy Zaporozhets committed
275 276 277 278 279
v 3.0.2
  - Fixed gitlab:app:setup
  - Fixed application error on empty project in admin area
  - Restyled last push widget

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
280 281 282
v 3.0.1
  - Fixed git over http

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
283
v 3.0.0
284 285 286
  - Projects groups
  - Web Editor
  - Fixed bug with gitolite keys
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
287
  - UI improved
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
288
  - Increased performance of application
Nihad Abbasov's avatar
Nihad Abbasov committed
289
  - Show user avatar in last commit when browsing Files
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
290
  - Refactored Gitlab::Merge
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
291 292
  - Use Font Awesome for icons
  - Separate observing of Note and MergeRequests
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
293 294 295
  - Milestone "All Issues" filter
  - Fix issue close and reopen button text and styles
  - Fix forward/back while browsing Tree hierarchy
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
296
  - Show number of notes for commits and merge requests
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
297 298
  - Added support pg from box and update installation doc
  - Reject ssh keys that break gitolite
299 300
  - [API] list one project hook
  - [API] edit project hook
301
  - [API] list project snippets
Nihad Abbasov's avatar
Nihad Abbasov committed
302 303 304
  - [API] allow to authorize using private token in HTTP header
  - [API] add user creation

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
305 306 307
v 2.9.1
  - Fixed resque custom config init

randx's avatar
randx committed
308 309 310 311 312 313 314
v 2.9.0
  - fixed inline notes bugs
  - refactored rspecs
  - refactored gitolite backend
  - added factory_girl
  - restyled projects list on dashboard
  - ssh keys validation to prevent gitolite crash
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
315
  - send notifications if changed permission in project
Nihad Abbasov's avatar
Nihad Abbasov committed
316
  - scss refactoring. gitlab_bootstrap/ dir
randx's avatar
randx committed
317 318
  - fix git push http body bigger than 112k problem
  - list of labels  page under issues tab
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
319
  - API for milestones, keys
randx's avatar
randx committed
320
  - restyled buttons
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
321 322
  - OAuth
  - Comment order changed
randx's avatar
randx committed
323

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
324 325 326 327 328
v 2.8.1
  - ability to disable gravatars
  - improved MR diff logic
  - ssh key help page

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
329 330 331 332 333
v 2.8.0
  - Gitlab Flavored Markdown
  - Bulk issues update
  - Issues API
  - Cucumber coverage increased
randx's avatar
randx committed
334 335 336 337 338
  - Post-receive files fixed
  - UI improved
  - Application cleanup
  - more cucumber
  - capybara-webkit + headless
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
339

randx's avatar
randx committed
340 341
v 2.7.0
  - Issue Labels
342 343 344 345
  - Inline diff
  - Git HTTP
  - API
  - UI improved
randx's avatar
randx committed
346 347 348
  - System hooks
  - UI improved
  - Dashboard events endless scroll
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
349
  - Source performance increased
randx's avatar
randx committed
350

randx's avatar
randx committed
351 352 353 354 355 356
v 2.6.0
  - UI polished
  - Improved network graph + keyboard nav
  - Handle huge commits
  - Last Push widget
  - Bugfix
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
357
  - Better performance
randx's avatar
randx committed
358 359 360 361 362
  - Email in resque
  - Increased test coverage
  - Ability to remove branch with MR accept
  - a lot of code refactored

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
363 364 365 366 367 368 369
v 2.5.0
  - UI polished
  - Git blame for file
  - Bugfix
  - Email in resque
  - Better test coverage

370
v 2.4.0
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
371
  - Admin area stats page
372 373 374 375 376 377
  - Ability to block user
  - Simplified dashboard area
  - Improved admin area
  - Bootstrap 2.0
  - Responsive layout
  - Big commits handling
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
378
  - Performance improved
379
  - Milestones
380 381 382 383 384 385

v 2.3.1
  - Issues pagination
  - ssl fixes
  - Merge Request pagination

randx's avatar
randx committed
386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410
v 2.3.0
  - Dashboard r1
  - Search r1
  - Project page
  - Close merge request on push
  - Persist MR diff after merge
  - mysql support
  - Documentation

v 2.2.0
  - We’ve added support of LDAP auth
  - Improved permission logic (4 roles system)
  - Protected branches (now only masters can push to protected branches)
  - Usability improved
  - twitter bootstrap integrated
  - compare view between commits
  - wiki feature
  - now you can enable/disable issues, wiki, wall features per project
  - security fixes
  - improved code browsing (ajax branch switch etc)
  - improved per-line commenting
  - git submodules displayed
  - moved to rails 3.2
  - help section improved

411 412
v 2.1.0
  - Project tab r1
randx's avatar
randx committed
413 414 415
  - List branches/tags
  - per line comments
  - mass user import
416

417 418 419
v 2.0.0
  - gitolite as main git host system
  - merge requests
Nihad Abbasov's avatar
Nihad Abbasov committed
420
  - project/repo access
421 422 423 424
  - link to commit/issue feed
  - design tab
  - improved email notifications
  - restyled dashboard
425 426
  - bugfix

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
427 428 429 430 431 432 433 434 435 436
v 1.2.2
  - common config file gitlab.yml
  - issues restyle
  - snippets restyle
  - clickable news feed header on dashboard
  - bugfix

v 1.2.1
  - bugfix

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
437 438 439
v 1.2.0
  - new design
  - user dashboard
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
440
  - network graph
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
441 442 443 444
  - markdown support for comments
  - encoding issues
  - wall like twitter timeline

gitlabhq's avatar
gitlabhq committed
445
v 1.1.0
gitlabhq's avatar
gitlabhq committed
446 447
  - project dashboard
  - wall redesigned
gitlabhq's avatar
gitlabhq committed
448 449 450 451 452 453
  - feature: code snippets
  - fixed horizontal scroll on file preview
  - fixed app crash if commit message has invalid chars
  - bugfix & code cleaning

v 1.0.2
Nihad Abbasov's avatar
Nihad Abbasov committed
454
  - fixed bug with empty project
gitlabhq's avatar
gitlabhq committed
455 456 457
  - added adv validation for project path & code
  - feature: issues can be sortable
  - bugfix
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
458
  - username displayed on top panel
gitlabhq's avatar
gitlabhq committed
459

gitlabhq's avatar
gitlabhq committed
460 461
v 1.0.1
  - fixed: with invalid source code for commit
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
462
  - fixed: lose branch/tag selection when use tree navigation
gitlabhq's avatar
gitlabhq committed
463 464
  - when history clicked - display path
  - bug fix & code cleaning
gitlabhq's avatar
gitlabhq committed
465

gitlabhq's avatar
v1.0  
gitlabhq committed
466 467 468
v 1.0.0
  - bug fix
  - projects preview mode
gitlabhq's avatar
gitlabhq committed
469

gitlabhq's avatar
gitlabhq committed
470 471 472
v 0.9.6
  - css fix
  - new repo empty tree until restart server - fixed
gitlabhq's avatar
gitlabhq committed
473

gitlabhq's avatar
gitlabhq committed
474 475 476 477 478
v 0.9.4
  - security improved
  - authorization improved
  - html escaping
  - bug fix
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
479
  - increased test coverage
gitlabhq's avatar
gitlabhq committed
480 481
  - design improvements

gitlabhq's avatar
gitlabhq committed
482
v 0.9.1
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
483
  - increased test coverage
gitlabhq's avatar
gitlabhq committed
484 485 486 487 488
  - design improvements
  - new issue email notification
  - updated app name
  - issue redesigned
  - issue can be edit
gitlabhq's avatar
gitlabhq committed
489

gitlabhq's avatar
gitlabhq committed
490
v 0.8.0
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
491
  - syntax highlight for main file types
gitlabhq's avatar
gitlabhq committed
492 493 494 495 496
  - redesign
  - stability
  - security fixes
  - increased test coverage
  - email notification