From a97786083ffa8e3b270e936aa331a6c06ef67abb Mon Sep 17 00:00:00 2001 From: Pyrofab Date: Wed, 14 Feb 2024 01:09:00 +0100 Subject: [PATCH 1/6] Start documenting Blabber's illustrations --- css/style.scss | 2 + wiki/blabber/example-illustrations.png | Bin 0 -> 70556 bytes wiki/blabber/index.md | 56 +++++++++++++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 wiki/blabber/example-illustrations.png diff --git a/css/style.scss b/css/style.scss index ac4f6aa2..dfb61e19 100644 --- a/css/style.scss +++ b/css/style.scss @@ -60,6 +60,8 @@ This section will be all about DARK MODE .container img.wiki { max-width: 100%; + display: block; + margin: auto; } li a span svg.download-icon { float: right; diff --git a/wiki/blabber/example-illustrations.png b/wiki/blabber/example-illustrations.png new file mode 100644 index 0000000000000000000000000000000000000000..0f64bb9d861e65d5aaf8aac03faca51d66235674 GIT binary patch literal 70556 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 Illustration JSON{% endcapture %} +{% capture example_json %} +```json +{ + "illustrations": { + "discussion": [ + { + "type": "blabber:entity", + "entity": "@interlocutor", + "x1": 0, + "y1": 80, + "x2": 100, + "y2": 180, + "size": 100, + "y_offset": 0.5, + "stare_at_x": 50, + "stare_at_y": 0 + }, + { + "type": "blabber:entity", + "entity": "@s", + "x1": 100, + "y1": 80, + "x2": 200, + "y2": 180, + "size": 100, + "y_offset": 0.5, + "stare_at_x": -50, + "stare_at_y": 0 + } + ] + } +} +``` +{% endcapture %} +{% include details.liquid summary=summary content=example_json %} + #### Conditional choices So what if you want to add requirements for specific dialogue paths? You could always make a separate dialogue file From b92b4ef745bf0984e713153b8f1c72d4df4b11bc Mon Sep 17 00:00:00 2001 From: Pyrofab Date: Wed, 1 May 2024 22:44:47 +0200 Subject: [PATCH 2/6] Document dialogue illustrations' schema --- public/_sass/parts/admonitions.scss | 4 + .../blabber/dialogue.schema.json | 15 +++- .../blabber/dialogue_illustration.schema.json | 78 +++++++++++++++++++ .../minecraft/entity_selector.schema.json | 7 ++ .../schemas/minecraft/itemstack.schema.json | 13 ++++ .../minecraft/itemstack_v1.schema.json | 23 ++++++ .../minecraft/itemstack_v2.schema.json | 23 ++++++ public/wiki/blabber/index.md | 45 +++++++++-- 8 files changed, 201 insertions(+), 7 deletions(-) rename public/{wiki => schemas}/blabber/dialogue.schema.json (89%) create mode 100644 public/schemas/blabber/dialogue_illustration.schema.json create mode 100644 public/schemas/minecraft/entity_selector.schema.json create mode 100644 public/schemas/minecraft/itemstack.schema.json create mode 100644 public/schemas/minecraft/itemstack_v1.schema.json create mode 100644 public/schemas/minecraft/itemstack_v2.schema.json diff --git a/public/_sass/parts/admonitions.scss b/public/_sass/parts/admonitions.scss index 2d733f81..b0df627d 100644 --- a/public/_sass/parts/admonitions.scss +++ b/public/_sass/parts/admonitions.scss @@ -10,6 +10,10 @@ padding: 0.5em 1em; } +li.admonition { + margin-left: -1em; +} + .admonition-note { --admonition-color: var(--color-info); } diff --git a/public/wiki/blabber/dialogue.schema.json b/public/schemas/blabber/dialogue.schema.json similarity index 89% rename from public/wiki/blabber/dialogue.schema.json rename to public/schemas/blabber/dialogue.schema.json index 4cb749ce..7ef2521b 100644 --- a/public/wiki/blabber/dialogue.schema.json +++ b/public/schemas/blabber/dialogue.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ladysnake.org/wiki/blabber/dialogue.schema.json", + "$id": "https://ladysnake.org/schemas/blabber/dialogue.schema.json", "title": "Dialogue", "description": "A dialogue to be given to a player", "type": "object", @@ -91,10 +91,23 @@ } } } + }, + "illustrations": { + "type": "array", + "items": { + "type": "string" + } } }, "required": [] } + }, + "illustrations": { + "type": "object", + "description": "Available illustrations in dialogue states", + "additionalProperties": { + "$ref": "/schemas/blabber/dialogue_illustration.schema.json" + } } }, "required": [ "start_at", "states" ] diff --git a/public/schemas/blabber/dialogue_illustration.schema.json b/public/schemas/blabber/dialogue_illustration.schema.json new file mode 100644 index 00000000..70797f00 --- /dev/null +++ b/public/schemas/blabber/dialogue_illustration.schema.json @@ -0,0 +1,78 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ladysnake.org/schemas/blabber/dialogue_illustration.schema.json", + "$ref": "#/definitions/illustration", + "title": "Dialogue Illustration", + "description": "An illustration that can be referenced in dialogue states", + "definitions": { + "illustration": { + "anyOf": [ + { + "$ref": "#/definitions/illustration_object" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/illustration" + }, + "title": "Illustration Group", + "description": "Equivalent to {\"type\": \"blabber:group\", \"elements\": [...]}" + } + ] + }, + "illustration_object": { + "oneOf": [ + { + "title": "Item Illustration", + "properties": { + "type": { + "const": "blabber:item" + }, + "item": { + "$ref": "/schemas/minecraft/itemstack.schema.json" + } + }, + "required": ["type", "item"] + }, + { + "title": "Entity Illustration", + "properties": { + "type": { + "const": "blabber:entity" + }, + "entity": { + "$ref": "/schemas/minecraft/entity_selector.schema.json" + } + }, + "required": ["type", "entity"] + }, + { + "title": "Fake Entity Illustration", + "properties": { + "type": { + "const": "blabber:fake_entity" + }, + "id": { + "$ref": "/schemas/minecraft/entity_selector.schema.json" + } + }, + "required": ["type", "entity"] + }, + { + "title": "Illustration Composition", + "properties": { + "type": { + "const": "blabber:group" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/definitions/illustration" + } + } + } + } + ] + } + } +} diff --git a/public/schemas/minecraft/entity_selector.schema.json b/public/schemas/minecraft/entity_selector.schema.json new file mode 100644 index 00000000..e57b004c --- /dev/null +++ b/public/schemas/minecraft/entity_selector.schema.json @@ -0,0 +1,7 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ladysnake.org/schemas/minecraft/entity_selector.schema.json", + "title": "Entity Selector", + "type": "string", + "pattern": "^@\\w+(\\[(\\w+=.*)(,\\w+=.*)*\\])?$" +} \ No newline at end of file diff --git a/public/schemas/minecraft/itemstack.schema.json b/public/schemas/minecraft/itemstack.schema.json new file mode 100644 index 00000000..1b50c84a --- /dev/null +++ b/public/schemas/minecraft/itemstack.schema.json @@ -0,0 +1,13 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ladysnake.org/schemas/minecraft/itemstack.schema.json", + "title": "Item Stack", + "oneOf": [ + { + "$ref": "/schemas/minecraft/itemstack_v1.schema.json" + }, + { + "$ref": "/schemas/minecraft/itemstack_v2.schema.json" + } + ] +} \ No newline at end of file diff --git a/public/schemas/minecraft/itemstack_v1.schema.json b/public/schemas/minecraft/itemstack_v1.schema.json new file mode 100644 index 00000000..30fb176a --- /dev/null +++ b/public/schemas/minecraft/itemstack_v1.schema.json @@ -0,0 +1,23 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ladysnake.org/schemas/minecraft/itemstack_v1.schema.json", + "title": "Item Stack (pre-1.20.5)", + "properties": { + "id": { + "title": "Registry Identifier", + "description": "The type of item stored in the stack", + "type": "string", + "pattern": "^([a-z_-]+:[a-z_/-]+)" + }, + "Count": { + "description": "The number of items contained in the stack", + "type": "integer", + "minimum": 0 + }, + "tag": { + "type": "object", + "title": "NBT Data" + } + }, + "required": ["id"] +} diff --git a/public/schemas/minecraft/itemstack_v2.schema.json b/public/schemas/minecraft/itemstack_v2.schema.json new file mode 100644 index 00000000..167de1c6 --- /dev/null +++ b/public/schemas/minecraft/itemstack_v2.schema.json @@ -0,0 +1,23 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ladysnake.org/schemas/minecraft/itemstack_v2.schema.json", + "title": "Item Stack (post-1.20.5)", + "properties": { + "id": { + "title": "Registry Identifier", + "description": "The type of item stored in the stack", + "type": "string", + "pattern": "^([a-z_-]+:[a-z_/-]+)" + }, + "count": { + "description": "The number of items contained in the stack", + "type": "integer", + "minimum": 0 + }, + "components": { + "type": "object", + "title": "Item Component Data" + } + }, + "required": ["id"] +} diff --git a/public/wiki/blabber/index.md b/public/wiki/blabber/index.md index e2596323..81f2f2e3 100644 --- a/public/wiki/blabber/index.md +++ b/public/wiki/blabber/index.md @@ -138,11 +138,29 @@ Illustrations can be set for a regular dialogue state, or for individual choices In the former case they are positioned relative to the window, in the latter they are positioned relative to the choice's text (which is notably useful to keep up with localization shifting those around). -There are currently 3 types of illustrations: - -- `blabber:item`: renders an item stack with optional NBT -- `blabber:entity`: renders an entity taken from the player's world using a selector (compatible with [`@interlocutor`](#interlocutors)) -- `blabber:fake_entity`: renders a fake entity of the desired type, with optional NBT +There are currently 3 types of illustrations, plus the group type: + +- `blabber:item`: renders an item stack with optional NBT. Properties: + - `item` (type: [`item stack`](https://minecraft.wiki/w/Item_format)): the data for the item to render + - `x` (type: `integer`): the `X` coordinate for rendering the stack on the screen + - `y` (type: `integer`): the `Y` coordinate for rendering the stack on the screen + - `show_tooltip` (type: `boolean`, optional): if set to `true`, will render the item tooltip when the illustration is hovered in the dialogue screen +- `blabber:entity`: renders an entity taken from the player's world, in a frame similar to the inventory's player rendering. Properties: + - `entity` (type: `string`): an entity selector (compatible with [`@interlocutor`](#interlocutors)). If this selector finds nothing at the time the dialogue starts, the illustration will not be drawn. + - `x1` (type: `integer`): the `X` coordinate of the frame's upper left corner + - `y1` (type: `integer`): the `Y` coordinate of the frame's upper left corner + - `x2` (type: `integer`): the `Y` coordinate of the frame's lower right corner + - `y2` (type: `integer`): the `Y` coordinate of the frame's lower right corner + - `size` (type: `integer`, optional): the scaling factor for the entity (`1` is the default size) + - `y_offset` (type: `decimal number`): how far down the entity should be pushed within the frame + - `stare_at_x` (type: `integer`, optional): the `X` coordinate, relative to the frame's center, towards which the entity should look. If left unspecified, the entity's stare will horizontally follow the player's cursor. + - `stare_at_y` (type: `integer`, optional): the `Y` coordinate, relative to the frame's center, towards which the entity should look. If left unspecified, the entity's stare will vertically follow the player's cursor. + - {:.admonition.admonition-warning.admonition-icon}The backport of Blabber for Minecraft 1.20.1 does not support cropping the entity nor pushing it down in the frame. +- `blabber:fake_entity`: just like `blabber:entity`, but renders a fake entity of the desired type, with optional NBT. Properties: + - `id` (type: `string`): the ID for the entity's type (e.g. `minecraft:villager`) + - `data` (type: `object`, optional): NBT data to apply to the rendered entity + - `x1`, `y1`, `x2`, `y2`, `size`, `y_offset`, `stare_at_x`, `stare_at_y`: refer to the documentation for `blabber:entity` +- `blabber:group`: groups several illustrations together. This type can be nested as desired. Here is the JSON object used to create the "conversation" in the above screenshot: @@ -180,6 +198,21 @@ Here is the JSON object used to create the "conversation" in the above screensho } } ``` + +This illustration can then be used in any dialogue state by adding it to its `illustrations` array: + +```json +{ + "states": { + "my_state": { + "text": "...", + "illustrations": [ + "discussion" + ] + } + } +} +``` {% endcapture %} {% include details.liquid summary=summary content=example_json %} @@ -517,4 +550,4 @@ in your client entrypoint. The API is however marked unstable, as the layout sys ### JSON Schema -The schema for Blabber dialogue files is available here: [dialogue.schema.json](dialogue.schema.json) +The schema for Blabber dialogue files is available here: [dialogue.schema.json](../../schemas/blabber/dialogue.schema.json) From 5bacfdf1537921e8c7ef033e3f3d8039d95d67e2 Mon Sep 17 00:00:00 2001 From: Pyrofab Date: Wed, 1 May 2024 23:14:16 +0200 Subject: [PATCH 3/6] Add redirect for dialogue schema --- public/wiki/blabber/dialogue.schema.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 public/wiki/blabber/dialogue.schema.json diff --git a/public/wiki/blabber/dialogue.schema.json b/public/wiki/blabber/dialogue.schema.json new file mode 100644 index 00000000..ecaeb457 --- /dev/null +++ b/public/wiki/blabber/dialogue.schema.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ladysnake.org/wiki/blabber/dialogue.schema.json", + "$ref": "/schemas/blabber/dialogue.schema.json" +} From 85dc086d08c8178b1b39b79eb71e647a1ec6ffd1 Mon Sep 17 00:00:00 2001 From: Pyrofab Date: Wed, 1 May 2024 23:35:47 +0200 Subject: [PATCH 4/6] Make illustration type section collapsible --- public/_sass/parts/details.scss | 6 ---- public/_sass/parts/headings.scss | 13 +++++++ public/wiki/blabber/index.md | 59 ++++++++++++++++++++------------ 3 files changed, 51 insertions(+), 27 deletions(-) diff --git a/public/_sass/parts/details.scss b/public/_sass/parts/details.scss index bc39125b..59c3dbe8 100644 --- a/public/_sass/parts/details.scss +++ b/public/_sass/parts/details.scss @@ -20,11 +20,5 @@ details { &:hover { background-color: var(--accent-background-color); } - - h5, h6 { - font-size: inherit; - margin-top: 1em; - margin-bottom: 1em; - } } } diff --git a/public/_sass/parts/headings.scss b/public/_sass/parts/headings.scss index b8f7e84e..a1441b48 100644 --- a/public/_sass/parts/headings.scss +++ b/public/_sass/parts/headings.scss @@ -8,6 +8,19 @@ h1, h2, h3, h4, h5, h6 { line-height: 1.1; } +h5, h6 { + margin-top: 1em; + margin-bottom: 1em; +} + +h6 { + font-size: 14px; +} + +h5 { + font-size: 16px; +} + h4 { font-size: 18px; margin: 10px 0; diff --git a/public/wiki/blabber/index.md b/public/wiki/blabber/index.md index 81f2f2e3..3ad75a7b 100644 --- a/public/wiki/blabber/index.md +++ b/public/wiki/blabber/index.md @@ -140,27 +140,44 @@ text (which is notably useful to keep up with localization shifting those around There are currently 3 types of illustrations, plus the group type: -- `blabber:item`: renders an item stack with optional NBT. Properties: - - `item` (type: [`item stack`](https://minecraft.wiki/w/Item_format)): the data for the item to render - - `x` (type: `integer`): the `X` coordinate for rendering the stack on the screen - - `y` (type: `integer`): the `Y` coordinate for rendering the stack on the screen - - `show_tooltip` (type: `boolean`, optional): if set to `true`, will render the item tooltip when the illustration is hovered in the dialogue screen -- `blabber:entity`: renders an entity taken from the player's world, in a frame similar to the inventory's player rendering. Properties: - - `entity` (type: `string`): an entity selector (compatible with [`@interlocutor`](#interlocutors)). If this selector finds nothing at the time the dialogue starts, the illustration will not be drawn. - - `x1` (type: `integer`): the `X` coordinate of the frame's upper left corner - - `y1` (type: `integer`): the `Y` coordinate of the frame's upper left corner - - `x2` (type: `integer`): the `Y` coordinate of the frame's lower right corner - - `y2` (type: `integer`): the `Y` coordinate of the frame's lower right corner - - `size` (type: `integer`, optional): the scaling factor for the entity (`1` is the default size) - - `y_offset` (type: `decimal number`): how far down the entity should be pushed within the frame - - `stare_at_x` (type: `integer`, optional): the `X` coordinate, relative to the frame's center, towards which the entity should look. If left unspecified, the entity's stare will horizontally follow the player's cursor. - - `stare_at_y` (type: `integer`, optional): the `Y` coordinate, relative to the frame's center, towards which the entity should look. If left unspecified, the entity's stare will vertically follow the player's cursor. - - {:.admonition.admonition-warning.admonition-icon}The backport of Blabber for Minecraft 1.20.1 does not support cropping the entity nor pushing it down in the frame. -- `blabber:fake_entity`: just like `blabber:entity`, but renders a fake entity of the desired type, with optional NBT. Properties: - - `id` (type: `string`): the ID for the entity's type (e.g. `minecraft:villager`) - - `data` (type: `object`, optional): NBT data to apply to the rendered entity - - `x1`, `y1`, `x2`, `y2`, `size`, `y_offset`, `stare_at_x`, `stare_at_y`: refer to the documentation for `blabber:entity` -- `blabber:group`: groups several illustrations together. This type can be nested as desired. +{% capture summary %}
Illustration Types
{% endcapture %} +{% capture illustration_types %} +###### Item (`blabber:item`) + +Renders an item stack with optional NBT. Properties: +- `item` (type: [`item stack`](https://minecraft.wiki/w/Item_format)): the data for the item to render +- `x` (type: `integer`): the `X` coordinate for rendering the stack on the screen +- `y` (type: `integer`): the `Y` coordinate for rendering the stack on the screen +- `show_tooltip` (type: `boolean`, optional): if set to `true`, will render the item tooltip when the illustration is hovered in the dialogue screen + +###### Entity (`blabber:entity`) + +Renders an entity taken from the player's world, in a frame similar to the inventory's player rendering. Properties: +- `entity` (type: `string`): an entity selector (compatible with [`@interlocutor`](#interlocutors)). If this selector finds nothing at the time the dialogue starts, the illustration will not be drawn. +- `x1` (type: `integer`): the `X` coordinate of the frame's upper left corner +- `y1` (type: `integer`): the `Y` coordinate of the frame's upper left corner +- `x2` (type: `integer`): the `Y` coordinate of the frame's lower right corner +- `y2` (type: `integer`): the `Y` coordinate of the frame's lower right corner +- `size` (type: `integer`, optional): the scaling factor for the entity (`1` is the default size) +- `y_offset` (type: `decimal number`): how far down the entity should be pushed within the frame +- `stare_at_x` (type: `integer`, optional): the `X` coordinate, relative to the frame's center, towards which the entity should look. If left unspecified, the entity's stare will horizontally follow the player's cursor. +- `stare_at_y` (type: `integer`, optional): the `Y` coordinate, relative to the frame's center, towards which the entity should look. If left unspecified, the entity's stare will vertically follow the player's cursor. +- {:.admonition.admonition-warning.admonition-icon}The backport of Blabber for Minecraft 1.20.1 does not support cropping the entity nor pushing it down in the frame. + +###### Fake Entity (`blabber:fake_entity`) + +Just like `blabber:entity`, but renders a fake entity of the desired type, with optional NBT. Properties: +- `id` (type: `string`): the ID for the entity's type (e.g. `minecraft:villager`) +- `data` (type: `object`, optional): NBT data to apply to the rendered entity +- `x1`, `y1`, `x2`, `y2`, `size`, `y_offset`, `stare_at_x`, `stare_at_y`: refer to the documentation for `blabber:entity` + +###### Composition (`blabber:group`) + +Groups several illustrations together. This type can be nested as desired. Properties: +- `items` (type: `array`): an array of illustrations that get grouped together + +{% endcapture %} +{% include details.liquid summary=summary content=illustration_types %} Here is the JSON object used to create the "conversation" in the above screenshot: From bb3a806db9bba0868ba3b1a5ef9ebb66e03ad960 Mon Sep 17 00:00:00 2001 From: Pyrofab Date: Wed, 1 May 2024 23:56:42 +0200 Subject: [PATCH 5/6] Allow linking to headers within HTML details --- public/_includes/header.liquid | 2 ++ svelte_sprinkles/src/sprinkles/details/main.ts | 17 +++++++++++++++++ svelte_sprinkles/vite.config.ts | 1 + 3 files changed, 20 insertions(+) create mode 100644 svelte_sprinkles/src/sprinkles/details/main.ts diff --git a/public/_includes/header.liquid b/public/_includes/header.liquid index 3df177e8..1bb574d7 100644 --- a/public/_includes/header.liquid +++ b/public/_includes/header.liquid @@ -37,6 +37,8 @@ https://github.com/darkreader/darkreader/blob/main/CONTRIBUTING.md#disabling-dark-reader-on-your-site {%- endcomment %} + + diff --git a/svelte_sprinkles/src/sprinkles/details/main.ts b/svelte_sprinkles/src/sprinkles/details/main.ts new file mode 100644 index 00000000..86568c2a --- /dev/null +++ b/svelte_sprinkles/src/sprinkles/details/main.ts @@ -0,0 +1,17 @@ +function openDetails() { + const targetedId = decodeURIComponent(location.hash.substring(1)); + if (targetedId.length) { + const anchor = document.getElementById(targetedId); + if (anchor) { + const details = anchor.closest('details') as HTMLDetailsElement | null; + if (details) { + details.open = true; + anchor.scrollIntoView(); + } + } + } +} + +openDetails(); + +window.addEventListener('hashchange', openDetails); diff --git a/svelte_sprinkles/vite.config.ts b/svelte_sprinkles/vite.config.ts index b51cfa83..d7bd4a63 100644 --- a/svelte_sprinkles/vite.config.ts +++ b/svelte_sprinkles/vite.config.ts @@ -28,6 +28,7 @@ export default defineConfig(() => ({ input: { 'blabber-parlour': './src/sprinkles/parlour/main.ts', 'darkmode-toggle': './src/sprinkles/darkmode/main.ts', + 'better-details': './src/sprinkles/details/main.ts', 'ladysnake-settings': './src/sprinkles/settings/main.ts', }, output: { From 2ab557df29e95465d471520a0c7493a9161d5f26 Mon Sep 17 00:00:00 2001 From: Pyrofab Date: Thu, 2 May 2024 00:14:13 +0200 Subject: [PATCH 6/6] Update dialogue schema references --- public/tools/parlour.html | 2 +- public/wiki/blabber/basic-dialogue.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/tools/parlour.html b/public/tools/parlour.html index 0c467fcb..9500b9b7 100644 --- a/public/tools/parlour.html +++ b/public/tools/parlour.html @@ -28,7 +28,7 @@
  • Go back to Blabber's description
  • -
  • Look at the Dialogue Schema specification
  • +
  • Look at the Dialogue Schema specification
  • diff --git a/public/wiki/blabber/basic-dialogue.json b/public/wiki/blabber/basic-dialogue.json index eb4f3214..3a8c9e7f 100644 --- a/public/wiki/blabber/basic-dialogue.json +++ b/public/wiki/blabber/basic-dialogue.json @@ -1,5 +1,5 @@ { - "$schema": "https://ladysnake.org/wiki/blabber/dialogue.schema.json", + "$schema": "https://ladysnake.org/schemas/blabber/dialogue.schema.json", "start_at": "start", "states": { "start": {
  • Try enabling Javascript on your browser