dfbdokk commited on
Commit
d07f18c
·
verified ·
1 Parent(s): 057ef10

import React, { useState, useEffect } from 'react'; import { motion } from 'framer-motion'; import { FileText, Settings, Calendar, Bug, Palette, Code, Play, Save, History, ChevronRight, Moon, Zap, Eye } from 'lucide-react'; const App = () => { const [activeTab, setActiveTab] = useState('tas'); const [selectedTas, setSelectedTas] = useState(1); const [logs, setLogs] = useState([ '[2024-01-15 14:32:45] INFO: DOKK initialization complete', '[2024-01-15 14:33:12] WARN: Cold start detected in neon-noir module', '[2024-01-15 14:34:01] ERROR: Metaphor cascade failure - E404:MOTIF' ]); const tasSteps = [ { id: 1, title: "Define Micro-Project Scope", description: "Core premise, protagonist profile, constraints", prompt: "Produce a 1,000-word 'Digital Nightmare' short story set in a cold neon-noir city. Protagonist: mid-30s backend engineer with a failing critical service and a moral choice. Constraints: 3 scenes, ~330 words each, keep technical references plausible but accessible. Tone: clinical, anxious, elegiac. Include one log snippet and one error code as motif." }, { id: 2, title: "Create Story Bible", description: "Setting rules, tech ecosystem, key artifacts", prompt: "Return a compact story bible (bulleted) with: city sensory rules, network/stack basics used, protagonist backstory, antagonist forces (corp, rogue AI, infrastructure), three artifacts (log, key, terminal). Keep items terse for use in prompts." }, { id: 3, title: "Break into Beats", description: "3 scenes: inciting glitch, cascade, reveal", prompt: "Output a scene-by-scene beat sheet with scene goals, stakes, physical location, emotional arc, key lines or images to include (max 6 bullets per scene)." }, { id: 4, title: "Draft Prompts/Templates", description: "Generation & revision templates", prompt: "Generate 3 reusable prompts/templates: seed draft prompt, tighten-and-clarify revision prompt, technical-accuracy check prompt. Each must include explicit instructions for length, tone, and placeholders for variables (e.g., {log_snippet})." }, { id: 5, title: "Design Minimal UI", description: "Editor, log view, versioning", prompt: "Describe a minimal editor UI for rapid drafting: main editor, split log/terminal pane, version history, quick-insert snippet palette. Provide keyboard shortcuts and accessible color contrast values (WCAG AA)." }, { id: 6, title: "Implement Generation Pipeline", description: "Prompt runner, temperature control, caching", prompt: "Provide implementation steps and CLI commands to run generation: script to call model API with temperature presets, caching strategy, prompt concatenation order, and example environment variables. Include error handling pseudocode." }, { id: 7, title: "Integrate Evaluation Loop", description: "Unit tests, rubrics, human-in-the-loop", prompt: "Create an evaluation rubric (10–50 pts) for automated checks: coherence, plausibility, emotional arc, jargon clarity, pacing, originality. Add unit-test-style examples to detect hallucinated tech facts." }, { id: 8, title: "Polish & Publish", description: "Tech check, copy edit, formatting", prompt: "Produce a final checklist for polish and publication: tech fact verification, log formatting, copyedit pass, metadata tags, and export templates (Markdown, HTML)." } ]; const carePlan = { water: "Short iterative feedback cycles (daily micro-revisions)", light: "High contrast visuals: deep indigo backgrounds, cyan/neon-pink accents", soil: "Dense, layered motifs — logs, cables, rain-slick streets; keep texture minimal", feeding: "Feed with real engineering artifacts: authentic log formats, concise error codes, 2–3 sensory anchors per scene" }; const seasonalCalendar = [ { week: 1, task: "Scope, story bible, and beat sheet" }, { week: 2, task: "Draft scene 1–3 (one per 1–2 days), gather log snippets" }, { week: 3, task: "Revise for tone, tech plausibility, and pacing" }, { week: 4, task: "Polish, accessibility checks, export + publish" } ]; const troubleshooting = [ { symptom: "Atmosphere feels flat", fix: "Increase neon contrasts, add weather (cold rain, steam) and log-motif repetitions" }, { symptom: "Engineer reader disengaged", fix: "Add concrete constraints (SLA, countdown, failing test) and precise tech terms" }, { symptom: "Story too technical", fix: "Add sensory anchors, shorten jargon lines, insert emotional beats" }, { symptom: "Color palette low contrast", fix: "Use #0B1020 (indigo) background with #00E5FF (cyan) and #FF2D95 (neon-pink) accents; ensure text ≥ AA" } ]; const milestones = [ { day: 1, task: "Confirm bible and beats" }, { day: 3, task: "Scene 1 draft" }, { day: 5, task: "Scene 2 draft" }, { day: 7, task: "Scene 3 draft" }, { day: 10, task: "Revision pass" }, { day: 14, task: "Final polish & publish" } ]; const addLog = (message) => { setLogs(prev => [...prev, `[${new Date().toISOString().slice(0, 19).replace('T', ' ')}] ${message}`]); }; useEffect(() => { addLog(`TAS-${selectedTas} activated`); }, [selectedTas]); return ( <div className="min-h-screen bg-gray-900 text-cyan-100 font-mono"> {/* Header */} <header className="border-b border-cyan-500/30 bg-gray-900/80 backdrop-blur-sm sticky top-0 z-10"> <div className="container mx-auto px-4 py-3 flex items-center justify-between"> <motion.div className="flex items-center space-x-2" initial={{ opacity: 0, x: -20 }} animate={{ opacity: 1, x: 0 }} > <div className="w-3 h-3 bg-pink-500 rounded-full animate-pulse"></div> <h1 className="text-xl font-bold text-transparent bg-clip-text bg-gradient-to-r from-cyan-400 to-pink-500"> DOKK — Digital Nightmare Toolkit </h1> </motion.div> <div className="flex space-x-4"> <button onClick={() => addLog("System status: Operational")} className="px-3 py-1 bg-cyan-900/50 border border-cyan-500/30 rounded text-xs hover:bg-cyan-800/50 transition-colors" > Status </button> </div> </div> </header> <div className="container mx-auto px-4 py-6 flex flex-col lg:flex-row gap-6"> {/* Sidebar */} <motion.aside className="lg:w-64 flex-shrink-0" initial={{ opacity: 0, x: -20 }} animate={{ opacity: 1, x: 0 }} transition={{ delay: 0.1 }} > <div className="bg-gray-800/50 border border-cyan-500/20 rounded-lg p-4 mb-6"> <h2 className="text-lg font-semibold mb-3 flex items-center"> <Settings className="mr-2 w-5 h-5 text-pink-400" /> Navigation </h2> <nav className="space-y-2"> {[ { id: 'tas', label: 'TAS Steps', icon: FileText }, { id: 'care', label: 'Care Plan', icon: Palette }, { id: 'calendar', label: 'Calendar', icon: Calendar }, { id: 'troubleshoot', label: 'Troubleshoot', icon: Bug }, { id: 'milestones', label: 'Milestones', icon: Eye } ].map((item) => { const Icon = item.icon; return ( <button key={item.id} onClick={() => setActiveTab(item.id)} className={`w-full text-left px-3 py-2 rounded flex items-center transition-colors ${ activeTab === item.id ? 'bg-cyan-900/30 text-cyan-300 border border-cyan-500/30' : 'hover:bg-gray-700/50' }`} > <Icon className="mr-2 w-4 h-4" /> {item.label} </button> ); })} </nav> </div> {/* Live Log */} <div className="bg-gray-800/50 border border-cyan-500/20 rounded-lg p-4"> <h3 className="text-md font-semibold mb-3 flex items-center"> <Code className="mr-2 w-4 h-4 text-cyan-400" /> Live Log </h3> <div className="bg-black/50 border border-cyan-500/10 rounded p-3 h-48 overflow-y-auto text-xs font-mono"> {logs.map((log, index) => ( <div key={index} className="mb-1 last:mb-0"> <span className="text-cyan-300">$</span> {log} </div> ))} </div> <button onClick={() => addLog("Manual log entry added")} className="mt-3 w-full py-1 bg-cyan-900/30 border border-cyan-500/30 rounded text-xs hover:bg-cyan-800/30 transition-colors" > Add Entry </button> </div> </motion.aside> {/* Main Content */} <main className="flex-1"> <motion.div initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} transition={{ delay: 0.2 }} > {activeTab === 'tas' && ( <div className="bg-gray-800/50 border border-cyan-500/20 rounded-lg p-6"> <h2 className="text-2xl font-bold mb-6 flex items-center"> <FileText className="mr-3 text-pink-400" /> TAS Steps </h2> <div className="grid grid-cols-1 md:grid-cols-2 gap-4 mb-8"> {tasSteps.map((step) => ( <motion.div key={step.id} whileHover={{ scale: 1.02 }} className={`p-4 rounded-lg border cursor-pointer transition-all ${ selectedTas === step.id ? 'bg-cyan-900/20 border-cyan-500/50' : 'bg-gray-700/30 border-gray-600/30 hover:border-cyan-500/30' }`} onClick={() => setSelectedTas(step.id)} > <div className="flex justify-between items-start"> <div> <h3 className="font-bold text-cyan-300">TAS-{step.id}</h3> <h4 className="font-semibold mt-1">{step.title}</h4> <p className="text-sm text-gray-300 mt-2">{step.description}</p> </div> <ChevronRight className="w-5 h-5 text-cyan-400" /> </div> </motion.div> ))} </div> <div className="bg-black/30 border border-cyan-500/20 rounded-lg p-5"> <div className="flex items-center justify-between mb-4"> <h3 className="text-lg font-semibold text-cyan-300"> Prompt for TAS-{selectedTas} </h3> <div className="flex space-x-2"> <button className="px-3 py-1 bg-cyan-900/30 border border-cyan-500/30 rounded text-xs flex items-center hover:bg-cyan-800/30 transition-colors"> <Play className="w-3 h-3 mr-1" /> Run </button> <button className="px-3 py-1 bg-gray-700/50 border border-gray-600/30 rounded text-xs flex items-center hover:bg-gray-600/50 transition-colors"> <Save className="w-3 h-3 mr-1" /> Save </button> </div> </div> <div className="bg-gray-900/50 border border-gray-700/30 rounded p-4 text-sm"> <pre className="whitespace-pre-wrap font-sans"> {tasSteps.find(t => t.id === selectedTas)?.prompt} </pre> </div> </div> </div> )} {activeTab === 'care' && ( <div className="bg-gray-800/50 border border-cyan-500/20 rounded-lg p-6"> <h2 className="text-2xl font-bold mb-6 flex items-center"> <Palette className="mr-3 text-pink-400" /> Care Plan </h2> <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 mb-8"> {Object.entries(carePlan).map(([key, value]) => ( <motion.div key={key} whileHover={{ y: -5 }} className="bg-gray-700/30 border border-gray-600/30 rounded-lg p-4" > <h3 className="font-bold text-cyan-300 capitalize mb-2">{key}</h3> <p className="text-sm text-gray-200">{value}</p> </motion.div> ))} </div> <div className="bg-black/30 border border-cyan-500/20 rounded-lg p-5"> <h3 className="text-lg font-semibold mb-4 text-cyan-300">Sustainability Tip</h3> <p className="text-gray-200"> Reuse concise real log formats (e.g., RFC-style timestamps, syslog) as motifs to save creative effort and increase authenticity. </p> </div> </div> )} {activeTab === 'calendar' && ( <div className="bg-gray-800/50 border border-cyan-500/20 rounded-lg p-6"> <h2 className="text-2xl font-bold mb-6 flex items-center"> <Calendar className="mr-3 text-pink-400" /> Seasonal Calendar </h2> <div className="space-y-4"> {seasonalCalendar.map((week, index) => ( <motion.div key={index} initial={{ opacity: 0, x: -20 }} animate={{ opacity: 1, x: 0 }} transition={{ delay: index * 0.1 }} className="flex items-start p-4 bg-gray-700/30 border border-gray-600/30 rounded-lg" > <div className="mr-4"> <div className="w-10 h-10 rounded-full bg-cyan-900/30 border border-cyan-500/30 flex items-center justify-center"> <span className="font-bold text-cyan-300">W{week.week}</span> </div> </div> <div> <h3 className="font-semibold text-cyan-300">Week {week.week}</h3> <p className="text-gray-200">{week.task}</p> </div> </motion.div> ))} </div> </div> )} {activeTab === 'troubleshoot' && ( <div className="bg-gray-800/50 border border-cyan-500/20 rounded-lg p-6"> <h2 className="text-2xl font-bold mb-6 flex items-center"> <Bug className="mr-3 text-pink-400" /> Troubleshooting </h2> <div className="space-y-4"> {troubleshooting.map((item, index) => ( <motion.div key={index} initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} transition={{ delay: index * 0.1 }} className="p-4 bg-gray-700/30 border border-gray-600/30 rounded-lg" > <h3 className="font-semibold text-cyan-300 mb-2">Symptom: {item.symptom}</h3> <p className="text-gray-200">Fix: {item.fix}</p> </motion.div> ))} </div> </div> )} {activeTab === 'milestones' && ( <div className="bg-gray-800/50 border border-cyan-500/20 rounded-lg p-6"> <h2 className="text-2xl font-bold mb-6 flex items-center"> <Eye className="mr-3 text-pink-400" /> Milestones & Checkpoints </h2> <div className="relative pl-8 border-l-2 border-cyan-500/30"> {milestones.map((milestone, index) => ( <motion.div key={milestone.day} initial={{ opacity: 0, x: -20 }} animate={{ opacity: 1, x: 0 }} transition={{ delay: index * 0.1 }} className="mb-6 relative" > <div className="absolute -left-10 w-6 h-6 rounded-full bg-cyan-500 border-4 border-gray-900 flex items-center justify-center"> <Zap className="w-3 h-3 text-gray-900" /> </div> <div className="bg-gray-700/30 border border-gray-600/30 rounded-lg p-4"> <div className="flex justify-between items-start"> <div> <h3 className="font-bold text-cyan-300">Day {milestone.day}</h3> <p className="text-gray-200 mt-1">{milestone.task}</p> </div> <div className="flex space-x-2"> <button className="px-2 py-1 bg-gray-600/50 border border-gray-500/30 rounded text-xs hover:bg-gray-500/50 transition-colors"> Check </button> </div> </div> </div> </motion.div> ))} </div> </div> )} </motion.div> </main> </div> {/* Footer */} <footer className="border-t border-cyan-500/20 bg-gray-900/80 backdrop-blur-sm mt-12 py-6"> <div className="container mx-auto px-4 text-center text-gray-400 text-sm"> <p>DOKK — Digital Nightmare Toolkit | Cold Neon-Noir Project Management</p> <p className="mt-2">Proceeding with "metaphor" | Placebo pipes activated</p> </div> </footer> </div> ); }; export default App; - Initial Deployment

Browse files
Files changed (2) hide show
  1. README.md +7 -5
  2. index.html +588 -19
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Digital Nightmare 1
3
- emoji: 🌍
4
- colorFrom: yellow
5
- colorTo: gray
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: digital-nightmare-1
3
+ emoji: 🐳
4
+ colorFrom: purple
5
+ colorTo: yellow
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,588 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>DOKK Digital Nightmare Toolkit</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <script src="https://unpkg.com/lucide@latest"></script>
9
+ <style>
10
+ @import url('https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@400;500;600;700&display=swap');
11
+
12
+ body {
13
+ font-family: 'Roboto Mono', monospace;
14
+ background-color: #111827;
15
+ color: #a5f3fc;
16
+ }
17
+
18
+ .animate-pulse {
19
+ animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
20
+ }
21
+
22
+ @keyframes pulse {
23
+ 0%, 100% {
24
+ opacity: 1;
25
+ }
26
+ 50% {
27
+ opacity: 0.5;
28
+ }
29
+ }
30
+
31
+ .gradient-text {
32
+ background-image: linear-gradient(to right, #22d3ee, #ec4899);
33
+ -webkit-background-clip: text;
34
+ background-clip: text;
35
+ color: transparent;
36
+ }
37
+
38
+ /* Custom scrollbar */
39
+ ::-webkit-scrollbar {
40
+ width: 8px;
41
+ height: 8px;
42
+ }
43
+
44
+ ::-webkit-scrollbar-track {
45
+ background: #1f2937;
46
+ }
47
+
48
+ ::-webkit-scrollbar-thumb {
49
+ background: #06b6d4;
50
+ border-radius: 4px;
51
+ }
52
+
53
+ ::-webkit-scrollbar-thumb:hover {
54
+ background: #0891b2;
55
+ }
56
+ </style>
57
+ </head>
58
+ <body>
59
+ <div class="min-h-screen bg-gray-900 text-cyan-100">
60
+ <!-- Header -->
61
+ <header class="border-b border-cyan-500/30 bg-gray-900/80 backdrop-blur-sm sticky top-0 z-10">
62
+ <div class="container mx-auto px-4 py-3 flex items-center justify-between">
63
+ <div class="flex items-center space-x-2">
64
+ <div class="w-3 h-3 bg-pink-500 rounded-full animate-pulse"></div>
65
+ <h1 class="text-xl font-bold gradient-text">
66
+ DOKK — Digital Nightmare Toolkit
67
+ </h1>
68
+ </div>
69
+ <div class="flex space-x-4">
70
+ <button id="statusBtn" class="px-3 py-1 bg-cyan-900/50 border border-cyan-500/30 rounded text-xs hover:bg-cyan-800/50 transition-colors">
71
+ Status
72
+ </button>
73
+ </div>
74
+ </div>
75
+ </header>
76
+
77
+ <div class="container mx-auto px-4 py-6 flex flex-col lg:flex-row gap-6">
78
+ <!-- Sidebar -->
79
+ <aside class="lg:w-64 flex-shrink-0">
80
+ <div class="bg-gray-800/50 border border-cyan-500/20 rounded-lg p-4 mb-6">
81
+ <h2 class="text-lg font-semibold mb-3 flex items-center">
82
+ <i data-lucide="settings" class="mr-2 w-5 h-5 text-pink-400"></i>
83
+ Navigation
84
+ </h2>
85
+ <nav class="space-y-2">
86
+ <button data-tab="tas" class="w-full text-left px-3 py-2 rounded flex items-center transition-colors bg-cyan-900/30 text-cyan-300 border border-cyan-500/30">
87
+ <i data-lucide="file-text" class="mr-2 w-4 h-4"></i>
88
+ TAS Steps
89
+ </button>
90
+ <button data-tab="care" class="w-full text-left px-3 py-2 rounded flex items-center transition-colors hover:bg-gray-700/50">
91
+ <i data-lucide="palette" class="mr-2 w-4 h-4"></i>
92
+ Care Plan
93
+ </button>
94
+ <button data-tab="calendar" class="w-full text-left px-3 py-2 rounded flex items-center transition-colors hover:bg-gray-700/50">
95
+ <i data-lucide="calendar" class="mr-2 w-4 h-4"></i>
96
+ Calendar
97
+ </button>
98
+ <button data-tab="troubleshoot" class="w-full text-left px-3 py-2 rounded flex items-center transition-colors hover:bg-gray-700/50">
99
+ <i data-lucide="bug" class="mr-2 w-4 h-4"></i>
100
+ Troubleshoot
101
+ </button>
102
+ <button data-tab="milestones" class="w-full text-left px-3 py-2 rounded flex items-center transition-colors hover:bg-gray-700/50">
103
+ <i data-lucide="eye" class="mr-2 w-4 h-4"></i>
104
+ Milestones
105
+ </button>
106
+ </nav>
107
+ </div>
108
+
109
+ <!-- Live Log -->
110
+ <div class="bg-gray-800/50 border border-cyan-500/20 rounded-lg p-4">
111
+ <h3 class="text-md font-semibold mb-3 flex items-center">
112
+ <i data-lucide="code" class="mr-2 w-4 h-4 text-cyan-400"></i>
113
+ Live Log
114
+ </h3>
115
+ <div class="bg-black/50 border border-cyan-500/10 rounded p-3 h-48 overflow-y-auto text-xs">
116
+ <div class="mb-1">$ [2024-01-15 14:32:45] INFO: DOKK initialization complete</div>
117
+ <div class="mb-1">$ [2024-01-15 14:33:12] WARN: Cold start detected in neon-noir module</div>
118
+ <div class="mb-1">$ [2024-01-15 14:34:01] ERROR: Metaphor cascade failure - E404:MOTIF</div>
119
+ <div id="logContainer"></div>
120
+ </div>
121
+ <button id="addLogBtn" class="mt-3 w-full py-1 bg-cyan-900/30 border border-cyan-500/30 rounded text-xs hover:bg-cyan-800/30 transition-colors">
122
+ Add Entry
123
+ </button>
124
+ </div>
125
+ </aside>
126
+
127
+ <!-- Main Content -->
128
+ <main class="flex-1">
129
+ <!-- TAS Steps Content -->
130
+ <div id="tasContent" class="content-section">
131
+ <div class="bg-gray-800/50 border border-cyan-500/20 rounded-lg p-6">
132
+ <h2 class="text-2xl font-bold mb-6 flex items-center">
133
+ <i data-lucide="file-text" class="mr-3 text-pink-400"></i>
134
+ TAS Steps
135
+ </h2>
136
+
137
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-4 mb-8">
138
+ <div data-step="1" class="step-card bg-cyan-900/20 border-cyan-500/50">
139
+ <div class="flex justify-between items-start">
140
+ <div>
141
+ <h3 class="font-bold text-cyan-300">TAS-1</h3>
142
+ <h4 class="font-semibold mt-1">Define Micro-Project Scope</h4>
143
+ <p class="text-sm text-gray-300 mt-2">Core premise, protagonist profile, constraints</p>
144
+ </div>
145
+ <i data-lucide="chevron-right" class="w-5 h-5 text-cyan-400"></i>
146
+ </div>
147
+ </div>
148
+ <div data-step="2" class="step-card bg-gray-700/30 border-gray-600/30 hover:border-cyan-500/30">
149
+ <div class="flex justify-between items-start">
150
+ <div>
151
+ <h3 class="font-bold text-cyan-300">TAS-2</h3>
152
+ <h4 class="font-semibold mt-1">Create Story Bible</h4>
153
+ <p class="text-sm text-gray-300 mt-2">Setting rules, tech ecosystem, key artifacts</p>
154
+ </div>
155
+ <i data-lucide="chevron-right" class="w-5 h-5 text-cyan-400"></i>
156
+ </div>
157
+ </div>
158
+ <div data-step="3" class="step-card bg-gray-700/30 border-gray-600/30 hover:border-cyan-500/30">
159
+ <div class="flex justify-between items-start">
160
+ <div>
161
+ <h3 class="font-bold text-cyan-300">TAS-3</h3>
162
+ <h4 class="font-semibold mt-1">Break into Beats</h4>
163
+ <p class="text-sm text-gray-300 mt-2">3 scenes: inciting glitch, cascade, reveal</p>
164
+ </div>
165
+ <i data-lucide="chevron-right" class="w-5 h-5 text-cyan-400"></i>
166
+ </div>
167
+ </div>
168
+ <div data-step="4" class="step-card bg-gray-700/30 border-gray-600/30 hover:border-cyan-500/30">
169
+ <div class="flex justify-between items-start">
170
+ <div>
171
+ <h3 class="font-bold text-cyan-300">TAS-4</h3>
172
+ <h4 class="font-semibold mt-1">Draft Prompts/Templates</h4>
173
+ <p class="text-sm text-gray-300 mt-2">Generation & revision templates</p>
174
+ </div>
175
+ <i data-lucide="chevron-right" class="w-5 h-5 text-cyan-400"></i>
176
+ </div>
177
+ </div>
178
+ <div data-step="5" class="step-card bg-gray-700/30 border-gray-600/30 hover:border-cyan-500/30">
179
+ <div class="flex justify-between items-start">
180
+ <div>
181
+ <h3 class="font-bold text-cyan-300">TAS-5</h3>
182
+ <h4 class="font-semibold mt-1">Design Minimal UI</h4>
183
+ <p class="text-sm text-gray-300 mt-2">Editor, log view, versioning</p>
184
+ </div>
185
+ <i data-lucide="chevron-right" class="w-5 h-5 text-cyan-400"></i>
186
+ </div>
187
+ </div>
188
+ <div data-step="6" class="step-card bg-gray-700/30 border-gray-600/30 hover:border-cyan-500/30">
189
+ <div class="flex justify-between items-start">
190
+ <div>
191
+ <h3 class="font-bold text-cyan-300">TAS-6</h3>
192
+ <h4 class="font-semibold mt-1">Implement Generation Pipeline</h4>
193
+ <p class="text-sm text-gray-300 mt-2">Prompt runner, temperature control, caching</p>
194
+ </div>
195
+ <i data-lucide="chevron-right" class="w-5 h-5 text-cyan-400"></i>
196
+ </div>
197
+ </div>
198
+ <div data-step="7" class="step-card bg-gray-700/30 border-gray-600/30 hover:border-cyan-500/30">
199
+ <div class="flex justify-between items-start">
200
+ <div>
201
+ <h3 class="font-bold text-cyan-300">TAS-7</h3>
202
+ <h4 class="font-semibold mt-1">Integrate Evaluation Loop</h4>
203
+ <p class="text-sm text-gray-300 mt-2">Unit tests, rubrics, human-in-the-loop</p>
204
+ </div>
205
+ <i data-lucide="chevron-right" class="w-5 h-5 text-cyan-400"></i>
206
+ </div>
207
+ </div>
208
+ <div data-step="8" class="step-card bg-gray-700/30 border-gray-600/30 hover:border-cyan-500/30">
209
+ <div class="flex justify-between items-start">
210
+ <div>
211
+ <h3 class="font-bold text-cyan-300">TAS-8</h3>
212
+ <h4 class="font-semibold mt-1">Polish & Publish</h4>
213
+ <p class="text-sm text-gray-300 mt-2">Tech check, copy edit, formatting</p>
214
+ </div>
215
+ <i data-lucide="chevron-right" class="w-5 h-5 text-cyan-400"></i>
216
+ </div>
217
+ </div>
218
+ </div>
219
+
220
+ <div class="bg-black/30 border border-cyan-500/20 rounded-lg p-5">
221
+ <div class="flex items-center justify-between mb-4">
222
+ <h3 class="text-lg font-semibold text-cyan-300">
223
+ Prompt for TAS-1
224
+ </h3>
225
+ <div class="flex space-x-2">
226
+ <button class="px-3 py-1 bg-cyan-900/30 border border-cyan-500/30 rounded text-xs flex items-center hover:bg-cyan-800/30 transition-colors">
227
+ <i data-lucide="play" class="w-3 h-3 mr-1"></i> Run
228
+ </button>
229
+ <button class="px-3 py-1 bg-gray-700/50 border border-gray-600/30 rounded text-xs flex items-center hover:bg-gray-600/50 transition-colors">
230
+ <i data-lucide="save" class="w-3 h-3 mr-1"></i> Save
231
+ </button>
232
+ </div>
233
+ </div>
234
+ <div class="bg-gray-900/50 border border-gray-700/30 rounded p-4 text-sm">
235
+ <pre class="whitespace-pre-wrap font-sans" id="promptContent">
236
+ Produce a 1,000-word 'Digital Nightmare' short story set in a cold neon-noir city. Protagonist: mid-30s backend engineer with a failing critical service and a moral choice. Constraints: 3 scenes, ~330 words each, keep technical references plausible but accessible. Tone: clinical, anxious, elegiac. Include one log snippet and one error code as motif.
237
+ </pre>
238
+ </div>
239
+ </div>
240
+ </div>
241
+ </div>
242
+
243
+ <!-- Care Plan Content -->
244
+ <div id="careContent" class="content-section hidden">
245
+ <div class="bg-gray-800/50 border border-cyan-500/20 rounded-lg p-6">
246
+ <h2 class="text-2xl font-bold mb-6 flex items-center">
247
+ <i data-lucide="palette" class="mr-3 text-pink-400"></i>
248
+ Care Plan
249
+ </h2>
250
+
251
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 mb-8">
252
+ <div class="bg-gray-700/30 border border-gray-600/30 rounded-lg p-4">
253
+ <h3 class="font-bold text-cyan-300 capitalize mb-2">water</h3>
254
+ <p class="text-sm text-gray-200">Short iterative feedback cycles (daily micro-revisions)</p>
255
+ </div>
256
+ <div class="bg-gray-700/30 border border-gray-600/30 rounded-lg p-4">
257
+ <h3 class="font-bold text-cyan-300 capitalize mb-2">light</h3>
258
+ <p class="text-sm text-gray-200">High contrast visuals: deep indigo backgrounds, cyan/neon-pink accents</p>
259
+ </div>
260
+ <div class="bg-gray-700/30 border border-gray-600/30 rounded-lg p-4">
261
+ <h3 class="font-bold text-cyan-300 capitalize mb-2">soil</h3>
262
+ <p class="text-sm text-gray-200">Dense, layered motifs — logs, cables, rain-slick streets; keep texture minimal</p>
263
+ </div>
264
+ <div class="bg-gray-700/30 border border-gray-600/30 rounded-lg p-4">
265
+ <h3 class="font-bold text-cyan-300 capitalize mb-2">feeding</h3>
266
+ <p class="text-sm text-gray-200">Feed with real engineering artifacts: authentic log formats, concise error codes, 2–3 sensory anchors per scene</p>
267
+ </div>
268
+ </div>
269
+
270
+ <div class="bg-black/30 border border-cyan-500/20 rounded-lg p-5">
271
+ <h3 class="text-lg font-semibold mb-4 text-cyan-300">Sustainability Tip</h3>
272
+ <p class="text-gray-200">
273
+ Reuse concise real log formats (e.g., RFC-style timestamps, syslog) as motifs
274
+ to save creative effort and increase authenticity.
275
+ </p>
276
+ </div>
277
+ </div>
278
+ </div>
279
+
280
+ <!-- Calendar Content -->
281
+ <div id="calendarContent" class="content-section hidden">
282
+ <div class="bg-gray-800/50 border border-cyan-500/20 rounded-lg p-6">
283
+ <h2 class="text-2xl font-bold mb-6 flex items-center">
284
+ <i data-lucide="calendar" class="mr-3 text-pink-400"></i>
285
+ Seasonal Calendar
286
+ </h2>
287
+
288
+ <div class="space-y-4">
289
+ <div class="flex items-start p-4 bg-gray-700/30 border border-gray-600/30 rounded-lg">
290
+ <div class="mr-4">
291
+ <div class="w-10 h-10 rounded-full bg-cyan-900/30 border border-cyan-500/30 flex items-center justify-center">
292
+ <span class="font-bold text-cyan-300">W1</span>
293
+ </div>
294
+ </div>
295
+ <div>
296
+ <h3 class="font-semibold text-cyan-300">Week 1</h3>
297
+ <p class="text-gray-200">Scope, story bible, and beat sheet</p>
298
+ </div>
299
+ </div>
300
+ <div class="flex items-start p-4 bg-gray-700/30 border border-gray-600/30 rounded-lg">
301
+ <div class="mr-4">
302
+ <div class="w-10 h-10 rounded-full bg-cyan-900/30 border border-cyan-500/30 flex items-center justify-center">
303
+ <span class="font-bold text-cyan-300">W2</span>
304
+ </div>
305
+ </div>
306
+ <div>
307
+ <h3 class="font-semibold text-cyan-300">Week 2</h3>
308
+ <p class="text-gray-200">Draft scene 1–3 (one per 1–2 days), gather log snippets</p>
309
+ </div>
310
+ </div>
311
+ <div class="flex items-start p-4 bg-gray-700/30 border border-gray-600/30 rounded-lg">
312
+ <div class="mr-4">
313
+ <div class="w-10 h-10 rounded-full bg-cyan-900/30 border border-cyan-500/30 flex items-center justify-center">
314
+ <span class="font-bold text-cyan-300">W3</span>
315
+ </div>
316
+ </div>
317
+ <div>
318
+ <h3 class="font-semibold text-cyan-300">Week 3</h3>
319
+ <p class="text-gray-200">Revise for tone, tech plausibility, and pacing</p>
320
+ </div>
321
+ </div>
322
+ <div class="flex items-start p-4 bg-gray-700/30 border border-gray-600/30 rounded-lg">
323
+ <div class="mr-4">
324
+ <div class="w-10 h-10 rounded-full bg-cyan-900/30 border border-cyan-500/30 flex items-center justify-center">
325
+ <span class="font-bold text-cyan-300">W4</span>
326
+ </div>
327
+ </div>
328
+ <div>
329
+ <h3 class="font-semibold text-cyan-300">Week 4</h3>
330
+ <p class="text-gray-200">Polish, accessibility checks, export + publish</p>
331
+ </div>
332
+ </div>
333
+ </div>
334
+ </div>
335
+ </div>
336
+
337
+ <!-- Troubleshoot Content -->
338
+ <div id="troubleshootContent" class="content-section hidden">
339
+ <div class="bg-gray-800/50 border border-cyan-500/20 rounded-lg p-6">
340
+ <h2 class="text-2xl font-bold mb-6 flex items-center">
341
+ <i data-lucide="bug" class="mr-3 text-pink-400"></i>
342
+ Troubleshooting
343
+ </h2>
344
+
345
+ <div class="space-y-4">
346
+ <div class="p-4 bg-gray-700/30 border border-gray-600/30 rounded-lg">
347
+ <h3 class="font-semibold text-cyan-300 mb-2">Symptom: Atmosphere feels flat</h3>
348
+ <p class="text-gray-200">Fix: Increase neon contrasts, add weather (cold rain, steam) and log-motif repetitions</p>
349
+ </div>
350
+ <div class="p-4 bg-gray-700/30 border border-gray-600/30 rounded-lg">
351
+ <h3 class="font-semibold text-cyan-300 mb-2">Symptom: Engineer reader disengaged</h3>
352
+ <p class="text-gray-200">Fix: Add concrete constraints (SLA, countdown, failing test) and precise tech terms</p>
353
+ </div>
354
+ <div class="p-4 bg-gray-700/30 border border-gray-600/30 rounded-lg">
355
+ <h3 class="font-semibold text-cyan-300 mb-2">Symptom: Story too technical</h3>
356
+ <p class="text-gray-200">Fix: Add sensory anchors, shorten jargon lines, insert emotional beats</p>
357
+ </div>
358
+ <div class="p-4 bg-gray-700/30 border border-gray-600/30 rounded-lg">
359
+ <h3 class="font-semibold text-cyan-300 mb-2">Symptom: Color palette low contrast</h3>
360
+ <p class="text-gray-200">Fix: Use #0B1020 (indigo) background with #00E5FF (cyan) and #FF2D95 (neon-pink) accents; ensure text ≥ AA</p>
361
+ </div>
362
+ </div>
363
+ </div>
364
+ </div>
365
+
366
+ <!-- Milestones Content -->
367
+ <div id="milestonesContent" class="content-section hidden">
368
+ <div class="bg-gray-800/50 border border-cyan-500/20 rounded-lg p-6">
369
+ <h2 class="text-2xl font-bold mb-6 flex items-center">
370
+ <i data-lucide="eye" class="mr-3 text-pink-400"></i>
371
+ Milestones & Checkpoints
372
+ </h2>
373
+
374
+ <div class="relative pl-8 border-l-2 border-cyan-500/30">
375
+ <div class="mb-6 relative">
376
+ <div class="absolute -left-10 w-6 h-6 rounded-full bg-cyan-500 border-4 border-gray-900 flex items-center justify-center">
377
+ <i data-lucide="zap" class="w-3 h-3 text-gray-900"></i>
378
+ </div>
379
+ <div class="bg-gray-700/30 border border-gray-600/30 rounded-lg p-4">
380
+ <div class="flex justify-between items-start">
381
+ <div>
382
+ <h3 class="font-bold text-cyan-300">Day 1</h3>
383
+ <p class="text-gray-200 mt-1">Confirm bible and beats</p>
384
+ </div>
385
+ <div class="flex space-x-2">
386
+ <button class="px-2 py-1 bg-gray-600/50 border border-gray-500/30 rounded text-xs hover:bg-gray-500/50 transition-colors">
387
+ Check
388
+ </button>
389
+ </div>
390
+ </div>
391
+ </div>
392
+ </div>
393
+ <div class="mb-6 relative">
394
+ <div class="absolute -left-10 w-6 h-6 rounded-full bg-cyan-500 border-4 border-gray-900 flex items-center justify-center">
395
+ <i data-lucide="zap" class="w-3 h-3 text-gray-900"></i>
396
+ </div>
397
+ <div class="bg-gray-700/30 border border-gray-600/30 rounded-lg p-4">
398
+ <div class="flex justify-between items-start">
399
+ <div>
400
+ <h3 class="font-bold text-cyan-300">Day 3</h3>
401
+ <p class="text-gray-200 mt-1">Scene 1 draft</p>
402
+ </div>
403
+ <div class="flex space-x-2">
404
+ <button class="px-2 py-1 bg-gray-600/50 border border-gray-500/30 rounded text-xs hover:bg-gray-500/50 transition-colors">
405
+ Check
406
+ </button>
407
+ </div>
408
+ </div>
409
+ </div>
410
+ </div>
411
+ <div class="mb-6 relative">
412
+ <div class="absolute -left-10 w-6 h-6 rounded-full bg-cyan-500 border-4 border-gray-900 flex items-center justify-center">
413
+ <i data-lucide="zap" class="w-3 h-3 text-gray-900"></i>
414
+ </div>
415
+ <div class="bg-gray-700/30 border border-gray-600/30 rounded-lg p-4">
416
+ <div class="flex justify-between items-start">
417
+ <div>
418
+ <h3 class="font-bold text-cyan-300">Day 5</h3>
419
+ <p class="text-gray-200 mt-1">Scene 2 draft</p>
420
+ </div>
421
+ <div class="flex space-x-2">
422
+ <button class="px-2 py-1 bg-gray-600/50 border border-gray-500/30 rounded text-xs hover:bg-gray-500/50 transition-colors">
423
+ Check
424
+ </button>
425
+ </div>
426
+ </div>
427
+ </div>
428
+ </div>
429
+ <div class="mb-6 relative">
430
+ <div class="absolute -left-10 w-6 h-6 rounded-full bg-cyan-500 border-4 border-gray-900 flex items-center justify-center">
431
+ <i data-lucide="zap" class="w-3 h-3 text-gray-900"></i>
432
+ </div>
433
+ <div class="bg-gray-700/30 border border-gray-600/30 rounded-lg p-4">
434
+ <div class="flex justify-between items-start">
435
+ <div>
436
+ <h3 class="font-bold text-cyan-300">Day 7</h3>
437
+ <p class="text-gray-200 mt-1">Scene 3 draft</p>
438
+ </div>
439
+ <div class="flex space-x-2">
440
+ <button class="px-2 py-1 bg-gray-600/50 border border-gray-500/30 rounded text-xs hover:bg-gray-500/50 transition-colors">
441
+ Check
442
+ </button>
443
+ </div>
444
+ </div>
445
+ </div>
446
+ </div>
447
+ <div class="mb-6 relative">
448
+ <div class="absolute -left-10 w-6 h-6 rounded-full bg-cyan-500 border-4 border-gray-900 flex items-center justify-center">
449
+ <i data-lucide="zap" class="w-3 h-3 text-gray-900"></i>
450
+ </div>
451
+ <div class="bg-gray-700/30 border border-gray-600/30 rounded-lg p-4">
452
+ <div class="flex justify-between items-start">
453
+ <div>
454
+ <h3 class="font-bold text-cyan-300">Day 10</h3>
455
+ <p class="text-gray-200 mt-1">Revision pass</p>
456
+ </div>
457
+ <div class="flex space-x-2">
458
+ <button class="px-2 py-1 bg-gray-600/50 border border-gray-500/30 rounded text-xs hover:bg-gray-500/50 transition-colors">
459
+ Check
460
+ </button>
461
+ </div>
462
+ </div>
463
+ </div>
464
+ </div>
465
+ <div class="mb-6 relative">
466
+ <div class="absolute -left-10 w-6 h-6 rounded-full bg-cyan-500 border-4 border-gray-900 flex items-center justify-center">
467
+ <i data-lucide="zap" class="w-3 h-3 text-gray-900"></i>
468
+ </div>
469
+ <div class="bg-gray-700/30 border border-gray-600/30 rounded-lg p-4">
470
+ <div class="flex justify-between items-start">
471
+ <div>
472
+ <h3 class="font-bold text-cyan-300">Day 14</h3>
473
+ <p class="text-gray-200 mt-1">Final polish & publish</p>
474
+ </div>
475
+ <div class="flex space-x-2">
476
+ <button class="px-2 py-1 bg-gray-600/50 border border-gray-500/30 rounded text-xs hover:bg-gray-500/50 transition-colors">
477
+ Check
478
+ </button>
479
+ </div>
480
+ </div>
481
+ </div>
482
+ </div>
483
+ </div>
484
+ </div>
485
+ </div>
486
+ </main>
487
+ </div>
488
+
489
+ <!-- Footer -->
490
+ <footer class="border-t border-cyan-500/20 bg-gray-900/80 backdrop-blur-sm mt-12 py-6">
491
+ <div class="container mx-auto px-4 text-center text-gray-400 text-sm">
492
+ <p>DOKK — Digital Nightmare Toolkit | Cold Neon-Noir Project Management</p>
493
+ <p class="mt-2">Proceeding with "metaphor" | Placebo pipes activated</p>
494
+ </div>
495
+ </footer>
496
+ </div>
497
+
498
+ <script>
499
+ // Initialize Lucide icons
500
+ lucide.createIcons();
501
+
502
+ // Tab switching functionality
503
+ document.querySelectorAll('[data-tab]').forEach(tab => {
504
+ tab.addEventListener('click', () => {
505
+ // Remove active class from all tabs and content sections
506
+ document.querySelectorAll('[data-tab]').forEach(t => {
507
+ t.classList.remove('bg-cyan-900/30', 'text-cyan-300', 'border', 'border-cyan-500/30');
508
+ t.classList.add('hover:bg-gray-700/50');
509
+ });
510
+
511
+ document.querySelectorAll('.content-section').forEach(section => {
512
+ section.classList.add('hidden');
513
+ });
514
+
515
+ // Add active class to clicked tab
516
+ tab.classList.add('bg-cyan-900/30', 'text-cyan-300', 'border', 'border-cyan-500/30');
517
+ tab.classList.remove('hover:bg-gray-700/50');
518
+
519
+ // Show corresponding content
520
+ const tabId = tab.getAttribute('data-tab');
521
+ document.getElementById(`${tabId}Content`).classList.remove('hidden');
522
+ });
523
+ });
524
+
525
+ // Step card selection functionality
526
+ document.querySelectorAll('.step-card').forEach(card => {
527
+ card.addEventListener('click', () => {
528
+ // Remove active class from all cards
529
+ document.querySelectorAll('.step-card').forEach(c => {
530
+ c.classList.remove('bg-cyan-900/20', 'border-cyan-500/50');
531
+ c.classList.add('bg-gray-700/30', 'border-gray-600/30', 'hover:border-cyan-500/30');
532
+ });
533
+
534
+ // Add active class to clicked card
535
+ card.classList.add('bg-cyan-900/20', 'border-cyan-500/50');
536
+ card.classList.remove('bg-gray-700/30', 'border-gray-600/30', 'hover:border-cyan-500/30');
537
+
538
+ // Update prompt content
539
+ const stepId = card.getAttribute('data-step');
540
+ updatePromptContent(stepId);
541
+
542
+ // Add log entry
543
+ addLog(`TAS-${stepId} activated`);
544
+ });
545
+ });
546
+
547
+ // Status button functionality
548
+ document.getElementById('statusBtn').addEventListener('click', () => {
549
+ addLog("System status: Operational");
550
+ });
551
+
552
+ // Add log button functionality
553
+ document.getElementById('addLogBtn').addEventListener('click', () => {
554
+ addLog("Manual log entry added");
555
+ });
556
+
557
+ // Function to update prompt content based on selected step
558
+ function updatePromptContent(stepId) {
559
+ const prompts = [
560
+ "Produce a 1,000-word 'Digital Nightmare' short story set in a cold neon-noir city. Protagonist: mid-30s backend engineer with a failing critical service and a moral choice. Constraints: 3 scenes, ~330 words each, keep technical references plausible but accessible. Tone: clinical, anxious, elegiac. Include one log snippet and one error code as motif.",
561
+ "Return a compact story bible (bulleted) with: city sensory rules, network/stack basics used, protagonist backstory, antagonist forces (corp, rogue AI, infrastructure), three artifacts (log, key, terminal). Keep items terse for use in prompts.",
562
+ "Output a scene-by-scene beat sheet with scene goals, stakes, physical location, emotional arc, key lines or images to include (max 6 bullets per scene).",
563
+ "Generate 3 reusable prompts/templates: seed draft prompt, tighten-and-clarify revision prompt, technical-accuracy check prompt. Each must include explicit instructions for length, tone, and placeholders for variables (e.g., {log_snippet}).",
564
+ "Describe a minimal editor UI for rapid drafting: main editor, split log/terminal pane, version history, quick-insert snippet palette. Provide keyboard shortcuts and accessible color contrast values (WCAG AA).",
565
+ "Provide implementation steps and CLI commands to run generation: script to call model API with temperature presets, caching strategy, prompt concatenation order, and example environment variables. Include error handling pseudocode.",
566
+ "Create an evaluation rubric (10–50 pts) for automated checks: coherence, plausibility, emotional arc, jargon clarity, pacing, originality. Add unit-test-style examples to detect hallucinated tech facts.",
567
+ "Produce a final checklist for polish and publication: tech fact verification, log formatting, copyedit pass, metadata tags, and export templates (Markdown, HTML)."
568
+ ];
569
+
570
+ document.getElementById('promptContent').textContent = prompts[stepId - 1];
571
+ document.querySelector('.bg-black/30 h3').innerHTML = `Prompt for TAS-${stepId}`;
572
+ }
573
+
574
+ // Function to add log entries
575
+ function addLog(message) {
576
+ const timestamp = new Date().toISOString().slice(0, 19).replace('T', ' ');
577
+ const logContainer = document.getElementById('logContainer');
578
+ const logEntry = document.createElement('div');
579
+ logEntry.className = 'mb-1';
580
+ logEntry.innerHTML = `<span class="text-cyan-300">$</span> [${timestamp}] ${message}`;
581
+ logContainer.appendChild(logEntry);
582
+
583
+ // Scroll to bottom of log container
584
+ logContainer.parentElement.scrollTop = logContainer.parentElement.scrollHeight;
585
+ }
586
+ </script>
587
+ <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=dfbdokk/digital-nightmare-1" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
588
+ </html>