Code Monkey home page Code Monkey logo

huboard-web's Introduction

GitHub issues made awesome

HuBoard logo

Build Status Check out our parent repository for details!

License

The MIT License (MIT) Copyright (c) 2012-2016 HuBoard, Inc.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

huboard-web's People

Contributors

dahlbyk avatar dealingwith avatar discorick avatar iheanyi avatar kevpo avatar petey-rock avatar rauhryan avatar readmecritic avatar thetimbanks avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

huboard-web's Issues

Tickets added to the bottom of the list?

As far as I can remember, when a ticket was moved between columns historically, it'd always default to be at the top of the list, unless you dragged it to a specific spot. That no longer seems to be the case, and instead tickets are added to the very bottom of the given column. Was this change intentional? Is there any chance we could introduce a setting to add back the original behavior?

Add Repo To Issue View

I currently use a linked repository to see all issues that are logged on all of my repos. This is fantastic for project management. However, I do not think that color coordinating each issue, based on the repo, is enough. Would it be possible to also put the repo name somewhere in the full details of the issue? Maybe in the right sidebar?

screen_shot_2016-01-19_at_2_23_44_pm

Enable Intercom on HuBoard marketing/login materials

Right now intercom is not enabled for the marketing materials.

We have a partial in app/views/shared/_analytics.html.erb where we define client-side Segment behavior on line 4. Need to figure out a way to make this work when current_user.id is null (pre login) so that we can still service anonymous users.

Related materials would be the segment.com documentation, also take a look at the segment intercom integration.

Fullscreen breadcrumbs for linked issues is not working from the parent repository

uploads/833fd8a5-4646-4770-be22-8409973c3ed2/huboard_huboard_HuBoard.png

Steps to reproduce:

  1. Open huboard/huboard
  2. Find issue #186
  3. Notice the fullscreen breadcrumbs is not correct

Possible causes:

  • Columns from linked repositories doesn't rely on the hardened array index but instead on the user entered label name index.
  • Columns are based on a string comparison?

uploads/b6a3a408-dd0a-4cb9-96fb-3f42294abe09/Labels_·huboard_huboard-web_and_Labels·_huboard_huboard_png.png

Expected results:

See picture above, give that both repositories have the same column names, we should treat them equally based on real index

Faye Rack Adapter Initialization Error

When #214 was deployed there were two new app initialization errors:

Message: wrong number of arguments (1 for 0)

Backtrace:

/app/vendor/bundle/ruby/2.2.0/gems/faye-1.1.1/lib/faye/adapters/rack_adapter.rb:72 initialize
/app/vendor/bundle/ruby/2.2.0/gems/faye-1.1.1/lib/faye/adapters/rack_adapter.rb:72 new
/app/vendor/bundle/ruby/2.2.0/gems/faye-1.1.1/lib/faye/adapters/rack_adapter.rb:72 get_client
/app/vendor/bundle/ruby/2.2.0/gems/faye-1.1.1/lib/faye/adapters/rack_adapter.rb:80 call
/app/vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/etag.rb:24 call
/app/vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/conditionalget.rb:25 call
/app/vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/head.rb:13 call
/app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/action_dispatch/middleware/params_parser.rb:27 call
/app/vendor/bundle/ruby/2.2.0/gems/warden-1.2.3/lib/warden/manager.rb:35 block in call
/app/vendor/bundle/ruby/2.2.0/gems/warden-1.2.3/lib/warden/manager.rb:34 catch
/app/vendor/bundle/ruby/2.2.0/gems/warden-1.2.3/lib/warden/manager.rb:34 call
/app/config/initializers/warden.rb:72 call
/app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/action_dispatch/middleware/flash.rb:260 call

Message: Circular dependency detected while autoloading constant JobResolver

Backtrace:

