diff --git a/.travis.yml b/.travis.yml
index abf77dd..992ce87 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,10 +3,6 @@
 dart:
   - stable
   - dev
-  - 1.22.1
-  - 1.21.1
-  - 1.20.1
-  - 1.19.1
 dart_task:
   - test: -p vm
   - dartfmt
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2a0f614..d893d5c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,7 @@
-## 0.13.8
+## 1.0.0
+
+* **Breaking change**: The `allowTrailingOptions` argument to `new
+  ArgumentParser()` defaults to `true` instead of `false`.
 
 * Add `new ArgParser.allowAnything()`. This allows any input, without parsing
   any options.
diff --git a/README.md b/README.md
index 36e931c..a23fe14 100644
--- a/README.md
+++ b/README.md
@@ -106,16 +106,17 @@
 print(results['verbose']); // true
 ```
 
-By default, the `parse()` method stops as soon as it reaches `--` by itself or
-anything that the parser doesn't recognize as an option, flag, or option value.
-If arguments still remain, they go into [ArgResults.rest][rest].
+By default, the `parse()` method allows additional flags and options to be
+passed after positional parameters unless `--` is used to indicate that all
+further parameters will be positional. The positional arguments go into
+[ArgResults.rest][rest].
 
 ```dart
 print(results.rest); // ['something', 'else']
 ```
 
-To continue to parse options found after non-option arguments, pass
-`allowTrailingOptions: true` when creating the [ArgParser][].
+To stop parsing options as soon as a positional argument is found,
+`allowTrailingOptions: false` when creating the [ArgParser][].
 
 ## Specifying options
 
diff --git a/lib/src/arg_parser.dart b/lib/src/arg_parser.dart
index 69de95a..fd6cb9a 100644
--- a/lib/src/arg_parser.dart
+++ b/lib/src/arg_parser.dart
@@ -36,12 +36,13 @@
 
   /// Creates a new ArgParser.
   ///
-  /// If [allowTrailingOptions] is set, the parser will continue parsing even
-  /// after it finds an argument that is neither an option nor a command.
-  /// This allows options to be specified after regular arguments. Defaults to
-  /// `false`.
-  factory ArgParser({bool allowTrailingOptions: false}) =>
-      new ArgParser._({}, {}, allowTrailingOptions: allowTrailingOptions);
+  /// If [allowTrailingOptions] is `true` (the default), the parser will parse
+  /// flags and options that appear after positional arguments. If it's `false`,
+  /// the parser stops parsing as soon as it finds an argument that is neither
+  /// an option nor a command.
+  factory ArgParser({bool allowTrailingOptions: true}) =>
+      new ArgParser._(<String, Option>{}, <String, ArgParser>{},
+          allowTrailingOptions: allowTrailingOptions);
 
   /// Creates a new ArgParser that treats *all input* as non-option arguments.
   ///
@@ -52,7 +53,7 @@
   factory ArgParser.allowAnything() = AllowAnythingParser;
 
   ArgParser._(Map<String, Option> options, Map<String, ArgParser> commands,
-      {bool allowTrailingOptions: false})
+      {bool allowTrailingOptions: true})
       : this._options = options,
         this.options = new UnmodifiableMapView(options),
         this._commands = commands,
diff --git a/pubspec.yaml b/pubspec.yaml
index 10531e4..78b714d 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: args
-version: 0.13.8-dev
+version: 1.0.0
 author: "Dart Team <misc@dartlang.org>"
 homepage: https://github.com/dart-lang/args
 description: >
@@ -10,3 +10,7 @@
   test: ">=0.12.0 <0.13.0"
 environment:
   sdk: ">=1.4.0 <2.0.0"
+
+# Test currently depends on args 0.13.x.
+dependency_overrides:
+  test: ">=0.12.0 <0.13.0"
diff --git a/test/parse_test.dart b/test/parse_test.dart
index b163862..87f3d81 100644
--- a/test/parse_test.dart
+++ b/test/parse_test.dart
@@ -502,8 +502,10 @@
         expect(results.rest, equals(['--meow']));
       });
 
-      test('leaves "--" if not the first non-option', () {
-        var parser = new ArgParser();
+      test(
+          'with allowTrailingOptions: false, leaves "--" if not the first '
+          'non-option', () {
+        var parser = new ArgParser(allowTrailingOptions: false);
         parser.addFlag('woof');
 
         var results = parser.parse(['--woof', 'stop', '--', 'arg']);
diff --git a/test/trailing_options_test.dart b/test/trailing_options_test.dart
index ce22ad4..6a69818 100644
--- a/test/trailing_options_test.dart
+++ b/test/trailing_options_test.dart
@@ -6,9 +6,9 @@
 import 'package:args/args.dart';
 
 void main() {
-  test('allowTrailingOptions defaults to false', () {
+  test('allowTrailingOptions defaults to true', () {
     var parser = new ArgParser();
-    expect(parser.allowTrailingOptions, isFalse);
+    expect(parser.allowTrailingOptions, isTrue);
   });
 
   group('when trailing options are allowed', () {
