77 < link rel ="icon " type ="image/svg+xml " href ="favicon.svg " />
88 < meta
99 name ="description "
10- content ="OpenCode plugin that enforces minimum task duration. Prevents AI from ending tasks prematurely . "
10+ content ="Workaholic enforces mandatory desk time for AI. No early exit, no faking. AI can't say 'done' until the timer hits zero . "
1111 />
1212 < link rel ="preconnect " href ="https://fonts.googleapis.com " />
1313 < link rel ="preconnect " href ="https://fonts.gstatic.com " crossorigin />
230230 .hero p {
231231 font-size : clamp (1.125rem , 2vw , 1.375rem );
232232 color : var (--text-secondary );
233- max-width : 540 px ;
233+ max-width : 600 px ;
234234 margin-bottom : 2.5rem ;
235235 animation : fadeInUp 0.8s ease 0.2s forwards;
236236 opacity : 0 ;
292292 border-color : var (--text-muted );
293293 }
294294
295- /* Timer Display */
296- .timer-display {
297- margin-top : 4rem ;
298- padding : 2rem ;
299- background : var (--bg-secondary );
300- border : 1px solid var (--border-color );
301- border-radius : 16px ;
302- animation : fadeInUp 0.8s ease 0.4s forwards;
303- opacity : 0 ;
304- }
305-
306- .timer-display code {
307- font-family : var (--font-mono );
308- font-size : 3rem ;
309- font-weight : 500 ;
310- color : var (--accent-primary );
311- letter-spacing : 0.05em ;
312- }
313-
314295 /* Features Section */
315296 .features {
316297 padding : 6rem 2rem ;
555536 </ nav >
556537
557538 < section class ="hero ">
558- < div class ="hero-badge "> OpenCode Plugin</ div >
539+ < div class ="hero-badge ">
540+ < span > OpenCode Plugin for Mandatory Time</ span >
541+ </ div >
559542 < h1 >
560- Never Stop < br />
561- < span class ="gradient-text "> Until Time Expires </ span >
543+ AI says "done" < br />
544+ < span class ="gradient-text "> at 30 seconds. </ span >
562545 </ h1 >
563546 < p >
564- Enforces minimum task duration. Prevents AI from ending tasks prematurely before a time
565- limit expires. Stay focused. Keep working.
547+ But edge cases? Untested.< br />
548+ Bugs? Still there. Docs? Missing.< br />
549+ Workaholic brings mandatory working time to AI. < br />
550+ No early exit.
566551 </ p >
567552 < div class ="hero-cta ">
568553 < a
@@ -575,82 +560,66 @@ <h1>
575560 </ a >
576561 < a href ="#usage " class ="btn btn-secondary "> Get Started</ a >
577562 </ div >
578- < div class ="timer-display ">
579- < code id ="demo-timer "> 15:00</ code >
580- </ div >
581563 </ section >
582564
583565 < section class ="features " id ="features ">
584566 < div class ="section-header reveal ">
585- < h2 > Built for Deep Work </ h2 >
586- < p > Powerful features that keep you focused and prevent premature task completion. </ p >
567+ < h2 > The Premature "Done" Problem </ h2 >
568+ < p > AI has an early-exit problem. Workaholic fixes it: </ p >
587569 </ div >
588570 < div class ="features-grid ">
589571 < div class ="feature-card reveal ">
590572 < div class ="feature-icon "> ⏱</ div >
591- < h3 > Timer Enforcement </ h3 >
592- < p > AI cannot end until the timer expires. Minimum duration guaranteed .</ p >
573+ < h3 > No Early Exit </ h3 >
574+ < p > You're grounded until time = 0. "Done" is not a valid response until the timer expires .</ p >
593575 </ div >
594576 < div class ="feature-card reveal ">
595577 < div class ="feature-icon "> 🚫</ div >
596- < h3 > Sleep Blocking</ h3 >
597- < p > Prevents time-wasting via sleep commands. No more waiting.</ p >
598- </ div >
599- < div class ="feature-card reveal ">
600- < div class ="feature-icon "> 🔄</ div >
601- < h3 > Persistent Timer</ h3 >
602- < p > Timer survives across messages. Context is always maintained.</ p >
603- </ div >
604- < div class ="feature-card reveal ">
605- < div class ="feature-icon "> 📊</ div >
606- < h3 > Status Checking</ h3 >
607- < p > Always knows remaining time. Real-time timer status available.</ p >
578+ < h3 > No Faking</ h3 >
579+ < p > Sleep commands are blocked. Status-checking is tracked. No way to pretend productivity.</ p >
608580 </ div >
609581 < div class ="feature-card reveal ">
610- < div class ="feature-icon "> 💪</ div >
611- < h3 > Behavioral Prompts</ h3 >
612- < p > Strong prompts reinforce the workaholic mindset automatically.</ p >
613- </ div >
614- < div class ="feature-card reveal ">
615- < div class ="feature-icon "> ✨</ div >
616- < h3 > Task Proposals</ h3 >
617- < p > Encourages AI to propose new tasks when todos are complete.</ p >
582+ < div class ="feature-icon "> 🧠</ div >
583+ < h3 > Deep Iteration</ h3 >
584+ < p > Forces real work: research, refactor, test, improve. Not just "thinking" — producing.</ p >
618585 </ div >
619586 </ div >
620587 </ section >
621588
622589 < section class ="usage " id ="usage ">
623590 < div class ="section-header reveal ">
624- < h2 > How It Works </ h2 >
625- < p > Three simple steps to enforced productivity .</ p >
591+ < h2 > The Rules </ h2 >
592+ < p > Mandatory desk time. No exceptions .</ p >
626593 </ div >
627594 < div class ="usage-steps ">
628595 < div class ="usage-step reveal ">
629596 < div class ="step-number "> 1</ div >
630597 < div class ="step-content ">
631- < h3 > Start the Timer </ h3 >
598+ < h3 > Rule: No Early Exit </ h3 >
632599 < p >
633- Invoke /workaholic in OpenCode or use the tool directly with your desired duration.
600+ When todos complete, find more work. Research alternatives. Improve edge cases. Write docs.
601+ There's always something to do. "I'm done" is not allowed until time = 0.
634602 </ p >
635- < code > /workaholic [Your requirements, for xxx minutes] </ code >
603+ < code > Only ONE valid ending: timer shows EXACTLY 0 </ code >
636604 </ div >
637605 </ div >
638606 < div class ="usage-step reveal ">
639607 < div class ="step-number "> 2</ div >
640608 < div class ="step-content ">
641- < h3 > Work Continuously </ h3 >
642- < p > Every response automatically checks remaining time. Sleep commands are blocked .</ p >
643- < code > AI cannot end until timer shows 0 </ code >
609+ < h3 > Rule: No Faking </ h3 >
610+ < p > Sleep commands are blocked. Checking status repeatedly = idling. You must be producing, not waiting .</ p >
611+ < code > Sleep = FORBIDDEN. Checking status ≠ working. </ code >
644612 </ div >
645613 </ div >
646614 < div class ="usage-step reveal ">
647615 < div class ="step-number "> 3</ div >
648616 < div class ="step-content ">
649- < h3 > Complete or Propose More </ h3 >
617+ < h3 > Rule: Checkout Required </ h3 >
650618 < p >
651- When time expires, either finish up or propose additional tasks to continue working.
619+ To end: you MUST call workahaholic.checkout. And it only works when timer = 0.
620+ Until then? You're grounded. Keep working.
652621 </ p >
653- < code > Time's up only when remaining = 0</ code >
622+ < code > workaholic.checkout only succeeds at 0</ code >
654623 </ div >
655624 </ div >
656625 </ div >
@@ -682,28 +651,6 @@ <h3>Complete or Propose More</h3>
682651 </ footer >
683652
684653 < script >
685- // Demo timer animation
686- let timeLeft = 15 * 60 ;
687- const timerDisplay = document . getElementById ( 'demo-timer' ) ;
688-
689- function updateTimer ( ) {
690- const minutes = Math . floor ( timeLeft / 60 ) ;
691- const seconds = timeLeft % 60 ;
692- timerDisplay . textContent = `${ minutes . toString ( ) . padStart ( 2 , '0' ) } :${ seconds . toString ( ) . padStart ( 2 , '0' ) } ` ;
693-
694- // Subtle color shift as time passes
695- const progress = 1 - timeLeft / ( 15 * 60 ) ;
696- const hue = 30 - progress * 20 ; // Orange to red-orange
697- timerDisplay . style . color = `hsl(${ hue } , 100%, 55%)` ;
698-
699- if ( timeLeft > 0 ) {
700- timeLeft -- ;
701- }
702- }
703-
704- updateTimer ( ) ;
705- setInterval ( updateTimer , 1000 ) ;
706-
707654 // Scroll reveal animation
708655 const revealElements = document . querySelectorAll ( '.reveal' ) ;
709656
0 commit comments