/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:492 load_missing_constant
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:184 const_missing
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:526 load_missing_constant
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:184 const_missing
/app/app/controllers/application_controller.rb:44 queue_job
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:432 block in make_lambda
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:239 call
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:239 block in halting
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:506 call
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:506 block in call
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:506 each
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:506 call
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:92 __run_callbacks__
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:778 _run_process_action_callbacks
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:81 run_callbacks
/app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/abstract_controller/callbacks.rb:19 process_action
/app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/action_controller/metal/rescue.rb:29 process_action
/app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/action_controller/metal/instrumentation.rb:32 block in process_action
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/notifications.rb:164 block in instrument
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/notifications/instrumenter.rb:20 instrument
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/notifications.rb:164 instrument
/app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/action_controller/metal/instrumentation.rb:30 process_action
/app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/action_controller/metal/params_wrapper.rb:250 process_action
/app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/abstract_controller/base.rb:137 process
/app/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/rendering.rb:30 process
/app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/action_controller/metal.rb:196 dispatch
/app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/action_controller/metal/rack_delegation.rb:13 dispatch
/app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/action_controller/metal.rb:237 block in action
/app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/action_dispatch/routing/route_set.rb:76 call
/app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/action_dispatch/routing/route_set.rb:76 dispatch
/app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/action_dispatch/routing/route_set.rb:45 serve
/app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/action_dispatch/journey/router.rb:43 block in serve
/app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/action_dispatch/journey/router.rb:30 each
/app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/action_dispatch/journey/router.rb:30 serve
/app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/action_dispatch/routing/route_set.rb:821 call
/app/vendor/bundle/ruby/2.2.0/gems/ember-rails-assets-0.1.1/lib/ember/rails/assets/middleware.rb:8 call
/app/vendor/bundle/ruby/2.2.0/gems/pdfkit-0.6.2/lib/pdfkit/middleware.rb:17 call
/app/vendor/bundle/ruby/2.2.0/gems/rack-attack-4.2.0/lib/rack/attack.rb:104 call
/app/vendor/bundle/ruby/2.2.0/gems/faye-1.1.1/lib/faye/adapters/rack_adapter.rb:81 call
/app/vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/etag.rb:24 call
/app/vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/conditionalget.rb:25 call
/app/vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/head.rb:13 call
/app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/action_dispatch/middleware/params_parser.rb:27 call
/app/vendor/bundle/ruby/2.2.0/gems/warden-1.2.3/lib/warden/manager.rb:35 block in call
/app/vendor/bundle/ruby/2.2.0/gems/warden-1.2.3/lib/warden/manager.rb:34 catch
/app/vendor/bundle/ruby/2.2.0/gems/warden-1.2.3/lib/warden/manager.rb:34 call
/app/config/initializers/warden.rb:72 call
/app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/action_dispatch/middleware/flash.rb:260 call

Missing AWS keys prevents deployment

remote: -----> Preparing app for Rails asset pipeline
remote:        Running: rake assets:precompile
remote:        rake aborted!
remote:        ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_key

Might consider either making those keys optional, and feature-flag the related functionality accordingly, or adding a bit to the deployment documention on the use and recommended IAM policy for those keys. Happy to pursue and contribute one or the other.

Lost Realtime Events

Under certain circumstances real time events can be lost causing boards to fall out if sync with GitHub.

One obvious reproduction of this is when a browser is closed and reopened later, a saved HuBoard tab will reopen to the last know state, but the events required to sync up are long gone - this can be chaotic for users during morning stand ups and meetings.

I suspect (but have not confirmed) this can also happen when a tab is either left unattended for long periods of time, or a system has been left in sleep mode. One of our users reports:

There is something seriously wrong with Huboard's synching with GitHub. Even when I'm actively using Huboard it does not resynch my browser session with GitHub. I'm constantly finding myself in situations where my guys are asking me to look at a bug and when I query for it, it doesn't show up in Huboard. I have to do a full refresh before I will find it. Really frustrating.

Also Relates to missing Events: huboard/huboard#598
Closes huboard/huboard#214

Task List:

  • Implement Sticky Toasts, and Stateful Progress Toasts
  • After a period of inactivity, run a diff on the browser on focus to determine if any events have been missed
    • Track the last X number of events processed
    • If events are missing, and not past the X threshold, fetch the missed events and play them on the client
    • Disable board use during any syncing activity
    • If events are missing and are past X threshold, prompt for page refresh

Migrate from Fontdeck

