diff --git a/CHANGELOG.md b/CHANGELOG.md index eba2e95..b39806d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,21 @@ All notable changes to CV Manager will be documented in this file. Format follows [Keep a Changelog](https://keepachangelog.com/), versioning follows [Semantic Versioning](https://semver.org/). +## [1.17.0] - 2026-03-09 + +### Added +- **Profiles** section: save named snapshots of your CV data, switch between them, set one as the public-facing default, and import a JSON file directly as a profile without touching the live database. +- **Custom CSS** section: add any CSS that is injected into the public CV page on every request — lets users fully customise the look of their site. +- `POST /api/datasets/from-json` — import a `.json` file as a named profile without overwriting live CV data. The file is read into memory and stored as a dataset; it is not kept on the server. + +### Changed +- Removed the block-based page editor in favour of a simpler **inline page editor**: every section on a page is always visible and directly editable — no modals, no drag-and-drop. Pages (Home, Projects, Contact) are now listed under a **Pages** nav group. +- Sidebar reorganised into three groups: **Pages**, **Site** (CV Profiles, Custom CSS, Media), and **Tools** (Uptime, Settings). Logo now shows "Website Builder" sub-label. +- Admin app now opens on the Home page editor instead of a placeholder on login. +- JSON import description clarified: the file is read into memory and not stored on the server; data is written directly to the database, replacing existing entries. +- Removed the "Import CV from HTML" import option (the "save page as HTML and re-upload" workflow) to simplify the Settings import panel. +- Media library JS simplified: removed picker-modal code that was only used by the old block editors. + ## [1.16.3] - 2026-03-08 ### Changed diff --git a/package-lock.json b/package-lock.json index 1ed12a4..6283c27 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "site-manager", - "version": "1.16.3", + "version": "1.17.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "site-manager", - "version": "1.16.3", + "version": "1.17.0", "dependencies": { "adm-zip": "^0.5.16", "bcryptjs": "^3.0.3", diff --git a/package.json b/package.json index 8fd63ae..73e74c8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "site-manager", - "version": "1.16.3", + "version": "1.17.0", "main": "src/server.js", "scripts": { "start": "node src/server.js", diff --git a/public-readonly/site.html b/public-readonly/site.html index 71f8885..33d69ea 100644 --- a/public-readonly/site.html +++ b/public-readonly/site.html @@ -111,10 +111,14 @@ /* Size */ .w-3 { width:.75rem; } .h-3 { height:.75rem; } + .w-3\.5 { width:.875rem; } + .h-3\.5 { height:.875rem; } .w-5 { width:1.25rem; } .h-5 { height:1.25rem; } .w-6 { width:1.5rem; } .h-6 { height:1.5rem; } + .w-8 { width:2rem; } + .h-8 { height:2rem; } .w-10 { width:2.5rem; } .h-10 { height:2.5rem; } .w-full { width:100%; } diff --git a/public/manager/index.html b/public/manager/index.html index a8d3734..5d1fbc8 100644 --- a/public/manager/index.html +++ b/public/manager/index.html @@ -155,6 +155,62 @@ #sidebar { transform: none !important; position: relative !important; } .sidebar-backdrop { display: none !important; } } + + /* ── Wix-style section picker ────────────────────────── */ + :root { --picker-scale: 0.35; } + + .picker-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; } + @media (max-width: 540px) { .picker-grid { grid-template-columns: 1fr; } } + + .picker-card { + text-align: left; border-radius: 12px; overflow: hidden; + border: 2px solid #e2e8f0; background: #fff; cursor: pointer; + transition: border-color .18s, box-shadow .18s; + } + .dark .picker-card { background: #1e293b; border-color: #334155; } + .picker-card:hover { border-color: #6366f1; box-shadow: 0 8px 28px rgba(99,102,241,.22); } + + /* The visible thumbnail box */ + .picker-preview { height: 175px; overflow: hidden; position: relative; background: #f1f5f9; } + .dark .picker-preview { background: #0f172a; } + + /* Scale the inner full-size render down to fit */ + .picker-preview-scaled { + transform-origin: top left; + transform: scale(var(--picker-scale)); + width: calc(100% / var(--picker-scale)); + pointer-events: none; + font-family: system-ui, -apple-system, sans-serif; + } + + /* Hover overlay */ + .picker-overlay { + position: absolute; inset: 0; + background: rgba(15, 23, 42, 0.52); + display: flex; align-items: center; justify-content: center; + opacity: 0; transition: opacity .2s; + } + .picker-card:hover .picker-overlay { opacity: 1; } + .picker-overlay-btn { + background: #6366f1; color: #fff; + font-size: 1rem; font-weight: 700; + padding: 11px 28px; border-radius: 9px; + box-shadow: 0 4px 14px rgba(99,102,241,.45); + letter-spacing: .01em; + } + + /* Card label area */ + .picker-card-info { padding: 11px 14px 13px; border-top: 1px solid #f1f5f9; } + .dark .picker-card-info { border-color: #334155; } + .picker-card-name { display: block; font-size: .8125rem; font-weight: 700; color: #1e293b; margin-bottom: 2px; } + .dark .picker-card-name { color: #e2e8f0; } + .picker-card-desc { display: block; font-size: .7rem; color: #94a3b8; line-height: 1.45; } + + /* Preview section outer wrappers — extracted from inline styles */ + .prev-hero { background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%); padding: 72px 56px; text-align: center; display: flex; flex-direction: column; align-items: center; } + .prev-projects { padding: 52px 48px; background: #f8fafc; } + .prev-timeline { padding: 52px 48px; background: white; } + .prev-contact { padding: 52px 48px; background: #f8fafc; text-align: center; } @@ -207,10 +263,13 @@

Site Manager

- Site Manager +
+ Site Manager + Website Builder +
- +