diff --git a/src/markdown/tutorial/part-1/01-orientation.md b/src/markdown/tutorial/part-1/01-orientation.md
index ed08a73..11493c4 100644
--- a/src/markdown/tutorial/part-1/01-orientation.md
+++ b/src/markdown/tutorial/part-1/01-orientation.md
@@ -46,12 +46,12 @@ Hack: make an empty package.json to convince ember-cli we are really not in an E
# pretend we are running NPM.
#[cfg(all(ci, unix))]
-#[display(ember new super-rentals --lang en --strict)]
-ember new super-rentals --lang en --strict --pnpm \
+#[display(ember new super-rentals --lang en)]
+ember new super-rentals --lang en --pnpm \
| awk '{ gsub("Pnpm", "npm"); gsub("pnpm", "npm"); print }'
#[cfg(not(all(ci, unix)))]
-ember new super-rentals --lang en --strict --pnpm
+ember new super-rentals --lang en --pnpm
```
```run:command hidden=true
@@ -196,7 +196,7 @@ del package.json
```run:file:patch hidden=true cwd=super-rentals filename=.prettierignore
@@ -1 +1,2 @@
-+**/*.gjs
++**/*.hbs
# unconventional js
```
@@ -277,24 +277,20 @@ You can exit out of the development server at any time by typing `Ctrl + C` into
The development server has a feature called *live reload*, which monitors your app for file changes, automatically re-compiles everything, and refreshes any open browser pages. This comes in really handy during development, so let's give that a try!
-As text on the welcome page pointed out, the source code for the page is located in `app/templates/application.gjs`. Let's try to edit that file and replace it with our own content:
+As text on the welcome page pointed out, the source code for the page is located in `app/templates/application.hbs`. Let's try to edit that file and replace it with our own content:
-```run:file:patch lang=gjs cwd=super-rentals filename=app/templates/application.gjs
-@@ -1,12 +1,3 @@
--import pageTitle from 'ember-page-title/helpers/page-title';
--import WelcomePage from 'ember-welcome-page/components/welcome-page';
+```run:file:patch lang=handlebars cwd=super-rentals filename=app/templates/application.hbs
+@@ -1,7 +1 @@
+-{{page-title "SuperRentals"}}
-
-
-- {{pageTitle "SuperRentals"}}
+-{{outlet}}
-
-- {{outlet}}
--
-- {{! The following component displays Ember's default welcome message. }}
--
-- {{! Feel free to remove this! }}
-+ Hello World!!!
-
- ```
+-{{! The following component displays Ember's default welcome message. }}
+-
+-{{! Feel free to remove this! }}
+\ No newline at end of file
++Hello World!!!
+```
Soon after saving the file, your browser should automatically refresh and render our greetings to the world. Neat!
@@ -302,29 +298,27 @@ Soon after saving the file, your browser should automatically refresh and render
visit http://localhost:4200/?deterministic
```
-When you are done experimenting, go ahead and delete the `app/templates/application.gjs` file. We won't be needing this for a while, so let's start afresh. We can add it back later when we have a need for it.
+When you are done experimenting, go ahead and delete the `app/templates/application.hbs` file. We won't be needing this for a while, so let's start afresh. We can add it back later when we have a need for it.
```run:command hidden=true cwd=super-rentals
-git rm -f app/templates/application.gjs
+git rm -f app/templates/application.hbs
```
Again, if you still have your browser tab open, your tab will automatically re-render a blank page as soon as you delete the file. This reflects the fact that we no longer have an application template in our app.
## Working with HTML, CSS and Assets in an Ember App
-Create a `app/templates/index.gjs` file and paste the following markup.
+Create a `app/templates/index.hbs` file and paste the following markup.
-```run:file:create lang=gjs cwd=super-rentals filename=app/templates/index.gjs
-
-
-
-
Welcome to Super Rentals!
-
We hope you find exactly what you're looking for in a place to stay.
-
-
+```run:file:create lang=handlebars cwd=super-rentals filename=app/templates/index.hbs
+
+
+
Welcome to Super Rentals!
+
We hope you find exactly what you're looking for in a place to stay.
+
```
-If you are thinking, "Hey, that looks like HTML!", then you would be right! In their simplest form, Ember templates are really just HTML wrapped in a `` tag. If you are already familiar with HTML, you should feel right at home here.
+If you are thinking, "Hey, that looks like HTML!", then you would be right! In their simplest form, Ember templates are really just HTML. If you are already familiar with HTML, you should feel right at home here.
Of course, unlike HTML, Ember templates can do a lot more than just displaying static content. We will see that in action soon.
@@ -335,7 +329,7 @@ visit http://localhost:4200/?deterministic
```
```run:command hidden=true cwd=super-rentals
-git add app/templates/index.gjs
+git add app/templates/index.hbs
```
Before we do anything else, let's add some styling to our app. We spend enough time staring at the computer screen as it is, so we must protect our eyesight against unstyled markup!
diff --git a/src/markdown/tutorial/part-1/02-building-pages.md b/src/markdown/tutorial/part-1/02-building-pages.md
index d26bc10..cd5d8cb 100644
--- a/src/markdown/tutorial/part-1/02-building-pages.md
+++ b/src/markdown/tutorial/part-1/02-building-pages.md
@@ -45,20 +45,18 @@ git add app/router.js
## Using Route Templates
-With that in place, we can create a new `app/templates/about.gjs` template with the following content:
+With that in place, we can create a new `app/templates/about.hbs` template with the following content:
-```run:file:create lang=gjs cwd=super-rentals filename=app/templates/about.gjs
-
-
-
-
About Super Rentals
-
- The Super Rentals website is a delightful project created to explore Ember.
- By building a property rental site, we can simultaneously imagine traveling
- AND building Ember applications.
-
-
-
+```run:file:create lang=handlebars cwd=super-rentals filename=app/templates/about.hbs
+
+
+
About Super Rentals
+
+ The Super Rentals website is a delightful project created to explore Ember.
+ By building a property rental site, we can simultaneously imagine traveling
+ AND building Ember applications.
+
+
```
To see this in action, navigate to `http://localhost:4200/about`.
@@ -68,7 +66,7 @@ visit http://localhost:4200/about?deterministic
```
```run:command hidden=true cwd=super-rentals
-git add app/templates/about.gjs
+git add app/templates/about.hbs
```
With that, our second page is done!
@@ -92,28 +90,26 @@ Here, we added the `contact` route, but explicitly specified a path for the rout
git add app/router.js
```
-Speaking of the template, let's create that as well. We'll add a `app/templates/contact.gjs` file:
+Speaking of the template, let's create that as well. We'll add a `app/templates/contact.hbs` file:
-```run:file:create lang=gjs cwd=super-rentals filename=app/templates/contact.gjs
-
-
-
-
Contact Us
+```run:file:create lang=handlebars cwd=super-rentals filename=app/templates/contact.hbs
+
+
+
Contact Us
+
+ Super Rentals Representatives would love to help you
+ choose a destination or answer any questions you may have.
+
+
+ Super Rentals HQ
- Super Rentals Representatives would love to help you
- choose a destination or answer any questions you may have.
+ 1212 Test Address Avenue
+ Testington, OR 97233
-
- Super Rentals HQ
-
- 1212 Test Address Avenue
- Testington, OR 97233
-
- +1 (503) 555-1212
- superrentalsrep@emberjs.com
-
-
-
+
+1 (503) 555-1212
+
superrentalsrep@emberjs.com
+
+
```
Ember comes with strong *[conventions][TODO: link to conventions]* and sensible defaults—if we were starting from scratch, we wouldn't mind the default `/contact` URL. However, if the defaults don't work for us, it is no problem at all to customize Ember for our needs!
@@ -125,7 +121,7 @@ visit http://localhost:4200/getting-in-touch?deterministic
```
```run:command hidden=true cwd=super-rentals
-git add app/templates/contact.gjs
+git add app/templates/contact.hbs
```
## Linking Pages with the `` Component
@@ -136,43 +132,30 @@ Since Ember offers great support for URLs out-of-the-box, we *could* just link o
With Ember, we can do better than that! Instead of the plain-old `` tag, Ember provides an alternative called ``. For example, here is how you would use it on the pages we just created:
-```run:file:patch lang=gjs cwd=super-rentals filename=app/templates/index.gjs
-@@ -1 +1,3 @@
-+import { LinkTo } from '@ember/routing';
-+
-
-@@ -5,2 +7,3 @@
- We hope you find exactly what you're looking for in a place to stay.
-+ About Us
-
+```run:file:patch lang=handlebars cwd=super-rentals filename=app/templates/index.hbs
+@@ -4,2 +4,3 @@
+ We hope you find exactly what you're looking for in a place to stay.
++ About Us
+
```
-```run:file:patch lang=gjs cwd=super-rentals filename=app/templates/about.gjs
-@@ -1 +1,3 @@
-+import { LinkTo } from '@ember/routing';
-+
-
-@@ -9,2 +11,3 @@
-
-+ Contact Us
-
+```run:file:patch lang=handlebars cwd=super-rentals filename=app/templates/about.hbs
+@@ -8,2 +8,3 @@
+
++ Contact Us
+
```
-```run:file:patch lang=gjs cwd=super-rentals filename=app/templates/contact.gjs
-@@ -1 +1,3 @@
-+import { LinkTo } from '@ember/routing';
-+
-
-@@ -17,2 +19,3 @@
-
-+ About
-
+```run:file:patch lang=handlebars cwd=super-rentals filename=app/templates/contact.hbs
+@@ -16,2 +16,3 @@
+
++ About
+
```
-
There is quite a bit going on here, so let's break it down.
-`` is an example of a *[component](../../../components/introducing-components/)* in Ember. Along with regular HTML tags, components are a key building block that we can use to build up an app's user interface. Unlike regular HTML tags, components need to be imported before they can be used. In this case, `` is imported from the `@ember/routing` package that is part of Ember.
+`` is an example of a *[component](../../../components/introducing-components/)* in Ember—you can tell them apart from regular HTML tags because they start with an uppercase letter. Along with regular HTML tags, components are a key building block that we can use to build up an app's user interface.
We have a lot more to say about components later, but for now, you can think of them as a way to provide *[custom tags][TODO: link to custom tags]* to supplement the built-in ones that came with the browser.
@@ -199,9 +182,9 @@ visit http://localhost:4200/getting-in-touch?deterministic
```
```run:command hidden=true cwd=super-rentals
-git add app/templates/index.gjs
-git add app/templates/about.gjs
-git add app/templates/contact.gjs
+git add app/templates/index.hbs
+git add app/templates/about.hbs
+git add app/templates/contact.hbs
```
We will learn more about how all of this works soon. In the meantime, go ahead and click on the link in the browser. Did you notice how snappy that was?
diff --git a/src/markdown/tutorial/part-1/03-automated-testing.md b/src/markdown/tutorial/part-1/03-automated-testing.md
index 2713709..efde175 100644
--- a/src/markdown/tutorial/part-1/03-automated-testing.md
+++ b/src/markdown/tutorial/part-1/03-automated-testing.md
@@ -120,17 +120,13 @@ wait #qunit-banner.qunit-pass
It happens really quickly though—blink and you might miss it! In fact, I had to slow this animation down by a hundred times just so you can see it in action. I told you the robot has really, really fast hands!
-As much as I enjoy watching this robot hard at work, the important thing here is that the test we wrote has *[passed][TODO: link to passed]*, meaning everything is working exactly as we expect and the test UI is all green and happy. If you want, you can go to `index.gjs`, delete the `` component and see what things look like when we have *[a failing test][TODO: link to a failing test]*.
+As much as I enjoy watching this robot hard at work, the important thing here is that the test we wrote has *[passed][TODO: link to passed]*, meaning everything is working exactly as we expect and the test UI is all green and happy. If you want, you can go to `index.hbs`, delete the `` component and see what things look like when we have *[a failing test][TODO: link to a failing test]*.
-```run:file:patch hidden=true cwd=super-rentals filename=app/templates/index.gjs
-@@ -1,3 +1 @@
--import { LinkTo } from '@ember/routing';
--
-
-@@ -7,3 +5,2 @@ import { LinkTo } from '@ember/routing';
- We hope you find exactly what you're looking for in a place to stay.
-- About Us
-
+```run:file:patch hidden=true cwd=super-rentals filename=app/templates/index.hbs
+@@ -4,3 +4,2 @@
+ We hope you find exactly what you're looking for in a place to stay.
+- About Us
+
```
```run:screenshot width=1024 height=768 retina=true filename=fail.png alt="A failing test"
@@ -141,7 +137,7 @@ wait #qunit-banner.qunit-fail
Don't forget to put that line back in when you are done!
```run:command hidden=true cwd=super-rentals
-git checkout app/templates/index.gjs
+git checkout app/templates/index.hbs
ember test --path dist
```
diff --git a/src/markdown/tutorial/part-1/04-component-basics.md b/src/markdown/tutorial/part-1/04-component-basics.md
index 56b8bb0..88aa803 100644
--- a/src/markdown/tutorial/part-1/04-component-basics.md
+++ b/src/markdown/tutorial/part-1/04-component-basics.md
@@ -33,22 +33,24 @@ During the course of developing an app, it is pretty common to reuse the same UI
Since it is not a lot of code, it may not seem like a big deal to duplicate this structure on each page. However, if our designer wanted us to make a change to the header, we would have to find and update every single copy of this code. As our app gets bigger, this will become even more of a problem.
-Components are the perfect solution to this. In its most basic form, a component is just a piece of template that can be referred to by name. Let's start by creating a new file at `app/components/jumbo.gjs` with markup for the "jumbo" header:
+Components are the perfect solution to this. In its most basic form, a component is just a piece of template that can be referred to by name. Let's start by creating a new file at `app/components/jumbo.hbs` with markup for the "jumbo" header:
-```run:file:create lang=gjs cwd=super-rentals filename=app/components/jumbo.gjs
-
-
-
+```run:file:create lang=handlebars cwd=super-rentals filename=app/components/jumbo.hbs
+
```
```run:command hidden=true cwd=super-rentals
-git add app/components/jumbo.gjs
+git add app/components/jumbo.hbs
```
-That's it, we have created our first component! We can now *[invoke][TODO: link to invoke]* this component anywhere in our app, by importing it and using it like we saw with `` previously.
+That's it, we have created our first component! We can now *[invoke][TODO: link to invoke]* this component anywhere in our app, using `` as the tag name.
+
+> Zoey says...
+>
+> Remember, when invoking components, we need to capitalize their names so Ember can tell them apart from regular HTML elements. The `jumbo.hbs` template corresponds to the `` tag, just like `super-awesome.hbs` corresponds to ``.
## Passing Content to Components with `{{yield}}`
@@ -56,22 +58,16 @@ When invoking a component, Ember will replace the component tag with the content
Let's try it out by editing the index template:
-```run:file:patch lang=gjs cwd=super-rentals filename=app/templates/index.gjs
-@@ -1,6 +1,6 @@
--import { LinkTo } from '@ember/routing';
-+import { LinkTo } from '@ember/routing';
-+import Jumbo from 'super-rentals/components/jumbo';
-
-
--
--
-+
- Welcome to Super Rentals!
-@@ -8,3 +8,3 @@ import { LinkTo } from '@ember/routing';
- About Us
--
-+
-
+```run:file:patch lang=handlebars cwd=super-rentals filename=app/templates/index.hbs
+@@ -1,3 +1,2 @@
+-
+-
++
+ Welcome to Super Rentals!
+@@ -5,2 +4,2 @@
+ About Us
+-
++
```
## Refactoring Existing Code
@@ -89,47 +85,45 @@ wait #qunit-banner.qunit-pass
Let's do the same for our other two pages as well.
-```run:file:patch lang=gjs cwd=super-rentals filename=app/templates/about.gjs
-@@ -1,6 +1,6 @@
- import { LinkTo } from '@ember/routing';
-+import Jumbo from 'super-rentals/components/jumbo';
-
-
--
--
-+
- About Super Rentals
-@@ -12,3 +12,3 @@ import { LinkTo } from '@ember/routing';
- Contact Us
--
-+
-
-```
-
-```run:file:patch lang=gjs cwd=super-rentals filename=app/templates/contact.gjs
-@@ -1,6 +1,6 @@
- import { LinkTo } from '@ember/routing';
-+import Jumbo from 'super-rentals/components/jumbo';
-
-
--
--
-+
- Contact Us
-@@ -20,3 +20,3 @@ import { LinkTo } from '@ember/routing';
- About
--
-+
-
+```run:file:patch lang=handlebars cwd=super-rentals filename=app/templates/about.hbs
+@@ -1,5 +1,4 @@
+-
+-
++
+ About Super Rentals
+
+ The Super Rentals website is a delightful project created to explore Ember.
+@@ -7,4 +6,4 @@
+ AND building Ember applications.
+
+ Contact Us
+-
++
+```
+
+```run:file:patch lang=handlebars cwd=super-rentals filename=app/templates/contact.hbs
+@@ -1,5 +1,4 @@
+-
+-
++
+ Contact Us
+
+ Super Rentals Representatives would love to help you
+@@ -15,4 +14,4 @@
+ superrentalsrep@emberjs.com
+
+ About
+-
++
```
After saving, everything should look exactly the same as before, and all the tests should still pass. Very nice!
```run:command hidden=true cwd=super-rentals
ember test --path dist
-git add app/templates/index.gjs
-git add app/templates/about.gjs
-git add app/templates/contact.gjs
+git add app/templates/index.hbs
+git add app/templates/about.hbs
+git add app/templates/contact.hbs
```
```run:screenshot width=1024 retina=true filename=about.png alt="About page – nothing changed"
@@ -156,39 +150,38 @@ ember generate component-test jumbo
```
```run:command hidden=true cwd=super-rentals
-git add tests/integration/components/jumbo-test.gjs
+git add tests/integration/components/jumbo-test.js
```
Here, we used the generator to generate a *[component test](../../../testing/testing-components/)*, also known as a rendering test. These are used to render and test a single component at a time. This is in contrast to the acceptance tests that we wrote earlier, which have to navigate and render entire pages worth of content.
Let's replace the boilerplate code that was generated for us with our own test:
-```run:file:patch lang=js cwd=super-rentals filename=tests/integration/components/jumbo-test.gjs
-@@ -8,20 +8,10 @@ module('Integration | Component | jumbo', function (hooks) {
-
+```run:file:patch lang=js cwd=super-rentals filename=tests/integration/components/jumbo-test.js
+@@ -8,18 +8,8 @@
+
- test('it renders', async function (assert) {
-- // Updating values is achieved using autotracking, just like in app code. For example:
-- // class State { @tracked myProperty = 0; }; const state = new State();
-- // and update using state.myProperty = 1; await rerender();
-- // Handle any actions with function myAction(val) { ... };
+- // Set any properties with this.set('myProperty', 'value');
+- // Handle any actions with this.set('myAction', function(val) { ... });
-
-- await render();
+- await render(hbs``);
-
- assert.dom().hasText('');
-
- // Template block usage:
-+ test('it renders the content inside a jumbo header with a tomster', async function (assert) {
- await render(
+- await render(hbs`
-
- template block text
-
-+ Hello World
- );
-
+- `);
+-
- assert.dom().hasText('template block text');
++ test('it renders the content inside a jumbo header with a tomster', async function (assert) {
++ await render(hbs`Hello World`);
++
+ assert.dom('.jumbo').exists();
+ assert.dom('.jumbo').hasText('Hello World');
-+ assert.dom('.jumbo .tomster').exists();
++ assert.dom('.jumbo .tomster').exists();
});
```
@@ -198,7 +191,7 @@ Just like visit and click, which we used earlier, render is also an async step,
```run:command hidden=true cwd=super-rentals
ember test --path dist
-git add tests/integration/components/jumbo-test.gjs
+git add tests/integration/components/jumbo-test.js
```
```run:screenshot width=1024 height=512 retina=true filename=pass-3.png alt="Tests still passing with our component test"
@@ -208,62 +201,46 @@ wait #qunit-banner.qunit-pass
We've been refactoring our existing code for a while, so let's change gears and implement a new feature: the site-wide navigation bar.
-We can create a `` component at `app/components/nav-bar.gjs`:
-
-```run:file:create lang=gjs cwd=super-rentals filename=app/components/nav-bar.gjs
-import { LinkTo } from '@ember/routing';
+We can create a `` component at `app/components/nav-bar.hbs`:
-
-