@@ -31,11 +31,11 @@ export default function QeRLProject() {
3131 const frontmatterContent = frontmatterMatch [ 1 ] ;
3232 const markdownBody = frontmatterMatch [ 2 ] ;
3333
34- // Parse YAML-like frontmatter (simple parsing for our use case)
34+ // Parse YAML-like frontmatter
3535 const heroData : HeroData = {
36- title : "QeRL: Beyond Efficiency " ,
37- subtitle : "Quantization-enhanced Reinforcement Learning for LLMs " ,
38- tags : [ "⏱️ Technical Deep Dive" , "📄 Research Article" ]
36+ title : "" ,
37+ subtitle : "" ,
38+ tags : [ ]
3939 } ;
4040
4141 // Extract values from frontmatter
@@ -47,16 +47,24 @@ export default function QeRLProject() {
4747 const trimmedLine = line . trim ( ) ;
4848 if ( trimmedLine . startsWith ( 'hero:' ) ) continue ;
4949
50- if ( trimmedLine . includes ( ':' ) ) {
51- const [ key , ...valueParts ] = trimmedLine . split ( ':' ) ;
52- const value = valueParts . join ( ':' ) . trim ( ) . replace ( / ^ [ " ' ] | [ " ' ] $ / g, '' ) ;
50+ if ( trimmedLine . includes ( ':' ) && ! trimmedLine . startsWith ( '-' ) ) {
51+ // Save previous array if exists
52+ if ( currentKey === 'tags' && currentArray . length > 0 ) {
53+ heroData . tags = currentArray ;
54+ }
55+
56+ const colonIndex = trimmedLine . indexOf ( ':' ) ;
57+ const key = trimmedLine . substring ( 0 , colonIndex ) . trim ( ) ;
58+ const value = trimmedLine . substring ( colonIndex + 1 ) . trim ( ) . replace ( / ^ [ " ' ] | [ " ' ] $ / g, '' ) ;
5359
54- switch ( key . trim ( ) ) {
60+ switch ( key ) {
5561 case 'title' :
5662 heroData . title = value ;
63+ currentKey = '' ;
5764 break ;
5865 case 'subtitle' :
5966 heroData . subtitle = value ;
67+ currentKey = '' ;
6068 break ;
6169 case 'tags' :
6270 currentKey = 'tags' ;
@@ -65,20 +73,14 @@ export default function QeRLProject() {
6573 }
6674 } else if ( trimmedLine . startsWith ( '- ' ) ) {
6775 if ( currentKey === 'tags' ) {
68- const tagValue = trimmedLine . substring ( 2 ) . replace ( / ^ [ " ' ] | [ " ' ] $ / g, '' ) ;
76+ const tagValue = trimmedLine . substring ( 2 ) . trim ( ) . replace ( / ^ [ " ' ] | [ " ' ] $ / g, '' ) ;
6977 currentArray . push ( tagValue ) ;
7078 }
71- } else if ( trimmedLine === '' && currentArray . length > 0 ) {
72- if ( currentKey === 'tags' ) {
73- heroData . tags = currentArray ;
74- currentArray = [ ] ;
75- currentKey = '' ;
76- }
7779 }
7880 }
7981
8082 // Handle final array
81- if ( currentArray . length > 0 && currentKey === 'tags' ) {
83+ if ( currentKey === 'tags' && currentArray . length > 0 ) {
8284 heroData . tags = currentArray ;
8385 }
8486
@@ -154,11 +156,11 @@ export default function QeRLProject() {
154156 < div className = "relative" >
155157 < h1 className = "text-4xl md:text-5xl lg:text-6xl font-medium mb-8 leading-tight" >
156158 < span className = "bg-gradient-to-r from-blue-400 via-purple-400 to-cyan-400 bg-clip-text text-transparent" >
157- { heroData ?. title || 'QeRL: Beyond Efficiency ' }
159+ { heroData ?. title || 'Train 32B LLM Reasoning On 1 GPU - H100 80GB - QeRL ' }
158160 </ span >
159161 </ h1 >
160162 < div className = "text-lg md:text-xl text-slate-400 mb-8" >
161- { heroData ?. subtitle || 'Quantization-enhanced Reinforcement Learning for LLMs ' }
163+ { heroData ?. subtitle || 'LLM Reinforcement Learning With 4Bit Quantization ' }
162164 </ div >
163165
164166 { /* Tags */ }
@@ -220,7 +222,7 @@ export default function QeRLProject() {
220222 { /* Glow effect for the title */ }
221223 < div className = "absolute inset-0 text-4xl md:text-5xl lg:text-6xl font-medium leading-tight blur-sm pointer-events-none" >
222224 < span className = "bg-gradient-to-r from-blue-400/20 via-purple-400/20 to-cyan-400/20 bg-clip-text text-transparent" >
223- { heroData ?. title || 'QeRL: Beyond Efficiency ' }
225+ { heroData ?. title || 'Train 32B LLM Reasoning On 1 GPU - H100 80GB - QeRL ' }
224226 </ span >
225227 </ div >
226228 </ div >
0 commit comments