Repository: Hestenb62/_legacy_backup
Author: Hesten Berger
Commit Message: updated scratchpad
URL: https://github.com/Hestenb62/_legacy_backup/commit/f5e9b2c9eaa010ce6cf146d5d6eb70003cc4699f
Code Changes:
diff --git a/.agents/rules/planning-updates.md b/.agents/rules/planning-updates.md
index 60532f9..cd8a232 100644
--- a/.agents/rules/planning-updates.md
+++ b/.agents/rules/planning-updates.md
@@ -20,6 +20,7 @@ Whenever generating or updating an **Implementation Plan**, **Walkthrough**, **B
---
title: "Descriptive Human-Readable Title"
date: "YYYY-MM-DD"
+ version: "v2.5.0" # Active semantic version of the platform release (e.g. v2.5.0)
category: "Walkthrough" # Allowed: "Walkthrough", "Implementation Plan", "Bugfix", "Architecture"
tags: ["Tag1", "Tag2"]
summary: "1-2 sentence executive summary of the plan or changes."
@@ -30,3 +31,22 @@ Whenever generating or updating an **Implementation Plan**, **Walkthrough**, **B
3. **Portal Visibility**:
- The Updates Portal at `/updates.php` and `/updates/` dynamically indexes and renders all files in `updates/docs/`.
- Never finalize a task with planning or walkthrough information confined solely to chat messages.
+
+4. **Platform Version & Footer Release Info Synchronization**:
+ - Whenever platform features, major fixes, or architectural enhancements are made:
+ - Check and update the platform version constants in `src/header.php` and `src/footer.php`:
+ - `HL_SITE_VERSION`: Bump semantic version (e.g., `v2.4.0` -> `v2.5.0` for feature additions, `v2.5.1` for patch fixes).
+ - `HL_SITE_VERSION_DATE`: Reflect the current release month/year (e.g., `September 2026`).
+ - `HL_SITE_VERSION_LABEL`: Update human-readable release label (e.g., `September 2026 Release`).
+ - `HL_SITE_VERSION_SUMMARY`: Update the high-level release theme.
+ - Update the "What's in Version [X]" modal feature list in `src/footer.php` (`#footer-version-modal`) so that newly introduced capabilities are clearly documented in user-facing release notes.
+
+5. **Mandatory Help Center User Guides (`assets/text/hc-*.md`)**:
+ - Whenever introducing a new feature, study tool, or major platform enhancement:
+ - You MUST create or update a corresponding Markdown help article in `assets/text/hc-<feature-slug>.md`.
+ - Standard article structure:
+ - Level 2 heading: `## Feature Title`
+ - Executive overview explaining what the feature does and target users.
+ - Bullet list of core capabilities, keyboard shortcuts, and action buttons.
+ - Accessibility & UDL notes (screen reader support, font sizing, high contrast, offline access).
+ - Articles matching `assets/text/hc*.md` are automatically indexed, categorized, and rendered on [`pages/help-center.php`](file:///c:/Users/Heste/OneDrive/Documents/_legacy_backup/pages/help-center.php).
diff --git a/AGENTS.md b/AGENTS.md
index c9a10c3..f24e517 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -11,6 +11,7 @@
---
title: "Descriptive Human-Readable Title"
date: "YYYY-MM-DD"
+ version: "v2.5.0" # Active semantic version of the platform release (e.g. v2.5.0)
category: "Walkthrough" # Walkthrough | Implementation Plan | Bugfix | Architecture
tags: ["Tag1", "Tag2"]
summary: "1-2 sentence executive summary of the changes."
@@ -19,6 +20,8 @@
```
- All documents in `updates/docs/` are automatically indexed, searchable, and viewable on the Updates Portal at `/updates.php` and `/updates/`.
- Never leave planning or walkthrough details solely in ephemeral chat context.
+- **Footer Version & Release Notes Sync**: Whenever platform features, major fixes, or updates are made, bump the platform version constants (`HL_SITE_VERSION`, `HL_SITE_VERSION_LABEL`, `HL_SITE_VERSION_SUMMARY`) in `src/header.php` and `src/footer.php`, and update the "What's New in Version [X]" modal feature list in `src/footer.php`.
+- **Help Center Articles Sync**: Whenever introducing or updating platform features or study tools, create or update a companion Help Center article in `assets/text/hc-<feature-slug>.md` so that the user-facing Help Center at `pages/help-center.php` remains complete and accurate.
## 2. Core Architectural Principles
- **Offline Resiliency**: `offline.php` is the sole offline shell and service worker fallback. Never generate `offline.html`.
diff --git a/assets/css/components/fixed-tools.css b/assets/css/components/fixed-tools.css
index 038575b..6d53392 100644
--- a/assets/css/components/fixed-tools.css
+++ b/assets/css/components/fixed-tools.css
@@ -219,135 +219,334 @@
}
}
- /* Scratchpad Panel Overlay */
+ /* ==========================================================================
+ Unified Super Scratchpad & Whiteboard Studio Styles
+ ========================================================================== */
.scratchpad-panel-overlay {
position: fixed;
inset: 0;
- z-index: 100;
+ z-index: 9999;
display: none;
align-items: center;
justify-content: center;
padding: 1rem;
+ transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}
.scratchpad-panel-overlay.active {
display: flex;
}
+ /* Centered Modal Backdrop */
.scratchpad-backdrop {
position: absolute;
inset: 0;
- background-color: rgba(17, 24, 39, 0.4);
- backdrop-filter: blur(4px);
+ background-color: rgba(15, 23, 42, 0.55);
+ backdrop-filter: blur(6px);
cursor: pointer;
+ transition: opacity 0.25s ease;
}
.dark .scratchpad-backdrop, .midnight .scratchpad-backdrop {
- background-color: rgba(0, 0, 0, 0.6);
+ background-color: rgba(0, 0, 0, 0.75);
}
+ /* Modal Content Window */
.scratchpad-content {
background-color: var(--color-bg-base);
border-radius: var(--radius-2xl);
position: relative;
width: 100%;
- max-width: 64rem;
- height: 85vh;
+ max-width: 68rem;
+ height: 88vh;
+ max-height: 900px;
display: flex;
flex-direction: column;
overflow: hidden;
border: 1px solid var(--color-border);
- box-shadow: var(--shadow-2xl);
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25), 0 0 0 1px rgba(0,0,0,0.05);
pointer-events: auto;
z-index: 10;
+ transition: width 0.3s ease, height 0.3s ease, border-radius 0.3s ease;
}
.scratchpad-panel-overlay.active .scratchpad-content {
- animation: scale-up 0.3s cubic-bezier(0.16, 1, 0.3, 1) forwards;
+ animation: sp-scale-up 0.25s cubic-bezier(0.16, 1, 0.3, 1) forwards;
+ }
+
+ @keyframes sp-scale-up {
+ 0% { opacity: 0; transform: scale(0.96) translateY(10px); }
+ 100% { opacity: 1; transform: scale(1) translateY(0); }
+ }
+
+ /* Docked Split View (Side-by-Side Reading & Note Taking) */
+ .scratchpad-panel-overlay.is-docked {
+ inset: 0 0 0 auto;
+ width: 520px;
+ max-width: 96vw;
+ height: 100vh;
+ padding: 0;
+ align-items: stretch;
+ justify-content: flex-end;
+ pointer-events: none;
+ }
+
+ .scratchpad-panel-overlay.is-docked .scratchpad-backdrop {
+ opacity: 0;
+ pointer-events: none;
+ }
+
+ .scratchpad-panel-overlay.is-docked .scratchpad-content {
+ width: 100%;
+ max-width: 100%;
+ height: 100vh;
+ max-height: 100vh;
+ border-radius: 0;
+ border-left: 2px solid var(--color-border);
+ border-top: none;
+ border-right: none;
+ border-bottom: none;
+ box-shadow: -8px 0 32px rgba(0, 0, 0, 0.2);
+ pointer-events: auto;
+ }
+
+ /* Fullscreen Mode */
+ .scratchpad-panel-overlay.is-fullscreen {
+ padding: 0;
+ }
+
+ .scratchpad-panel-overlay.is-fullscreen .scratchpad-content {
+ width: 100vw;
+ max-width: 100vw;
+ height: 100vh;
+ max-height: 100vh;
+ border-radius: 0;
+ border: none;
}
/* Header */
.scratchpad-header {
- padding: 1.25rem 1.5rem;
+ padding: 0.875rem 1.25rem;
border-bottom: 1px solid var(--color-border);
display: flex;
+ flex-wrap: wrap;
justify-content: space-between;
align-items: center;
background-color: var(--color-bg-surface);
+ gap: 0.75rem;
+ flex-shrink: 0;
}
.scratchpad-title-group {
display: flex;
align-items: center;
- gap: 1rem;
+ gap: 0.75rem;
}
.scratchpad-icon-box {
- width: 3rem;
- height: 3rem;
+ width: 2.5rem;
+ height: 2.5rem;
border-radius: var(--radius-lg);
- background-color: color-mix(in srgb, var(--color-primary) 10%, transparent);
+ background-color: color-mix(in srgb, var(--color-primary) 12%, transparent);
display: flex;
align-items: center;
justify-content: center;
color: var(--color-primary);
- font-size: 1.25rem;
+ font-size: 1.15rem;
+ flex-shrink: 0;
}
.scratchpad-title {
- font-size: 1.25rem;
- font-weight: 900;
+ font-size: 1.1rem;
+ font-weight: 800;
color: var(--color-text-main);
line-height: 1.2;
+ margin: 0;
}
.scratchpad-subtitle {
font-size: 0.75rem;
color: var(--color-text-muted);
+ margin: 0;
}
- .scratchpad-close-btn {
- width: 2.5rem;
- height: 2.5rem;
+ /* Notebook Controls Bar */
+ .scratchpad-notebook-bar {
+ display: flex;
+ align-items: center;
+ gap: 0.35rem;
+ background-color: var(--color-bg-base);
+ padding: 0.25rem 0.4rem;
+ border-radius: var(--radius-md);
+ border: 1px solid var(--color-border);
+ }
+
+ .scratchpad-note-select {
+ padding: 0.3rem 0.6rem;
+ font-size: 0.85rem;
+ font-weight: 700;
+ color: var(--color-text-main);
+ background-color: transparent;
+ border: none;
+ border-radius: var(--radius-sm);
+ outline: none;
+ max-width: 140px;
+ cursor: pointer;
+ }
+
+ .scratchpad-note-select:focus-visible {
+ box-shadow: 0 0 0 2px var(--color-primary);
+ }
+
+ .scratchpad-btn-sm {
+ padding: 0.3rem 0.55rem;
+ font-size: 0.75rem;
+ font-weight: 700;
+ color: var(--color-text-main);
+ background-color: var(--color-bg-surface);
+ border: 1px solid var(--color-border);
border-radius: var(--radius-sm);
+ cursor: pointer;
+ display: inline-flex;
+ align-items: center;
+ gap: 0.25rem;
+ transition: all 0.15s ease;
+ }
+
+ .scratchpad-btn-sm:hover {
+ background-color: color-mix(in srgb, var(--color-primary) 10%, transparent);
+ color: var(--color-primary);
+ border-color: var(--color-primary);
+ }
+
+ .scratchpad-btn-sm.scratchpad-btn-danger:hover {
+ background-color: color-mix(in srgb, var(--color-error) 15%, transparent);
+ color: var(--color-error);
+ border-color: var(--color-error);
+ }
+
+ /* Window State Controls */
+ .scratchpad-window-controls {
+ display: flex;
+ align-items: center;
+ gap: 0.35rem;
+ }
+
+ .scratchpad-header-btn, .scratchpad-close-btn {
+ width: 2.25rem;
+ height: 2.25rem;