Be sure to read the blog post for more details!

CSS

Variables and mixins

  • #13923: Add @gray-base variable to make @gray-* variables work better together.
  • #14440: Remove unused @nav-open-link-hover-color variable.
  • #14511: Add missing border-radius variables for small and large inputs.
  • #14592: Add @progress-border-radius variable for progress bar.
  • #14786: Add @link-hover-decoration variable.
  • #14891: Add @cursor-disabled variable.

Code

  • #14168: Make nested kbd elements bold so you can better identify combinators.

Type

  • #13967: Don't reset the <cite> element's font-style.
  • #14682: Remove the content: ""; reset on <blockquote> elements as it can cause rendering bugs.

Images

  • #13996: Revert the IE backslash hack for .img-responsive on SVG images from #10073 as it stretches all image types unnecessarily in IE<11.

Tables

  • #13202: Always use overflow: auto; on .table-responsive to prevent content breaking out of containers.
  • #13920: Assign background-color to <tr> elements instead of <th>/<td> within the .table-striped to avoid broken backgrounds on responsive tables.
  • #14095: Add basic styling for <caption>s.
  • #14251: Remove the -webkit-overflow-scrolling on .table-responsive to prevent Safari from screwing up <body> width.
  • #14838: Fix IE9 bug when .table-responsive is used with .table-hover

Forms

  • #12669 (again): Redeclare the line-heights on date inputs in IE8+ to avoid cut off content.
  • #13989: Don't extend the input sizes in small and large form groups. Instead, manually chain the selectors.
  • #13997: Move min-height for radio/checkbox to their inner <label> given move from float to position: absolute; in v3.2.0.
  • #14005: Only adjust the .has-feedback icons when needed.
  • #14104: Remove pointer events on feedback icons.
  • #14107: Lighten placeholder text back to #999.
  • #14221: Make .form-control-static work in inline forms as well.
  • #14234: Reset the IE8-10 temporal input line-height bug with another hack just for IE11.

Buttons

  • #14029: Add touch-action: manipulation to buttons to remove the 300ms delay in IE10+.
  • #14030: Remove superfluous cursor: pointer; on .btn-link since we already set it on .btn.
  • #14310: Remove the box-shadow on .btn-link.active to match the existing :active override.

Button groups

  • #14053: Don't show radio/checkbox in justified button groups.
  • #14559: Properly hide checkbox and radio inputs in button groups.

Thumbnails

  • #14443: Only transition what needs transitioning for thumbnails to avoid Safari/Chrome render bug.

Navbar

  • #12738: Using landscape orientation media query for setting max-height on the .navbar-collapse content requires use of max-device-width, not max-width.
  • #13325, #13464: Changed :last-child overrides in navbars to :first-child to prevent elements from overriding one another.
  • #13943: Lighten the navbar inverse link and text color more since our text contrast change in v3.2.0.
  • #14051: Improve margins on .navbar-right to further fix #13325 and #13464.
  • #14557: Remove the margin-bottom on .form-group:last-child in xs .navbar-form.
  • #14667: Remove translate3d from .navbar and switch to translate to prevent iOS dropdown rendering bugs and make the CSS more predictable.

Jumbotron

  • #14337: Round .jumbotron corners within .container and .container-fluid.
  • #14563: Prevent jumbotron reflow by changing the padding of .jumbotron so it doesn't interfere with the .container side padding.

List groups

  • #13931: Set not-allowed cursor on disabled .list-group-items.
  • #14711: Account for list groups in collapsing panels—just replace the .panel-body with a .list-group.

Progress bars

  • #13953, #14736: Remove the progress bar min-width styles for low percentages to avoid jumping progress.

Media object

  • #14801: Add vertical alignment of image in media component. Also deprecated the use of .pull-left and .pull-right in .media. They are replaced by the new .media-left and .media-right classes.

Panels

  • #14142: Adding horizontal padding to captions in .tables in panels.
  • #14253: Add borders for tables that follow panel bodies.
  • #14329: Fix alignment, spacing, and borders for list groups nested within collapsing panels.
  • #14437: Round the corners of table rows in panels as well as the cells.

Responsive embed

  • #14687: Include <video> element support in responsive embed.

Popovers

  • #14386: Reset font, text, and line-height properties in popovers. Moves the font-weight and line-height resets from .popover-title to the .popover, and adds font-size.
  • #14465: Make @popover-arrow-color variable use the @popover-bg variable instead of regular #fff.

