feat: implement zero-configuration auto-enhancement demo workflow

- Add intelligent auto-enhancement that detects viable content elements
- Replace manual enhancement with automated container-first detection
- Support inline formatting (strong, em, span, links) within editable content
- Streamline demo workflow: just demo shows options, auto-enhances on demand
- Clean up legacy commands and simplify directory structure
- Auto-enhancement goes directly from source to demo-ready (no intermediate dirs)
- Add Dan Eden portfolio and simple test sites for real-world validation
- Auto-enhanced 40 elements in Dan Eden portfolio, 5 in simple site
- Achieve true zero-configuration CMS experience
This commit is contained in:
2025-09-11 19:33:21 +02:00
parent 72bd31b626
commit cf3d304fdc
90 changed files with 1399 additions and 23 deletions

View File

@@ -0,0 +1,46 @@
# Dan Eden Portfolio
## Original URL
https://daneden.me
## Downloaded
2025-09-11T15:48:33.014Z
## Site Characteristics
- **Framework**: Next.js with CSS Modules
- **Styling**: Clean, minimal design with CSS-in-JS
- **Content**: Personal portfolio with bio, projects, and talks
- **Complexity**: Simple - good for basic insertr testing
## Insertr Enhancement Status
- [x] Content sections identified
- [x] Insertr classes added to key elements
- [x] Enhanced version created
- [x] Insertr functionality tested
- [x] Results documented
## Test Results
**Enhancement Success**: 7 elements successfully enhanced with insertr
**Server Integration**: Site registered as "dan-eden-test" in insertr.yaml
**Content ID Generation**: Auto-generated IDs like "index-span-4ba35c"
**Content Type Detection**: All elements correctly identified as "markdown" type
**Asset Preservation**: All original Next.js assets and styling preserved
## Enhanced Elements
1. **Main bio paragraph** (`<p class="home_xxl__iX0Z1 insertr">`) - Product designer introduction
2. **Company name** (`<span class="insertr">Meta Reality Labs</span>`) - Current employer
3. **App descriptions** - Ora and Solstice project descriptions
4. **Talk content** - "Where We Can Go" title and description
5. **Action buttons** - "Learn more" and "Read the post" links
## Testing Notes
- Clean HTML structure ideal for insertr compatibility
- CSS Modules shouldn't interfere with insertr classes
- Good test case for semantic content editing
- Minimal JavaScript complexity
## Files
- `index.html.original` - Original downloaded version
- `index.html` - Enhanced version with insertr classes
- `insertr-config.json` - Configuration for testing
- `_next/` - Next.js assets and styles

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5076],{226:(e,A,t)=>{"use strict";t.r(A),t.d(A,{default:()=>r});let r={src:"/_next/static/media/iPadPro11M4.93b0325f.png",height:1880,width:2640,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAGCAMAAADJ2y/JAAAAD1BMVEUGBgZMaXELCQsAAAAKCQqRNR3zAAAABXRSTlNFACsEWomyBWcAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAjSURBVHicY2BhAAMWBiZGMGBiYGJkZmZmhjAYGSEMqBRMMQAHdABFMwT0jgAAAABJRU5ErkJggg==",blurWidth:8,blurHeight:6}},1965:e=>{e.exports={root:"styles_root__rUjFN",children:"styles_children__D9Nsi",bezel:"styles_bezel___vGQl"}},4769:(e,A,t)=>{"use strict";t.r(A),t.d(A,{default:()=>r});let r={src:"/_next/static/media/wwcg.c58b0775.png",height:707,width:698,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAMAAADz0U65AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMRA7xDv5IAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAmSURBVHicRcsBCgAwAEFR7/6XXmw1iZ8SRBokUZc2T6+G4/v4LzgE0AAifxUgZgAAAABJRU5ErkJggg==",blurWidth:8,blurHeight:8}},5337:e=>{e.exports={root:"home_root__o7QEV",intro:"home_intro__8dWW4",xxl:"home_xxl__iX0Z1"}},5715:(e,A,t)=>{"use strict";t.d(A,{default:()=>i});var r=t(5155),s=t(2115),o=t(9588);function i(e){let{autoPlay:A=!1,caption:t,controls:i=!0,id:l,loop:n=!1,preload:a=!0,playsInline:h=!1,poster:_,muted:c=!1,width:g,height:d,className:u}=e,E=(0,s.useRef)(null),b=void 0==_?void 0:"https://image.mux.com/".concat(l,"/thumbnail.webp?time=").concat(_),m="https://stream.mux.com/".concat(l,".m3u8");(0,s.useEffect)(()=>{let e;return o.Ay.isSupported()&&function t(){null!=e&&e.destroy();let r=new o.Ay({enableWorker:!1});null!=E.current&&r.attachMedia(E.current),r.on(o.Ay.Events.MEDIA_ATTACHED,()=>{r.loadSource(m),r.on(o.Ay.Events.MANIFEST_PARSED,()=>{if(A){var e;null==E||null==(e=E.current)||e.play().catch(()=>{console.log("Unable to autoplay prior to user interaction with the DOM")})}})}),r.on(o.Ay.Events.ERROR,function(e,A){if(A.fatal)switch(A.type){case o.Ay.ErrorTypes.NETWORK_ERROR:r.startLoad();break;case o.Ay.ErrorTypes.MEDIA_ERROR:r.recoverMediaError();break;default:t()}}),e=r}(),()=>{null!=e&&e.destroy()}},[A,E,m]);let R={autoPlay:A,className:u,playsInline:h,loop:n,controls:i,width:g,height:d,poster:b,muted:c,preload:a?"auto":"none",suppressHydrationWarning:!0},p=o.Ay.isSupported()?(0,r.jsx)("video",{ref:E,...R}):(0,r.jsx)("video",{ref:E,src:m,...R});return(0,r.jsxs)("figure",{children:[p,t&&(0,r.jsx)("figcaption",{children:t})]})}},6432:(e,A,t)=>{Promise.resolve().then(t.bind(t,226)),Promise.resolve().then(t.bind(t,6511)),Promise.resolve().then(t.t.bind(t,1965,23)),Promise.resolve().then(t.t.bind(t,9075,23)),Promise.resolve().then(t.t.bind(t,5337,23)),Promise.resolve().then(t.bind(t,5715)),Promise.resolve().then(t.bind(t,4769)),Promise.resolve().then(t.t.bind(t,7187,23)),Promise.resolve().then(t.t.bind(t,8310,23)),Promise.resolve().then(t.t.bind(t,6874,23)),Promise.resolve().then(t.t.bind(t,3063,23))},6511:(e,A,t)=>{"use strict";t.r(A),t.d(A,{default:()=>r});let r={src:"/_next/static/media/iPhone14Pro.2e2e287c.png",height:2716,width:1339,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAICAMAAADp7a43AAAADFBMVEUgHh0iIB9MaXEPDw/kr3MeAAAABHRSTlMpNgBRUiN+bgAAAAlwSFlzAAAhOAAAITgBRZYxYAAAAB1JREFUeJxjYGRmZmRgYGJiYGAEEWAWGsHIwMAIAANWACQGp/BhAAAAAElFTkSuQmCC",blurWidth:4,blurHeight:8}},7187:e=>{e.exports={root:"styles_root__loSke"}},8310:e=>{e.exports={root:"styles_root__ezqfE",card:"styles_card__Zgiwg",wwcgImage:"styles_wwcgImage__6T0vh",highlight:"styles_highlight__PDTTu",stretcher:"styles_stretcher__vQB9_",button:"styles_button__OAX5k"}},9075:e=>{e.exports={root:"styles_root__bf3zB",left:"styles_left__647Tl",right:"styles_right__Ibe_m"}}},e=>{var A=A=>e(e.s=A);e.O(0,[1005,9910,6874,3063,8441,1684,7358],()=>A(6432)),_N_E=e.O()}]);

View File

@@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7358],{9288:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,894,23)),Promise.resolve().then(n.t.bind(n,4970,23)),Promise.resolve().then(n.t.bind(n,6614,23)),Promise.resolve().then(n.t.bind(n,6975,23)),Promise.resolve().then(n.t.bind(n,7555,23)),Promise.resolve().then(n.t.bind(n,4911,23)),Promise.resolve().then(n.t.bind(n,9665,23)),Promise.resolve().then(n.t.bind(n,1295,23))},9393:()=>{}},e=>{var s=s=>e(e.s=s);e.O(0,[8441,1684],()=>(s(5415),s(9288))),_N_E=e.O()}]);

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
(()=>{"use strict";var e={},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={exports:{}},i=!0;try{e[o](a,a.exports,r),i=!1}finally{i&&delete t[o]}return a.exports}r.m=e,(()=>{var e=[];r.O=(t,o,n,a)=>{if(o){a=a||0;for(var i=e.length;i>0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[o,n,a];return}for(var u=1/0,i=0;i<e.length;i++){for(var[o,n,a]=e[i],l=!0,c=0;c<o.length;c++)(!1&a||u>=a)&&Object.keys(r.O).every(e=>r.O[e](o[c]))?o.splice(c--,1):(l=!1,a<u&&(u=a));if(l){e.splice(i--,1);var d=n();void 0!==d&&(t=d)}}return t}})(),r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;r.t=function(o,n){if(1&n&&(o=this(o)),8&n||"object"==typeof o&&o&&(4&n&&o.__esModule||16&n&&"function"==typeof o.then))return o;var a=Object.create(null);r.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var u=2&n&&o;"object"==typeof u&&!~e.indexOf(u);u=t(u))Object.getOwnPropertyNames(u).forEach(e=>i[e]=()=>o[e]);return i.default=()=>o,r.d(a,i),a}})(),r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,o)=>(r.f[o](e,t),t),[])),r.u=e=>{},r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={},t="_N_E:";r.l=(o,n,a,i)=>{if(e[o])return void e[o].push(n);if(void 0!==a)for(var u,l,c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var f=c[d];if(f.getAttribute("src")==o||f.getAttribute("data-webpack")==t+a){u=f;break}}u||(l=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,r.nc&&u.setAttribute("nonce",r.nc),u.setAttribute("data-webpack",t+a),u.src=r.tu(o)),e[o]=[n];var s=(t,r)=>{u.onerror=u.onload=null,clearTimeout(p);var n=e[o];if(delete e[o],u.parentNode&&u.parentNode.removeChild(u),n&&n.forEach(e=>e(r)),t)return t(r)},p=setTimeout(s.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=s.bind(null,u.onerror),u.onload=s.bind(null,u.onload),l&&document.head.appendChild(u)}})(),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:e=>e},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("nextjs#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="/_next/",(()=>{var e={8068:0,9127:0,1005:0,1483:0,5110:0,6890:0};r.f.j=(t,o)=>{var n=r.o(e,t)?e[t]:void 0;if(0!==n)if(n)o.push(n[2]);else if(/^(1005|1483|5110|6890|8068|9127)$/.test(t))e[t]=0;else{var a=new Promise((r,o)=>n=e[t]=[r,o]);o.push(n[2]=a);var i=r.p+r.u(t),u=Error();r.l(i,o=>{if(r.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var a=o&&("load"===o.type?"missing":o.type),i=o&&o.target&&o.target.src;u.message="Loading chunk "+t+" failed.\n("+a+": "+i+")",u.name="ChunkLoadError",u.type=a,u.request=i,n[1](u)}},"chunk-"+t,t)}},r.O.j=t=>0===e[t];var t=(t,o)=>{var n,a,[i,u,l]=o,c=0;if(i.some(t=>0!==e[t])){for(n in u)r.o(u,n)&&(r.m[n]=u[n]);if(l)var d=l(r)}for(t&&t(o);c<i.length;c++)a=i[c],r.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return r.O(d)},o=self.webpackChunk_N_E=self.webpackChunk_N_E||[];o.forEach(t.bind(null,0)),o.push=t.bind(null,o.push.bind(o))})()})();
;(function(){if(typeof document==="undefined"||!/(?:^|;\s)__vercel_toolbar=1(?:;|$)/.test(document.cookie))return;var s=document.createElement('script');s.src='https://vercel.live/_next-live/feedback/feedback.js';s.setAttribute("data-explicit-opt-in","true");s.setAttribute("data-cookie-opt-in","true");s.setAttribute("data-deployment-id","dpl_4tmoGZS37rLepoJ6Qs6iJ48L6AxP");((document.head||document.documentElement).appendChild(s))})();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,22 @@
{
"site_name": "Dan Eden Portfolio",
"description": "Personal portfolio site with clean design and minimal styling",
"base_url": "https://daneden.me",
"content_sections": [
{
"selector": ".home_xxl__iX0Z1",
"type": "markdown",
"editable": true,
"description": "Main bio paragraph - Product Designer intro"
},
{
"selector": "span.insertr",
"type": "text",
"editable": true,
"description": "Various text content elements (company, descriptions, titles)"
}
],
"css_frameworks": ["Next.js CSS Modules"],
"complexity": "simple",
"testing_notes": "Clean Next.js site with CSS modules. Good test for CSS-in-JS compatibility and semantic HTML structure."
}