diff --git a/changelog.md b/changelog.md
index e86c2ea0f7..18c3205f71 100644
--- a/changelog.md
+++ b/changelog.md
@@ -84,7 +84,70 @@ pre {
## changelog
For a full record of development, visit our [Github Page](https://github.com/naturalcrit/homebrewery).
-### Wednesday 21/2/2024 - v3.11.0
+### Monday 18/3/2024 - v3.12.0
+{{taskList
+
+##### 5e-Cleric
+
+* [x] Fix language-specific hyphenation on print page
+
+Fixes issue [#3294](https://github.com/naturalcrit/homebrewery/issues/3294)
+
+* [x] Upgrade Font-Awesome to v6.51
+
+* [x] Allow downloaded files to be uploaded via {{openSans **NEW {{fa,fa-plus-square}} → FROM UPLOAD {{fa,fa-upload}}**}}
+
+##### G-Ambatte
+
+* [x] Fix an edge case crash with empty documents
+
+Fixes issue [#3315](https://github.com/naturalcrit/homebrewery/issues/3315)
+
+* [x] Brews on the user page can be searched by tag; clicking a tag adds it to the filter
+
+Fixes issue [#3164](https://github.com/naturalcrit/homebrewery/issues/3164)
+
+* [x] Add *DiceFont* icons {{df,d20-20}} `{{df,icon-name}}`
+
+##### abquintic
+
+* [x] Fix ^super^ and ^^sub^^ highlighting in the text editor
+
+* [x] Add new syntax for multiline Definition Lists:
+
+
+```
+Term
+::Definition 1
+::Definition 2
+with more text
+```
+
+produces:
+
+Term
+::Definition 1
+::Definition 2
+with more text
+
+Fixes issue [#2340](https://github.com/naturalcrit/homebrewery/issues/2340)
+
+##### RKuerten :
+* [x] Fix monster stat block backgrounds on print page
+
+Fixes issue [#3275](https://github.com/naturalcrit/homebrewery/issues/3275)
+
+* [x] Added new text editor theme: "Darkvision".
+
+##### calculuschild, G-Ambatte, 5e-Cleric
+
+* [x] Codebase and UI cleanup
+}}
+
+\page
+
+
+### Friday 21/2/2024 - v3.11.0
{{taskList
##### Gazook89
@@ -166,14 +229,16 @@ Fixes issue [1488](https://github.com/naturalcrit/homebrewery/issues/1488)
Fixes issues [2510](https://github.com/naturalcrit/homebrewery/issues/2510),
[2975](https://github.com/naturalcrit/homebrewery/issues/2975)
-* [x] New Variables syntax. See below for details.
+* [x] Brew Variables
}}
+\
+
{{wide
### Brew Variable Syntax
-You may already be familiar with `[link](url)` and `![image](url)` syntax. We have expanded this to include a third `$[variable](text)` syntax. All three of these syntaxes now share a common set of features:
+You may already be familiar with `[link](url)` and `![image](url)` synax. We have expanded this to include a third `$[variable](text)` syntax. All three of these syntaxes now share a common set of features:
{{varSyntaxTable
| syntax | description |
@@ -1512,7 +1577,7 @@ myStyle {color: black}
### Sunday, 29/05/2016 - v2.1.0
- Finally added a syntax for doing spell lists. A bit in-depth about why this took so long. Essentially I'm running out of syntax to use in stardard Markdown. There are too many unique elements in the PHB-style to be mapped. I solved this earlier by stacking certain elements together (eg. an `
` before a `blockquote` turns it into moster state block), but those are getting unweildly. I would like to simply wrap these in `div`s with classes, but unfortunately Markdown stops processing when within HTML blocks. To get around this I wrote my own override to the Markdown parser and lexer to process Markdown within a simple div class wrapper. This should open the door for more unique syntaxes in the future. Big step!
- Override Ctrl+P (and cmd+P) to launch to the print page. Many people try to just print either the editing or share page to get a PDF. While this dones;t make much sense, I do get a ton of issues about it. So now if you try to do this, it'll just bring you imediately to the print page. Everybody wins!
-- The onboarding flow has also been confusing a few users (Homepage -> new -> save -> edit page). If you edit the Homepage text now, a Call to Action to save your work will pop-up.
+- The onboarding flow has also been confusing a few users (Homepage → new → save → edit page). If you edit the Homepage text now, a Call to Action to save your work will pop-up.
- Added a 'Recently Edited' and 'Recently Viewed' nav item to the edit and share page respectively. Each will remember the last 8 items you edited or viewed and when you viewed it. Makes use of the new title attribute of brews to easy navigatation.
- Paragraphs now indent properly after lists (thanks u/slitjen!)
diff --git a/package-lock.json b/package-lock.json
index 29ea015b60..3c9d01f061 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "homebrewery",
- "version": "3.11.0",
+ "version": "3.12.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "homebrewery",
- "version": "3.11.0",
+ "version": "3.12.0",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
diff --git a/package.json b/package.json
index 0cf6fe773a..9ba33019cd 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "homebrewery",
"description": "Create authentic looking D&D homebrews using only markdown",
- "version": "3.11.0",
+ "version": "3.12.0",
"engines": {
"npm": "^10.2.x",
"node": "^20.8.x"
diff --git a/themes/V3/5ePHB/style.less b/themes/V3/5ePHB/style.less
index 758489961d..a529d591fb 100644
--- a/themes/V3/5ePHB/style.less
+++ b/themes/V3/5ePHB/style.less
@@ -1,5 +1,6 @@
@import (less) './themes/assets/assets.less';
@import (less) './themes/fonts/icon fonts/font-icons.less';
+@import (less) './themes/fonts/icon fonts/dicefont.less';
:root {
//Colors
diff --git a/themes/fonts/icon fonts/dicefont.less b/themes/fonts/icon fonts/dicefont.less
index 887a7c27c5..78a88f03a2 100644
--- a/themes/fonts/icon fonts/dicefont.less
+++ b/themes/fonts/icon fonts/dicefont.less
@@ -1,118 +1,114 @@
-/*
- Icon Font: dicefont
-*/
+/* Icon Font: dicefont */
@font-face {
- font-family: 'DiceFont';
- src: url('../../../fonts/5e/dicefont.woff2') format('woff2'),
- url('../../../fonts/5e/dicefont.woff') format('woff');
- font-weight: normal;
- font-style: normal;
-}
+ font-family : 'DiceFont';
+ font-style : normal;
+ font-weight : normal;
+ src : url('../../../fonts/icon fonts/dicefont.woff2');
+}
.df {
- display: inline-block;
- font-family: 'DiceFont';
- font-style: normal;
- font-weight: normal;
- font-variant: normal;
- line-height: 1;
- text-decoration: inherit;
- text-rendering: optimizeLegibility;
- text-transform: none;
- -moz-osx-font-smoothing: grayscale;
- -webkit-font-smoothing: antialiased;
- font-smooth: antialiased;
- &.F:before { content: '\f190'; }
- &.F-minus:before { content: '\f191'; }
- &.F-plus:before { content: '\f192'; }
- &.F-zero:before { content: '\f193'; }
- &.d10:before { content: '\f194'; }
- &.d10-0:before { content: '\f100'; }
- &.d10-1:before { content: '\f101'; }
- &.d10-10:before { content: '\f102'; }
- &.d10-2:before { content: '\f103'; }
- &.d10-3:before { content: '\f104'; }
- &.d10-4:before { content: '\f105'; }
- &.d10-5:before { content: '\f106'; }
- &.d10-6:before { content: '\f107'; }
- &.d10-7:before { content: '\f108'; }
- &.d10-8:before { content: '\f109'; }
- &.d10-9:before { content: '\f10a'; }
- &.d12:before { content: '\f195'; }
- &.d12-1:before { content: '\f10b'; }
- &.d12-10:before { content: '\f10c'; }
- &.d12-11:before { content: '\f10d'; }
- &.d12-12:before { content: '\f10e'; }
- &.d12-2:before { content: '\f10f'; }
- &.d12-3:before { content: '\f110'; }
- &.d12-4:before { content: '\f111'; }
- &.d12-5:before { content: '\f112'; }
- &.d12-6:before { content: '\f113'; }
- &.d12-7:before { content: '\f114'; }
- &.d12-8:before { content: '\f115'; }
- &.d12-9:before { content: '\f116'; }
- &.d2:before { content: '\f196'; }
- &.d2-1:before { content: '\f117'; }
- &.d2-2:before { content: '\f118'; }
- &.d20:before { content: '\f197'; }
- &.d20-1:before { content: '\f119'; }
- &.d20-10:before { content: '\f11a'; }
- &.d20-11:before { content: '\f11b'; }
- &.d20-12:before { content: '\f11c'; }
- &.d20-13:before { content: '\f11d'; }
- &.d20-14:before { content: '\f11e'; }
- &.d20-15:before { content: '\f11f'; }
- &.d20-16:before { content: '\f120'; }
- &.d20-17:before { content: '\f121'; }
- &.d20-18:before { content: '\f122'; }
- &.d20-19:before { content: '\f123'; }
- &.d20-2:before { content: '\f124'; }
- &.d20-20:before { content: '\f125'; }
- &.d20-3:before { content: '\f126'; }
- &.d20-4:before { content: '\f127'; }
- &.d20-5:before { content: '\f128'; }
- &.d20-6:before { content: '\f129'; }
- &.d20-7:before { content: '\f12a'; }
- &.d20-8:before { content: '\f12b'; }
- &.d20-9:before { content: '\f12c'; }
- &.d4:before { content: '\f198'; }
- &.d4-1:before { content: '\f12d'; }
- &.d4-2:before { content: '\f12e'; }
- &.d4-3:before { content: '\f12f'; }
- &.d4-4:before { content: '\f130'; }
- &.d6:before { content: '\f199'; }
- &.d6-1:before { content: '\f131'; }
- &.d6-2:before { content: '\f132'; }
- &.d6-3:before { content: '\f133'; }
- &.d6-4:before { content: '\f134'; }
- &.d6-5:before { content: '\f135'; }
- &.d6-6:before { content: '\f136'; }
- &.d8:before { content: '\f19a'; }
- &.d8-1:before { content: '\f137'; }
- &.d8-2:before { content: '\f138'; }
- &.d8-3:before { content: '\f139'; }
- &.d8-4:before { content: '\f13a'; }
- &.d8-5:before { content: '\f13b'; }
- &.d8-6:before { content: '\f13c'; }
- &.d8-7:before { content: '\f13d'; }
- &.d8-8:before { content: '\f13e'; }
- &.dot-d6:before { content: '\f19b'; }
- &.dot-d6-1:before { content: '\f13f'; }
- &.dot-d6-2:before { content: '\f140'; }
- &.dot-d6-3:before { content: '\f141'; }
- &.dot-d6-4:before { content: '\f142'; }
- &.dot-d6-5:before { content: '\f143'; }
- &.dot-d6-6:before { content: '\f18f'; }
- &.small-dot-d6-1:before { content: '\f183'; }
- &.small-dot-d6-2:before { content: '\f184'; }
- &.small-dot-d6-3:before { content: '\f185'; }
- &.small-dot-d6-4:before { content: '\f186'; }
- &.small-dot-d6-5:before { content: '\f187'; }
- &.small-dot-d6-6:before { content: '\f188'; }
- &.solid-small-dot-d6-1:before { content: '\f189'; }
- &.solid-small-dot-d6-2:before { content: '\f18a'; }
- &.solid-small-dot-d6-3:before { content: '\f18b'; }
- &.solid-small-dot-d6-4:before { content: '\f18c'; }
- &.solid-small-dot-d6-5:before { content: '\f18d'; }
- &.solid-small-dot-d6-6:before { content: '\f18e'; }
+ display : inline-block;
+ font-family : 'DiceFont';
+ font-style : normal;
+ font-weight : normal;
+ font-variant : normal;
+ line-height : 1;
+ text-decoration : inherit;
+ text-transform : none;
+ text-rendering : optimizeLegibility;
+ -moz-osx-font-smoothing : grayscale;
+ -webkit-font-smoothing : antialiased;
+ &.F::before { content : '\f190'; }
+ &.F-minus::before { content : '\f191'; }
+ &.F-plus::before { content : '\f192'; }
+ &.F-zero::before { content : '\f193'; }
+ &.d10::before { content : '\f194'; }
+ &.d10-0::before { content : '\f100'; }
+ &.d10-1::before { content : '\f101'; }
+ &.d10-10::before { content : '\f102'; }
+ &.d10-2::before { content : '\f103'; }
+ &.d10-3::before { content : '\f104'; }
+ &.d10-4::before { content : '\f105'; }
+ &.d10-5::before { content : '\f106'; }
+ &.d10-6::before { content : '\f107'; }
+ &.d10-7::before { content : '\f108'; }
+ &.d10-8::before { content : '\f109'; }
+ &.d10-9::before { content : '\f10a'; }
+ &.d12::before { content : '\f195'; }
+ &.d12-1::before { content : '\f10b'; }
+ &.d12-10::before { content : '\f10c'; }
+ &.d12-11::before { content : '\f10d'; }
+ &.d12-12::before { content : '\f10e'; }
+ &.d12-2::before { content : '\f10f'; }
+ &.d12-3::before { content : '\f110'; }
+ &.d12-4::before { content : '\f111'; }
+ &.d12-5::before { content : '\f112'; }
+ &.d12-6::before { content : '\f113'; }
+ &.d12-7::before { content : '\f114'; }
+ &.d12-8::before { content : '\f115'; }
+ &.d12-9::before { content : '\f116'; }
+ &.d2::before { content : '\f196'; }
+ &.d2-1::before { content : '\f117'; }
+ &.d2-2::before { content : '\f118'; }
+ &.d20::before { content : '\f197'; }
+ &.d20-1::before { content : '\f119'; }
+ &.d20-10::before { content : '\f11a'; }
+ &.d20-11::before { content : '\f11b'; }
+ &.d20-12::before { content : '\f11c'; }
+ &.d20-13::before { content : '\f11d'; }
+ &.d20-14::before { content : '\f11e'; }
+ &.d20-15::before { content : '\f11f'; }
+ &.d20-16::before { content : '\f120'; }
+ &.d20-17::before { content : '\f121'; }
+ &.d20-18::before { content : '\f122'; }
+ &.d20-19::before { content : '\f123'; }
+ &.d20-2::before { content : '\f124'; }
+ &.d20-20::before { content : '\f125'; }
+ &.d20-3::before { content : '\f126'; }
+ &.d20-4::before { content : '\f127'; }
+ &.d20-5::before { content : '\f128'; }
+ &.d20-6::before { content : '\f129'; }
+ &.d20-7::before { content : '\f12a'; }
+ &.d20-8::before { content : '\f12b'; }
+ &.d20-9::before { content : '\f12c'; }
+ &.d4::before { content : '\f198'; }
+ &.d4-1::before { content : '\f12d'; }
+ &.d4-2::before { content : '\f12e'; }
+ &.d4-3::before { content : '\f12f'; }
+ &.d4-4::before { content : '\f130'; }
+ &.d6::before { content : '\f199'; }
+ &.d6-1::before { content : '\f131'; }
+ &.d6-2::before { content : '\f132'; }
+ &.d6-3::before { content : '\f133'; }
+ &.d6-4::before { content : '\f134'; }
+ &.d6-5::before { content : '\f135'; }
+ &.d6-6::before { content : '\f136'; }
+ &.d8::before { content : '\f19a'; }
+ &.d8-1::before { content : '\f137'; }
+ &.d8-2::before { content : '\f138'; }
+ &.d8-3::before { content : '\f139'; }
+ &.d8-4::before { content : '\f13a'; }
+ &.d8-5::before { content : '\f13b'; }
+ &.d8-6::before { content : '\f13c'; }
+ &.d8-7::before { content : '\f13d'; }
+ &.d8-8::before { content : '\f13e'; }
+ &.dot-d6::before { content : '\f19b'; }
+ &.dot-d6-1::before { content : '\f13f'; }
+ &.dot-d6-2::before { content : '\f140'; }
+ &.dot-d6-3::before { content : '\f141'; }
+ &.dot-d6-4::before { content : '\f142'; }
+ &.dot-d6-5::before { content : '\f143'; }
+ &.dot-d6-6::before { content : '\f18f'; }
+ &.small-dot-d6-1::before { content : '\f183'; }
+ &.small-dot-d6-2::before { content : '\f184'; }
+ &.small-dot-d6-3::before { content : '\f185'; }
+ &.small-dot-d6-4::before { content : '\f186'; }
+ &.small-dot-d6-5::before { content : '\f187'; }
+ &.small-dot-d6-6::before { content : '\f188'; }
+ &.solid-small-dot-d6-1::before { content : '\f189'; }
+ &.solid-small-dot-d6-2::before { content : '\f18a'; }
+ &.solid-small-dot-d6-3::before { content : '\f18b'; }
+ &.solid-small-dot-d6-4::before { content : '\f18c'; }
+ &.solid-small-dot-d6-5::before { content : '\f18d'; }
+ &.solid-small-dot-d6-6::before { content : '\f18e'; }
}
\ No newline at end of file
diff --git a/themes/fonts/icon fonts/dicefont.woff b/themes/fonts/icon fonts/dicefont.woff
deleted file mode 100644
index d6f54f38e4..0000000000
Binary files a/themes/fonts/icon fonts/dicefont.woff and /dev/null differ
diff --git a/themes/fonts/icon fonts/font-icons.less b/themes/fonts/icon fonts/font-icons.less
index f8eb19f11d..be8efa7349 100644
--- a/themes/fonts/icon fonts/font-icons.less
+++ b/themes/fonts/icon fonts/font-icons.less
@@ -1,6 +1,6 @@
-/* Main Font, serif */
+/* Icon Font: Elderberry Inn */
@font-face {
- font-family : 'Eldeberry-Inn';
+ font-family : 'Elderberry-Inn';
font-style : normal;
font-weight : normal;
src : url('../../../fonts/icon fonts/Elderberry-Inn-Icons.woff2');
@@ -10,7 +10,7 @@
span.ei {
display : inline-block;
margin-right : 3px;
- font-family : 'Eldeberry-Inn';
+ font-family : 'Elderberry-Inn';
line-height : 1;
vertical-align : baseline;
-moz-osx-font-smoothing : grayscale;