Affix

  • #13974, #14123: Remove translate3d repaint performance enhancement for text rendering and position wonkiness.
  • #14363: Make affix accept 0 as offsetTop or offsetBottom

Carousel

  • #13074: Add WebKit CSS3 carousel transforms for supported devices.

Theme

  • #14074: Make open dropdown nav links in navbars use gradients to match active links.
  • #14814: Use @navbar-*-link-active-bg variables in background gradients on active/open navbar items.
  • #14806: Reset the text-shadow on badges in the themed buttons.

Glyphicons

  • #14869: Added .glyphicon-eur alias for .glyphicon-euro.

Print

  • #14452: Update print.less from its H5BP source to consolidate styles and update source URL.
  • #14790: Update to the latest H5BP.

Dependencies

  • #14743: Updated normalize.css to v3.0.2.

JS

  • #12815: Make zero-value offsets work on affix plugin via data attributes.
  • #13814, #13815: Allow tabs to fade in if there are no initially active panes present.
  • #13853: Major unit tests cleanup.
  • #13907: Add .focus to focused radio and checkbox buttons with the button plugin.
  • #13998: Namespace the affixed event
  • #14000: When a modal is open, pressing the Esc key to close a native browser dialog or menu no longer also closes the modal
  • #14015: Fix positioning of tooltips on SVG elements
  • #14034: Deprecated the remote option of modals
  • #14069: Carousel now skip over non-items when its next or prev methods are called
  • #14090, #14091: Fix IE8 JS unit test problems
  • #14244: Remove popover content with .children().detach() instead of .empty().
  • #14273: Fix hover-triggered popover/tooltip flickering when mouse re-enters trigger element.
  • #14282: Already visible collapse content no longer closes when .collapse('show') is called.
  • #14316: Use closest .alert for alert dismissal.
  • #14357: Recalculate scrollbar width for modal every time in case user resizes the window.
  • #13928: Ensure that hidden event is sent when content is really hidden (collapsing class is removed).
  • #14573: Make inDom check of tooltip cross document compatible.
  • #14492: Handle lack of .width and .height from getBoundingClientRect() in IE8.
  • #14353: Collapse: count .collapsing elements as actives.
  • #14571: Properly fire hidden event when tooltip is destroyed.
  • #13718: Correctly selects arrow placement for a tooltip.
  • #14610: Remove unused (and undocumented) Tooltip#validate method.
  • #14581: Fix tooltip misplacement with "auto top".
  • #14570: Remove .modal-open class after backdrop is hidden.
  • #14599: Tooltip: Rely on getBoundingClientRect for width and height.
  • #14623: Use container instead of parent for tooltip/popover auto-placement calculations.
  • #14626: Carousel: Only enable pause: hover for non-touch browsers.
  • #14722: Escape key should only close Dropdown.
  • #14723: Use translate instead of translate3d on modals to fix bug where sometimes modal wouldn't reappear in Safari.
  • #14590: Add keyboard option to carousel.
  • #14724: Modal no longer closes when dragging and releasing the mouse button outside the dialog.
  • #14845: Collapse: Don't fire show event if show is prevented because other element is transitioning.
  • #14767: Fixes tooltip misplacements in scrollable viewports with auto positioning.
  • #14772: Implement hide and hidden events for tabs.
  • #14852: Bump minimum required jQuery version to 1.9.1 and throw an error when Bootstrap's JS is used with outdated versions of jQuery.
  • #13563: Clear scrollspy selection above first section.
  • #14189: Handle multiple delegated selectors on tooltip and popover nodes.
  • #14519: Fix tooltip occasionally not hiding when using a hide delay.
  • #14457: Change value of stateful button after event loop.
  • #14686: Handle collapsed class on triggers even when manually invoked.
  • #14463: Independently delegate data-api selectors.