We go into more detail as to why on our blog, but what you need to know now is that as of 1 December 2015 we are not accepting any new accounts, project upgrades, or font purchases. Fonts will stop being served on 1 December 2016.

We hope this will give you plenty of time to find an alternative source for your webfonts. To help with this we’ve put together a comprehensive migration chart showing where you can get webfont licenses for each of our foundry partners.

Filter columns in Milestones view

I'm not sure it's the right place to ask for features, but ...

In Milestones view, it would be great to have the possibility to filter on defined columns .

In my project, I have a Idea/Discussion column and a Backlog column, and I want to assign milestones from Backlog columns only right in the Milestones view.

Today, I have to do it in the Task view, but it's not really appropriate because it requires to open all issues from backlog column, and set the milestone manually for each of them. With the columns filter in Milestones view, it would be possible to perform this more quickly with drag&drop.

Thanks for this great tool !

Links should go to a new tab / window. OR the app should remember filter settings

Use case:

  1. Have a project selected as a filter and a label selected as a filter.
  2. Scrolled way down to an obscure ticket.
  3. Click on a link in the ticket. You now go to the new page, but on back all of the filter settings and position information is lost.

Seems like there are a couple of solutions:

  1. Always link off the site for external links (any links)
  2. remember in the URL the filter settings to reload the page properly. Also would handle the link sharing use case.

Users are experiencing unexpected sign outs

Possible causes:

  • OAuth token is mysteriously getting revoked by GitHub
  • We have some weird cookie bug that I'm too noob to understand about
  • Other???

Possible fixes:

  • Sliding window expiration on our cookies
  • Talk to the gitter guys, they don't seem to every have this issue
  • user multiple OAuth applications (one for public one for private)

Type ahead picker/selector is not visible when you scroll down the page and try to @mention a user

Steps to reproduce:

  1. open up a HuBoard
  2. click a card to fullscreen the issue
  3. scroll down to the comment box and try to @mention a user

Expect:

An autocomplete list to show up with autoselection

[Should pass]

Steps to reproduce:

  1. Scroll half way down the page
  2. open up a HuBoard
  3. click a card to fullscreen the issue
  4. scroll down to the comment box and try to @mention a user

Expect:

An autocomplete list to show up with autoselection

[Should :fail:]

Allow URL for HipChat Integration

Currently the HipChat Integration is hard-coded, this should be an optional string to allow on-prem hipchat integrations to work as well.

Set the column at creation time

First of all, let me say you guys have done an awesome job with huboard. Probably the biggest pain point for me is that i can't create an issue and assign it to a column at the same time. Maybe I'm overlooking something about why this might not be desirable. Just to make a case for it though, our default column is Backlog. However, when creating a new issue, we often want to put it directly into the second column "Todo". Is this anywhere on your roadmap?

[SAAS] Goal tracking added to Google Analytics

