diff --git a/builders/html/assets/sass/mixin/_utilities.scss b/builders/html/assets/sass/mixin/_utilities.scss
index 72cb058f5..0758124c8 100644
--- a/builders/html/assets/sass/mixin/_utilities.scss
+++ b/builders/html/assets/sass/mixin/_utilities.scss
@@ -33,4 +33,5 @@
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
+ margin-left: 240px;
}
\ No newline at end of file
diff --git a/builders/html/assets/sass/theme/_header.scss b/builders/html/assets/sass/theme/_header.scss
index 79617d138..ec5418256 100644
--- a/builders/html/assets/sass/theme/_header.scss
+++ b/builders/html/assets/sass/theme/_header.scss
@@ -216,7 +216,7 @@
font-weight: 300;
height: ($line-height * 2);
line-height: $line-height-h4;
- margin: 0;
+ // margin: 0;
padding: (($line-height * 2 - $line-height-h4) / 2) $grid-gutter;
&:focus,
&:hover {
diff --git a/docs/recipes/breaking-changes-7.0.md b/docs/recipes/breaking-changes-7.0.md
index 5ac535add..d580d54ee 100644
--- a/docs/recipes/breaking-changes-7.0.md
+++ b/docs/recipes/breaking-changes-7.0.md
@@ -56,6 +56,7 @@ When upgrading to Lucee 7.0, you may encounter errors related to missing javax o
#### Scenario 1: Running Lucee 7 on Jakarta Containers (Tomcat 10+) with Old Extensions
**Symptom:** You see errors like:
+
```
java.lang.ClassNotFoundException: javax.servlet.jsp.tagext.TryCatchFinally not found by redis.extension
```
@@ -67,6 +68,7 @@ java.lang.ClassNotFoundException: javax.servlet.jsp.tagext.TryCatchFinally not f
#### Scenario 2: Running Lucee 7 on Javax Containers (Tomcat 9 or earlier)
**Symptom:** You see errors about missing jakarta classes:
+
```
java.lang.NoClassDefFoundError: jakarta/servlet/http/HttpServletRequest
```
@@ -74,11 +76,13 @@ java.lang.NoClassDefFoundError: jakarta/servlet/http/HttpServletRequest
**Cause:** Lucee 7 requires Jakarta EE servlet APIs, which are not present in javax-based containers like Tomcat 9.
**Recommended Solution:** Upgrade to a Jakarta-based servlet container:
+
- Tomcat 10.1+ (recommended)
- Jetty 11+
- Other Jakarta EE 9+ compatible containers
**Temporary Workaround:** If you cannot immediately upgrade your servlet container, you can add Jakarta servlet APIs to your classpath:
+
- Maven dependency: [jakarta.servlet-api on Maven Central](https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api)
- Download the JAR and add it to your servlet container's `lib` directory
diff --git a/docs/recipes/heap-dumps.md b/docs/recipes/heap-dumps.md
index 2b8166316..576169819 100644
--- a/docs/recipes/heap-dumps.md
+++ b/docs/recipes/heap-dumps.md
@@ -58,6 +58,7 @@ The most common use case for heap dumps is capturing the memory state when an Ou
### JVM Configuration
Add the following arguments to your JVM startup configuration:
+
```bash
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/lucee/heapdumps/
@@ -68,6 +69,7 @@ Add the following arguments to your JVM startup configuration:
#### Lucee with Tomcat (Linux/Unix)
Edit your `setenv.sh` file (typically in `{tomcat}/bin/`):
+
```bash
# Existing CATALINA_OPTS
export CATALINA_OPTS="$CATALINA_OPTS -Xms512m -Xmx2048m"
@@ -78,6 +80,7 @@ export CATALINA_OPTS="$CATALINA_OPTS -XX:HeapDumpPath=/var/lucee/heapdumps/"
```
Ensure the dump directory exists and is writable:
+
```bash
mkdir -p /var/lucee/heapdumps
chown tomcat:tomcat /var/lucee/heapdumps
@@ -86,6 +89,7 @@ chown tomcat:tomcat /var/lucee/heapdumps
#### CommandBox
Add to your `server.json`:
+
```json
{
"jvm": {
@@ -99,11 +103,13 @@ Add to your `server.json`:
```
Or use CommandBox CLI:
+
```bash
server set jvm.args="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dumps/"
```
### Additional Useful JVM Arguments
+
```bash
# Generate heap dump on OutOfMemoryError and exit JVM (prevents zombie processes)
-XX:+HeapDumpOnOutOfMemoryError -XX:+ExitOnOutOfMemoryError
@@ -129,6 +135,7 @@ Sometimes you need to capture a heap dump proactively without waiting for an Out
### Implementation
Here's a complete implementation for creating and managing heap dumps:
+
```javascript
setting requesttimeout=10000;
@@ -182,12 +189,13 @@ echo('Create Heap Dump');
1. **Java Integration**: The code uses Lucee's built-in `HeapDumper` class to access JVM heap dump functionality
2. **Timestamped Files**: Each dump is named with a timestamp for easy identification
3. **Automatic Compression**: Dumps are automatically compressed to ZIP format, saving significant disk space
-4. **Web Interface**: Provides a simple UI to create, download, and delete heap dumps (never expose on production enviroments)
+4. **Web Interface**: Provides a simple UI to create, download, and delete heap dumps (never expose on production environments)
5. **Live Objects Only**: The `dumpTo(res, true)` parameter ensures only reachable (live) objects are included, reducing file size
### Security Considerations
This heap dump interface should be protected in production environments:
+
```javascript
// Add authentication
@@ -208,6 +216,7 @@ This heap dump interface should be protected in production environments:
### Scheduled Heap Dumps
You can automate heap dump creation using Lucee's scheduler for periodic memory analysis:
+
```javascript
// Create a scheduled task for nightly heap dumps
@@ -264,21 +273,25 @@ Steps for effective heap dump analysis:
### Common Issues
**Heap dump file is too large**
+
- Use the `true` parameter in `HeapDumper.dumpTo(res, true)` to include only live objects
- Enable compression in your implementation
- Consider using `-XX:HeapDumpSegmentSize` JVM argument for very large heaps
**Permission denied errors**
+
- Ensure the dump directory exists and is writable
- Check file system permissions for the Lucee/Java process user
- On Linux, verify SELinux policies if applicable
**OutOfMemoryError when creating dump**
+
- Creating a dump requires additional memory
- Ensure you have adequate memory overhead (don't set `-Xmx` too close to system limits)
- Consider reducing heap size or adding physical memory
**Dumps not created on OutOfMemoryError**
+
- Verify JVM arguments are properly set
- Check that only one dump per error is generated by default
- Review JVM logs for errors during dump creation
diff --git a/docs/recipes/release-cycle.md b/docs/recipes/release-cycle.md
index d13cb289e..e60e031f4 100644
--- a/docs/recipes/release-cycle.md
+++ b/docs/recipes/release-cycle.md
@@ -52,6 +52,7 @@ When the team decides to prepare a release candidate, the following process occu
### Step 1: Create Release Branch
A new release branch is created as a clone of the active branch:
+
```bash
# Clone active branch to new release branch
git checkout 7.0
@@ -63,6 +64,7 @@ The release branch is named after the patch version being released (e.g., `7.0.1
### Step 2: Bump Active Branch Version
The active branch immediately moves to the next patch cycle:
+
```bash
# On branch 7.0
# Version changes from 7.0.1.52-SNAPSHOT to 7.0.2.0-SNAPSHOT
@@ -83,9 +85,11 @@ The release branch (`7.0.1`) enters stabilization phase:
A release branch follows this lifecycle:
### Active Phase
+
**Duration:** From branch creation until the release is published
**Activities:**
+
- Regression testing
- Security fixes
- Bug fixes for the upcoming release
@@ -94,14 +98,17 @@ A release branch follows this lifecycle:
**Merge policy:** All changes made to the release branch are merged back into the active branch (`7.0`)
### Maintenance Phase
+
**Duration:** From release publication until the next patch version is released
**Activities:**
+
- Urgent security fixes only
**Example:** Branch `7.0.1` enters maintenance phase when version `7.0.1` is released, and remains in maintenance until version `7.0.2` is released.
### End of Life
+
**Trigger:** When the next patch version is released
**Example:** Branch `7.0.1` reaches end of life when `7.0.2` is released.
@@ -111,6 +118,7 @@ A release branch follows this lifecycle:
**Critical Rule:** Any change committed to a release branch **must** be merged back into the active branch.
This ensures that bug fixes and security patches are not lost in future releases.
+
```bash
# Example: Merge changes from release branch to active branch
git checkout 7.0
diff --git a/s3_website.yml b/s3_website.yml
index e4327e677..cde2bd216 100644
--- a/s3_website.yml
+++ b/s3_website.yml
@@ -3,19 +3,19 @@ s3_secret: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
s3_bucket: lucee-docs
site: builds/artifacts
gzip:
- - .html
- - .css
- - .js
- - .map
- - .json
- - .xml
- - .md
- - .eot
- - .svg
- - .ttf
- - .woff
- - .woff2
- - .otf
+ - .html
+ - .css
+ - .js
+ - .map
+ - .json
+ - .xml
+ - .md
+ - .eot
+ - .svg
+ - .ttf
+ - .woff
+ - .woff2
+ - .otf
# Cache control: default 1 hour for HTML, longer for static assets
max_age: