diff --git a/.circleci/config.yml b/.circleci/config.yml
index 461a0dfa6..666a9564a 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -5,12 +5,12 @@
version: 2.1
orbs:
- node: circleci/node@3.0.0
+ node: circleci/node@5.1.0
jobs:
build:
docker:
- - image: cimg/node:16.11.0
+ - image: cimg/node:20.8.0
- image: mongo:4.4
working_directory: ~/homebrewery
@@ -27,7 +27,7 @@ jobs:
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- - run: sudo npm install -g npm@8.10.0
+ - run: sudo npm install -g npm@10.2.0
- node/install-packages:
app-dir: ~/homebrewery
cache-path: node_modules
@@ -45,7 +45,7 @@ jobs:
test:
docker:
- - image: cimg/node:16.11.0
+ - image: cimg/node:20.8.0
working_directory: ~/homebrewery
parallelism: 1
diff --git a/changelog.md b/changelog.md
index 626a992d9..9f4a07ab2 100644
--- a/changelog.md
+++ b/changelog.md
@@ -80,6 +80,56 @@ pre {
## changelog
For a full record of development, visit our [Github Page](https://github.com/naturalcrit/homebrewery).
+### Friday 13/10/2023 - v3.10.0
+{{taskList
+
+##### G-Ambatte
+
+* [x] Fix user preferred save location being ignored
+
+Fixes issue [#2993](https://github.com/naturalcrit/homebrewery/issues/2993)
+
+* [x] Fix crash to white screen when starting new brews while not signed in
+
+Fixes issue [#2999](https://github.com/naturalcrit/homebrewery/issues/2999)
+
+* [x] Fix FreeBSD install script
+
+Fixes issue [#3005](https://github.com/naturalcrit/homebrewery/issues/3005)
+
+* [x] Fix *"This brew has been changed on another device"* triggering when manually saving during auto-save
+
+Fixes issue [#2641](https://github.com/naturalcrit/homebrewery/issues/2641)
+
+* [x] Fix Firefox different column-flow behavior
+
+Fixes issue [#2982](https://github.com/naturalcrit/homebrewery/issues/2982)
+
+* [x] Fix brew titles being mis-sorted on user page
+
+Fixes issue [#2775](https://github.com/naturalcrit/homebrewery/issues/2775)
+
+* [x] Text Editor themes now available via new drop-down
+
+Fixes issue [#362](https://github.com/naturalcrit/homebrewery/issues/362)
+
+##### 5e-Cleric
+
+* [x] New {{openSans **PHB → {{fas,fa-quote-right}} QUOTE** }} snippet for V3!
+
+Fixes issue [#2920](https://github.com/naturalcrit/homebrewery/issues/2920)
+
+* [x] Several updates and fixes to FAQ and Welcome page
+
+Fixes issue [#2729](https://github.com/naturalcrit/homebrewery/issues/2729),
+[#2787](https://github.com/naturalcrit/homebrewery/issues/2787)
+
+##### Gazook89
+
+* [x] Add syntax highlighting for Definition Lists :\:
+}}
+
+
### Thursday 17/08/2023 - v3.9.2
{{taskList
@@ -119,14 +169,15 @@ Fixes issue [#2943](https://github.com/naturalcrit/homebrewery/issues/2943)
* [x] Exclude cover pages from Table of Content generation (editing on mobile is still not recommended)
-Fixes issue [#2920](https://github.com/naturalcrit/homebrewery/issues/2920)
+Fixes issue [#2920](https://github.com/naturalcrit/homebrewery/issues/2920)
##### Gazook89
* [x] Adjustments to improve mobile viewing
-
}}
+
+
### Wednesday 28/06/2023 - v3.9.1
{{taskList
@@ -171,6 +222,8 @@ Fixes issue [#2790](https://github.com/naturalcrit/homebrewery/issues/2790)
Fixes issue [#2784](https://github.com/naturalcrit/homebrewery/issues/2784)
}}
+\page
+
### Wednesday 12/04/2023 - v3.8.0
{{taskList
@@ -232,8 +285,6 @@ Fixes issues [#2731](https://github.com/naturalcrit/homebrewery/issues/2731)
}}
-\page
-
### Monday 13/03/2023 - v3.7.2
{{taskList
@@ -314,7 +365,11 @@ Fixes issues [#2603](https://github.com/naturalcrit/homebrewery/issues/2603)
* [x] Add message to refresh the browser if the user is missing an update to the Homebrewery
Fixes issues [#2583](https://github.com/naturalcrit/homebrewery/issues/2583)
+}}
+\page
+
+{{taskList
##### G-Ambatte
* [x] Auto-compile Themes CSS on development server
@@ -324,7 +379,6 @@ Fixes issues [#2583](https://github.com/naturalcrit/homebrewery/issues/2583)
* [x] Fix cloned brews inheriting the parent view count
}}
-\page
### Friday 23/12/2022 - v3.5.0
{{taskList
@@ -1408,4 +1462,4 @@ Massive changelog incoming:
* Added `phb.standalone.css` plus a build system for creating it
* Added page numbers and footer text
-* Page accent now flips each page
+* Page accent now flips each page
\ No newline at end of file
diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx
index 51921c8ca..fde91fc68 100644
--- a/client/homebrew/brewRenderer/brewRenderer.jsx
+++ b/client/homebrew/brewRenderer/brewRenderer.jsx
@@ -1,9 +1,8 @@
/*eslint max-lines: ["warn", {"max": 300, "skipBlankLines": true, "skipComments": true}]*/
require('./brewRenderer.less');
const React = require('react');
-const createClass = require('create-react-class');
+const { useState, useRef, useEffect } = React;
const _ = require('lodash');
-const cx = require('classnames');
const MarkdownLegacy = require('naturalcrit/markdownLegacy.js');
const Markdown = require('naturalcrit/markdown.js');
@@ -13,244 +12,214 @@ const ErrorBar = require('./errorBar/errorBar.jsx');
const RenderWarnings = require('homebrewery/renderWarnings/renderWarnings.jsx');
const NotificationPopup = require('./notificationPopup/notificationPopup.jsx');
const Frame = require('react-frame-component').default;
+const dedent = require('dedent-tabs').default;
const Themes = require('themes/themes.json');
const PAGE_HEIGHT = 1056;
-const PPR_THRESHOLD = 50;
-const BrewRenderer = createClass({
- displayName : 'BrewRenderer',
- getDefaultProps : function() {
- return {
- text : '',
- style : '',
- renderer : 'legacy',
- theme : '5ePHB',
- lang : '',
- errors : []
- };
- },
- getInitialState : function() {
- let pages;
- if(this.props.renderer == 'legacy') {
- pages = this.props.text.split('\\page');
- } else {
- pages = this.props.text.split(/^\\page$/gm);
- }
+const INITIAL_CONTENT = dedent`
+
-
-
-
+[{height:30px}](https://discord.gg/by3deKx)
+[{height:30px}](https://github.com/naturalcrit/homebrewery)
+[{height:30px}](https://patreon.com/NaturalCrit)
+[{height:30px}](https://www.reddit.com/r/homebrewery/)
}}
\page
+
+
+
+
+
+
+
## Markdown+
The Homebrewery aims to make homebrewing as simple as possible, providing a live editor with Markdown syntax that is more human-readable and faster to write with than raw HTML.
-In version 3.0.0, with a goal of adding maximum flexibility without users resorting to complex HTML to accomplish simple tasks, Homebrewery provides an extended verision of Markdown with additional syntax.
-**You can enable V3 via the {{fa,fa-info-circle}} Properties button!**
+From version 3.0.0, with a goal of adding maximum flexibility without users resorting to complex HTML to accomplish simple tasks, Homebrewery provides an extended verision of Markdown with additional syntax.
### Curly Brackets
-The biggest change in V3 is the replacement of `` and `` with `{{ }}` for a cleaner custom formatting. Inline spans and block elements can be created and given ID's and Classes, as well as css properties, each of which are comma separated with no spaces. Use double quotes if a value requires spaces. Spans and Blocks start the same:
+Standard Markdown lacks several equivalences to HTML. Hence, we have introduced `{{ }}` as a replacement for `` and `` for a cleaner custom formatting. Inline spans and block elements can be created and given ID's and Classes, as well as CSS properties, each of which are comma separated with no spaces. Use double quotes if a value requires spaces. Spans and Blocks start the same:
#### Span
My favorite author is {{pen,#author,color:orange,font-family:"trebuchet ms" Brandon Sanderson}}. The orange text has a class of `pen`, an id of `author`, is colored orange, and given a new font. The first space outside of quotes marks the beginning of the content.
@@ -126,16 +132,17 @@ A blank line can be achieved with a run of one or more `:` alone on a line. More
::
+
Much nicer than `