Changes to taskai.scroll.pub

root
root
14 days ago
Initial commit
body.html
Changed around line 1
+
+

TaskAI

+

Your AI-powered task management solution

+
+
+
+
+
+

To Do

+
+
+
+
+
+
+
+
+

In Progress

+
+
+
+
+

Done

+
+
+
+
+
+
+ ×
+

Task Details

+
+
+
+
+
+
+
+
+

TaskAI - Simplify your workflow with AI assistance

+
index.scroll
Changed around line 1
+ buildHtml
+ baseUrl https://taskai.scroll.pub
+ metaTags
+ editButton /edit.html
+ title TaskAI - AI-Powered Task Management
+ style.css
+ body.html
+ script.js
prompt.json
Changed around line 1
+ {
+ "id": "f0f3da6d-f38f-49ba-9f0a-5b9d9b16531b",
+ "object": "chat.completion",
+ "created": 1736320330,
+ "model": "deepseek-chat",
+ "choices": [
+ {
+ "index": 0,
+ "message": {
+ "role": "assistant",
+ "content": "---domain---\ntaskai.scroll.pub\n---index.scroll---\nbuildHtml\nbaseUrl https://taskai.scroll.pub\nmetaTags\neditButton /edit.html\ntitle TaskAI - AI-Powered Task Management\nstyle.css\nbody.html\nscript.js\n---body.html---\n
\n

TaskAI

\n

Your AI-powered task management solution

\n
\n\n
\n
\n
\n

To Do

\n
\n \n \n
\n
\n
\n\n
\n

In Progress

\n
\n
\n\n
\n

Done

\n
\n
\n
\n\n
\n
\n ×\n

Task Details

\n \n \n \n
\n
\n
\n\n
\n

TaskAI - Simplify your workflow with AI assistance

\n
\n---style.css---\n:root {\n --primary-color: #4a90e2;\n --secondary-color: #50e3c2;\n --background-color: #f5f7fa;\n --text-color: #333;\n --column-bg: #fff;\n --shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n}\n\nbody {\n font-family: 'Segoe UI', sans-serif;\n background-color: var(--background-color);\n color: var(--text-color);\n line-height: 1.6;\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n}\n\nheader {\n background: var(--primary-color);\n color: white;\n padding: 2rem;\n text-align: center;\n}\n\nheader h1 {\n font-size: 2.5rem;\n margin-bottom: 0.5rem;\n}\n\n.board {\n display: flex;\n gap: 1rem;\n padding: 2rem;\n flex: 1;\n}\n\n.column {\n background: var(--column-bg);\n border-radius: 8px;\n padding: 1rem;\n width: 100%;\n box-shadow: var(--shadow);\n}\n\n.column h2 {\n margin-bottom: 1rem;\n color: var(--primary-color);\n}\n\n.add-task {\n display: flex;\n gap: 0.5rem;\n margin-bottom: 1rem;\n}\n\n.add-task input {\n flex: 1;\n padding: 0.5rem;\n border: 1px solid #ddd;\n border-radius: 4px;\n}\n\n.add-task button {\n background: var(--secondary-color);\n border: none;\n color: white;\n padding: 0.5rem 1rem;\n border-radius: 4px;\n cursor: pointer;\n}\n\n.tasks {\n min-height: 100px;\n}\n\n.task {\n background: white;\n padding: 1rem;\n margin-bottom: 0.5rem;\n border-radius: 4px;\n box-shadow: var(--shadow);\n cursor: pointer;\n}\n\n.modal {\n display: none;\n position: fixed;\n z-index: 1;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0,0,0,0.5);\n}\n\n.modal-content {\n background-color: var(--column-bg);\n margin: 15% auto;\n padding: 2rem;\n border-radius: 8px;\n width: 90%;\n max-width: 500px;\n position: relative;\n}\n\n.close {\n position: absolute;\n right: 1rem;\n top: 1rem;\n font-size: 1.5rem;\n cursor: pointer;\n}\n\nfooter {\n text-align: center;\n padding: 1rem;\n background: var(--primary-color);\n color: white;\n}\n\n@media (max-width: 768px) {\n .board {\n flex-direction: column;\n }\n}\n---script.js---\nlet currentTask = null;\n\nfunction addTask() {\n const taskInput = document.getElementById('new-task');\n const taskText = taskInput.value.trim();\n \n if (taskText) {\n const task = {\n id: Date.now(),\n text: taskText,\n description: '',\n status: 'todo'\n };\n \n renderTask(task);\n taskInput.value = '';\n }\n}\n\nfunction renderTask(task) {\n const taskElement = document.createElement('div');\n taskElement.className = 'task';\n taskElement.textContent = task.text;\n taskElement.dataset.id = task.id;\n \n taskElement.addEventListener('click', () => openTaskModal(task));\n \n document.querySelector(`#${task.status} .tasks`).appendChild(taskElement);\n}\n\nfunction openTaskModal(task) {\n currentTask = task;\n const modal = document.getElementById('task-modal');\n const description = document.getElementById('task-description');\n \n description.value = task.description;\n modal.style.display = 'block';\n \n document.querySelector('.close').onclick = () => modal.style.display = 'none';\n window.onclick = (event) => {\n if (event.target === modal) {\n modal.style.display = 'none';\n }\n };\n}\n\nfunction saveTask() {\n const description = document.getElementById('task-description').value;\n currentTask.description = description;\n \n const taskElement = document.querySelector(`[data-id=\"${currentTask.id}\"]`);\n if (taskElement) {\n taskElement.textContent = currentTask.text;\n if (description) {\n taskElement.textContent += ' - ' + description;\n }\n }\n \n document.getElementById('task-modal').style.display = 'none';\n}\n\nfunction generateDescription() {\n const description = document.getElementById('task-description');\n // This is where you would call your AI API\n // For now, we'll just add a placeholder text\n description.value = \"AI-generated description placeholder. This would be replaced with actual AI-generated content.\";\n}\n---end---"
+ },
+ "logprobs": null,
+ "finish_reason": "stop"
+ }
+ ],
+ "usage": {
+ "prompt_tokens": 253,
+ "completion_tokens": 1498,
+ "total_tokens": 1751,
+ "prompt_cache_hit_tokens": 0,
+ "prompt_cache_miss_tokens": 253
+ },
+ "system_fingerprint": "fp_3a5770e1b4"
+ }
readme.scroll
Changed around line 1
+ # taskai.scroll.pub
+
+ website generated by DeepSeek from prompt: 做一个类似于trello的网站,任务可以添加描述,并且可以调用人工智能API帮写
script.js
Changed around line 1
+ let currentTask = null;
+
+ function addTask() {
+ const taskInput = document.getElementById('new-task');
+ const taskText = taskInput.value.trim();
+
+ if (taskText) {
+ const task = {
+ id: Date.now(),
+ text: taskText,
+ description: '',
+ status: 'todo'
+ };
+
+ renderTask(task);
+ taskInput.value = '';
+ }
+ }
+
+ function renderTask(task) {
+ const taskElement = document.createElement('div');
+ taskElement.className = 'task';
+ taskElement.textContent = task.text;
+ taskElement.dataset.id = task.id;
+
+ taskElement.addEventListener('click', () => openTaskModal(task));
+
+ document.querySelector(`#${task.status} .tasks`).appendChild(taskElement);
+ }
+
+ function openTaskModal(task) {
+ currentTask = task;
+ const modal = document.getElementById('task-modal');
+ const description = document.getElementById('task-description');
+
+ description.value = task.description;
+ modal.style.display = 'block';
+
+ document.querySelector('.close').onclick = () => modal.style.display = 'none';
+ window.onclick = (event) => {
+ if (event.target === modal) {
+ modal.style.display = 'none';
+ }
+ };
+ }
+
+ function saveTask() {
+ const description = document.getElementById('task-description').value;
+ currentTask.description = description;
+
+ const taskElement = document.querySelector(`[data-id="${currentTask.id}"]`);
+ if (taskElement) {
+ taskElement.textContent = currentTask.text;
+ if (description) {
+ taskElement.textContent += ' - ' + description;
+ }
+ }
+
+ document.getElementById('task-modal').style.display = 'none';
+ }
+
+ function generateDescription() {
+ const description = document.getElementById('task-description');
+ // This is where you would call your AI API
+ // For now, we'll just add a placeholder text
+ description.value = "AI-generated description placeholder. This would be replaced with actual AI-generated content.";
+ }
style.css
Changed around line 1
+ :root {
+ --primary-color: #4a90e2;
+ --secondary-color: #50e3c2;
+ --background-color: #f5f7fa;
+ --text-color: #333;
+ --column-bg: #fff;
+ --shadow: 0 2px 4px rgba(0,0,0,0.1);
+ }
+
+ * {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+ }
+
+ body {
+ font-family: 'Segoe UI', sans-serif;
+ background-color: var(--background-color);
+ color: var(--text-color);
+ line-height: 1.6;
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+ }
+
+ header {
+ background: var(--primary-color);
+ color: white;
+ padding: 2rem;
+ text-align: center;
+ }
+
+ header h1 {
+ font-size: 2.5rem;
+ margin-bottom: 0.5rem;
+ }
+
+ .board {
+ display: flex;
+ gap: 1rem;
+ padding: 2rem;
+ flex: 1;
+ }
+
+ .column {
+ background: var(--column-bg);
+ border-radius: 8px;
+ padding: 1rem;
+ width: 100%;
+ box-shadow: var(--shadow);
+ }
+
+ .column h2 {
+ margin-bottom: 1rem;
+ color: var(--primary-color);
+ }
+
+ .add-task {
+ display: flex;
+ gap: 0.5rem;
+ margin-bottom: 1rem;
+ }
+
+ .add-task input {
+ flex: 1;
+ padding: 0.5rem;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ }
+
+ .add-task button {
+ background: var(--secondary-color);
+ border: none;
+ color: white;
+ padding: 0.5rem 1rem;
+ border-radius: 4px;
+ cursor: pointer;
+ }
+
+ .tasks {
+ min-height: 100px;
+ }
+
+ .task {
+ background: white;
+ padding: 1rem;
+ margin-bottom: 0.5rem;
+ border-radius: 4px;
+ box-shadow: var(--shadow);
+ cursor: pointer;
+ }
+
+ .modal {
+ display: none;
+ position: fixed;
+ z-index: 1;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(0,0,0,0.5);
+ }
+
+ .modal-content {
+ background-color: var(--column-bg);
+ margin: 15% auto;
+ padding: 2rem;
+ border-radius: 8px;
+ width: 90%;
+ max-width: 500px;
+ position: relative;
+ }
+
+ .close {
+ position: absolute;
+ right: 1rem;
+ top: 1rem;
+ font-size: 1.5rem;
+ cursor: pointer;
+ }
+
+ footer {
+ text-align: center;
+ padding: 1rem;
+ background: var(--primary-color);
+ color: white;
+ }
+
+ @media (max-width: 768px) {
+ .board {
+ flex-direction: column;
+ }
+ }