Build up analytic goal tracking for HuBoard

  • Enterprise Contact/Trial submit
  • Enterprise Login to Dashboard
  • shared/analytics in every view
    • /login #194
    • Errors?
  • Login actions
    • /login/(public|private)#232
    • /login/(public|private)/authorized#232
  • Basic account actions
    • /settings/{owner}/trial when email prompt is shown ✓
    • /settings/{owner}/trialing when email prompt is submitted ✓ #207
    • /settings/{owner}/expired when an expired trial board is accessed ✓ #208
    • /settings/{owner}/canceled when a cancelled account board is accessed ✓ #208
  • Account reactivation (requirement of huboard/huboard#635)
    • /settings/{owner}/reactivate when a long-expired/cancelled board is accessed
    • /settings/{owner}/reactivating when a reactivation trial is started
  • Board actions
    • /{owner}/{repo}/board/create when we offer to create HB labels ✓
    • /{owner}/{repo}/board/creating when we are asked to create HB labels ✓ #233
  • /settings/profile actions
    • /settings/{owner}/upgrade when Upgrade is clicked (popping Stripe)
    • /settings/{owner}/upgrading when Stripe is successfully submitted (/settings/charge/dahlbyk) ✓ #230
    • /settings/{owner}/canceling when an account is cancelled ✓ #230
    • What else?

Constrain commit messages to subject line

This appears to be a partially implemented feature:

image

Please advise, thanks. My team and I are evaluating HuBoard, so it's good to know what to expect when we see things like this.

Enhancing the Review Process

I work with a team of about 10 people, and often we need someone to review an issue before it can get moved to "done". Currently, we just place it in review and "@" mention the person who needs to review that item, however, with a growing team that is managing much larger projects, this is becoming difficult to manage.

We are looking for a way to add team members to an issue that are responsible for reviewing the work done in that issue. Some key information that would be helpful is if the reviewer has opened the issue since it was placed in review, and maybe an indicator that the user approves this work. It would also be helpful if these reviewers received a notification email when an issue is moved into "Review". It is important that the review is tied to a user, and not just a free floating feature. It is also important that more than one reviewer can be added to an issue.

Improve Login Flow

Good enough:

  • Change the copy of the "Sign in" button to an icon button with the octocat and "Sign in with GitHub" - @discorick
  • /login Simplify the two step process with just [Sign in with GitHub] - @discorick
  • /login Add (Green icon) Your email to the permissions asked for - @discorick
  • "Sign in with github button" Change it's default behavior to "public" scope + email - @discorick
  • Force a re-auth for all new "login" clicks
  • Move public vs private to separate OAuth applications - @rauhryan
  • Store credentials in couchdb (must be encrypted)
  • Change copy on pricing page to say we store tokens with XYZ encryption and never look at your data without your expressed permission
  • Ensure that email that is collected is making it into intercom [#1 criteria for acceptance]
  • Sense public auth only on the dashboard and provide an upgrade option - @discorick

Better:

  • Skip /login all together and default to "Email scope"
  • [DASHBOARD] If we only have the "email" scope, the landing page should be a "Welcome" here's how you get started similar to what [/login] does today. uploads/749cceb6-3b13-4550-9416-94f083f33aa3/huboard_huboard-web_172_pdf__1_page_.png
  • [DASHBOARD] If we know they only have Public access, have an option to upgrade to private ("Not seeing your private repositories? [Upgrade access] [?]"

IssueEventJob Undefined Method

Since #217 was deployed we're getting a few of these:

Message: undefined method `[]' for nil:NilClass

Backtrace:

/app/app/jobs/issue_event_job.rb:29 block in build_meta
/app/app/jobs/issue_event_job.rb:29 call
/app/app/jobs/issue_event_job.rb:29 build_meta
/app/app/jobs/issue_event_job.rb:35 guard_against_double_events

Relevant line:

identifier: (@_identifier || ->(p){ p['issue']['number']}).call(params),

Login Error If Emails Not Found

The login jobs introduced by #182 are failing periodically with:

no implicit conversion of String into Integer

/app/vendor/engines/saas/app/jobs/login_private_job.rb:5 []
/app/vendor/engines/saas/app/jobs/login_private_job.rb:5 block in perform
/app/vendor/engines/saas/app/jobs/login_private_job.rb:5 each
/app/vendor/engines/saas/app/jobs/login_private_job.rb:5 detect
/app/vendor/engines/saas/app/jobs/login_private_job.rb:5 perform

The failing users show a Not Found payload instead of the expected array -

          emails: {
            "message": "Not Found",
            "documentation_url": "https://developer.github.com/v3"
          }

Consistent Word Break Handling

We have implemented variations on this theme in several places: #124 #198 #199 #202. None of them seem to be working as expected in Firefox:

https://huboard.com/dotnet/roslyn columns aren't equal width, and on https://huboard.com/dotnet/roslyn#/issues/56883993:
firefox_2016-02-17_16-43-15

So two things:

  1. We need to stop using word-break: break-all altogether. word-break: break-word seems fine but is Chrome-specific.
  2. Firefox does support word-wrap: break-word (an old property since renamed to overflow-wrap - we should probably include both), but there are caveats to it working as we need it to within display: flex: https://bugzilla.mozilla.org/show_bug.cgi?id=1136818.

We need a standard pattern for this to be implemented everywhere we render user-generated text.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.