Accessibility

  • #14070: Add role="tablist" to .nav-pills in examples to improve accessibility.
  • #14071: Add role="listbox" to .carousel-inner to improve accessibility of Carousels.
  • #14072: Add screenreader text to previous/next carousel buttons in examples to improve accessibility.
  • #14085: Add role="presentation" to tab <li>s to improve accessibility.
  • #14086: Add role="tabpanel" to .tab-pane <div>s to improve accessibility.
  • #14088: Add role="tabpanel" to .panel-collapse to improve accessibility.
  • #14089: Add role="tablist" & aria-multiselectable="true" to accordion .panel-group.
  • #14208: Add ARIA attributes to dropdown plugin.
  • #14242: Remove aria-describedby attribute from tootips later
  • #14147: ARIA / screenreader support for collapse
  • #14577: Wrap .pagination & .pager in <nav> so that AT can know they're for navigation
  • #14578: add aria-labelledby to accordion example to improve accessibility
  • #14579: add role="tab" to .panel-headings in accordion example to improve accessibility
  • #14673: Add visibility styles to navbar and component animations (fade and collapse) for more screenreader friendly components.
  • #14841: Add role="button" to a couple more non-link <a> buttons
  • #14819: Add aria-pressed to single toggle buttons.
  • #14154: Add aria-expanded toggling to tabs plugin. Also adds aria-labelledBy, aria-controls, and aria-expanded to the tabs docs.

Docs

  • Moved from Pygments to Rouge for syntax highlighting in the docs. (For folks developing the docs locally, be sure to run gem install rouge before building.)
  • #13746: Add docs section for swapping .navbar-brand for an image.
  • #13835: More explicitly document mobile dropdown menu dismissing behavior.
  • #13937: Fix broken live demos for popovers.
  • #13940, #13954: Save "Preview theme" state with local storage.
  • #13942: Fix link to Less compilation section of docs.
  • #13968: Add missing input group code to inline form example.
  • #13986: Use valid JSON in compound option value examples in tooltip & popover docs so that they can be safely copy-pasted for data-api usage too.
  • #14011: Document radio and checkbox validation states.
  • #14021: Add .collapsed default class to .navbar-collapse for consistency.
  • #14036: Have Jekyll use non-minified assets for local, non-hosted docs, for easier testing/debugging.
  • #14037: Add new Wall of Browser Bugs entry for Chrome regarding input[type="password"] and width of floated elements.
  • #14047: Add missing example code code for kbd after #13351.
  • #14111: Update JS Bin template in CONTRIBUTING.md.
  • #14116: Use <button> elements over empty <a>s in dropdown docs.
  • #14143: Add note about JS plugins and users who have JavaScript disabled.
  • #14156: Fix dismiss-on-next-click popover example.
  • #14192: Use HTTPS for CDN URLs.
  • #14203: Document that form field feedback icons only work with <input class="form-control">.
  • #14211: Add new Wall of Browser Bugs entry for IE regarding :hover and scrolling.
  • #14256: Correctly document arguments passed to title & content options of tooltips & popovers when the option values are functions.
  • #14257: Document that empty tooltips & popovers do not get displayed.
  • #14258: Move Windows Phone 8 IE10 viewport bug workaround script from <head> to end of <body>.
  • #14264: Document arguments passed to placement function option of tooltip/popover.
  • #14332: Clarify that closing an Alert removes it from the DOM.
  • #14406: Consistently use <nav> instead of <div> for .navbar in the docs.
  • #14439: Add static tooltip example to docs.
  • #14451: Bootstrap's IRC channel is now named ##bootstrap.
  • #14516: Document that fieldset[disabled] is somewhat broken in IE11.
  • #14527: Add Wall of Browser Bugs entry for #793.
  • #14531: Add Wall of Browser Bugs entry for IE11 <select> cursor bug.
  • #14709: Add default .collapsed class to accordion examples.
  • #14745: Use https for Twitter links.
  • #14858: Document .alert-dismissible .close button usage restrictions
  • #14901: Add Wall of Browser Bugs entry for iOS Safari transform: translate3d(0, 0, 0) bug

Examples

  • #13964: Fix markup of "Remember me" checkbox in Sign In example for accurate horizontal alignment.
  • #14500: Replace nonexistent .col-6 classes in offcanvas example with .col-xs-6.

Build tools / Packaging

  • #14050: Ensure that Bower installs include useful dotfiles (.jshintrc, .csscomb.json, etc.)
  • #14290: Fix watch task to also watch files in subdirectories of /less/.
  • #14336: Have watch task regenerate bootstrap.js when JS source files are modified.
  • #14394: Adjust Gruntfile so that grunt dist works when Bootstrap has been downloaded via Bower.
  • #14488: Simplify copy task.
  • #14497: Set Travis's git clone depth to 10 to make it faster.
  • #14852: Bump required minimum jQuery version to 1.9.1 in bower.json
  • #13824: Added dist/js/npm.js so the npm module can be properly required.

Customizer

  • #13790: Add feature to import customization config.json files via drag-and-drop.
  • #14411: Fix Gist creation API call.