diff --git a/docs/index.html b/docs/index.html index bb37a32..a51d445 100644 --- a/docs/index.html +++ b/docs/index.html @@ -90,6 +90,57 @@ .hero .install-block .btn:hover { opacity: .85; } .cta-block { margin-top: 0; } + /* ── Hero stats bar ── */ + .hero .stats { + display: flex; justify-content: center; gap: 40px; margin-top: 44px; + flex-wrap: wrap; + } + .hero .stats .stat { text-align: center; } + .hero .stats .stat .v { + font-size: 1.5rem; font-weight: 800; color: var(--accent); + font-family: var(--font-mono); letter-spacing: -.02em; + } + .hero .stats .stat .k { + font-size: 0.75rem; color: var(--text-secondary); margin-top: 2px; + } + .hero .stats .stat a .v { transition: opacity .15s; } + .hero .stats .stat a:hover .v { opacity: .8; text-decoration: none; } + + /* ── Section nav (sticky) ── */ + .section-nav { + position: sticky; top: 0; z-index: 20; + display: flex; justify-content: center; gap: 4px; flex-wrap: wrap; + padding: 10px 16px; + background: color-mix(in srgb, var(--bg-primary) 88%, transparent); + backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); + border-bottom: 1px solid var(--border-subtle); + } + .section-nav a { + color: var(--text-secondary); font-size: 0.75rem; padding: 4px 10px; + border-radius: 6px; transition: all .15s; + } + .section-nav a:hover { color: var(--accent); background: var(--bg-card); text-decoration: none; } + + /* ── "New" badge ── */ + .badge-new { + display: inline-block; background: var(--green); color: #000; + font-size: 0.625rem; font-weight: 700; padding: 2px 7px; border-radius: 4px; + margin-left: 8px; vertical-align: middle; letter-spacing: .04em; + } + + /* ── What's-new cards ── */ + .whatsnew { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; } + .whatsnew .card { + background: var(--bg-secondary); border: 1px solid var(--border-subtle); border-radius: 12px; + padding: 24px; border-left: 3px solid var(--accent); + } + .whatsnew .card h4 { font-size: 1rem; font-weight: 600; margin-bottom: 6px; } + .whatsnew .card h4 .ver { color: var(--text-secondary); font-weight: 400; font-size: 0.75rem; font-family: var(--font-mono); margin-left: 8px; } + .whatsnew .card p { font-size: 0.8125rem; line-height: 1.5; } + .whatsnew .card p code { font-size: 0.75rem; } + .whatsnew .card a { font-size: 0.8125rem; } + @media (max-width: 700px) { .whatsnew { grid-template-columns: 1fr; } } + /* ── Copy button ── */ .copy-btn { background: transparent; border: 1px solid var(--border-subtle); color: var(--text-secondary); @@ -420,7 +471,7 @@ "name": "Which LLM providers does odek support?", "acceptedAnswer": { "@type": "Answer", - "text": "Any OpenAI-compatible endpoint: Deepseek, OpenAI, Anthropic, Ollama, vLLM, Groq, Together, and Fireworks. odek is provider-agnostic, so you are not locked into a single vendor." + "text": "Any OpenAI-compatible endpoint: DeepSeek, OpenAI, Anthropic, Ollama, vLLM, Groq, Together, and Fireworks. odek is provider-agnostic, so you are not locked into a single vendor." } }, { @@ -468,6 +519,14 @@
+ The biggest release since Extended Memory: the agent now anticipates, and cleans up after itself. + Full notes in the v1.15.0 release. +
+ +The agent ends answers with follow-up suggestions it already predicted, tracks your open loops (unanswered questions, stated goals), and can send opt-in proactive nudges — with hard anti-annoyance caps so it never becomes noise. Scheduled jobs are memory-wired, so a cron task can analyze your memory and sessions. docs ↗
+A janitor goroutine keeps long-lived agents (Telegram bot, serve) clean forever: session/audit/log/plan/media retention driven by an operator-only maintenance config. odek cleanup --dry-run previews exactly what would be deleted before anything is touched. docs ↗
Semantic dedup of stored atoms, relevance-preserving recall ranking, atom consolidation, index staleness detection, and odek memory extended stats for operators. Guard-rejected memories go to quarantine for human review instead of vanishing.
The prompt-injection sidecar got its score semantics fixed (confident-benign memories no longer rejected), a JSON-faithful HTTP gateway, NDJSON socket transport, and Apple-Silicon-safe builds. Skill auto-learn is hardened against project-repo injection.
+Docker images ship the multilingual ggml-small whisper model — usable German, English, and Spanish voice transcription out of the box (was effectively English-only).
DeepSeek's native cache fields are parsed, and providers that report nothing show cache: n/a instead of misleading zeros.
Three tiers: facts (markdown on disk), session buffer, and searchable episodes. Merge-on-write via go-vector cosine similarity saves ~80% LLM calls. go-vector RP is ephemeral — rebuilt from text on every write, no embedding state to persist.
+Semantic, atomic memory: facts, preferences, goals extracted per turn, deduplicated by meaning, ranked by relevance and recency. Quarantine for untrusted content, associations between atoms, and a stats surface for operators. Legacy three-tier facts/buffer/episodes included too.
+The agent anticipates: follow-up suggestions after answers, open-loop tracking of your questions and goals, and opt-in proactive nudges with anti-annoyance caps. Scheduled jobs are memory-wired, so cron tasks can analyze memory and sessions.
+Long-lived agents stay clean forever: a janitor handles session, audit-log, log, plan, and media retention on an operator-only config. odek cleanup --dry-run shows exactly what would be removed, first.
Optional ML prompt-injection guard (ONNX, local) as a semantic second opinion on top of the rule-based scan — guarding memory writes, skill bodies, system prompts, and MCP descriptions. Docker Compose sidecar included.
Three modes: engaging (emoji-rich LLM narration), enhance (narration persists after response), and verbose (raw tool traces). Per-tool trace messages with LLM reasoning content. Works across CLI, Telegram, and Web UI.
+Four modes: engaging (emoji-rich LLM narration), enhance (narration persists after response), verbose (raw tool traces), and off (clean, machine-friendly). Per-tool trace messages with LLM reasoning content. Works across CLI, Telegram, and Web UI.