Download Latest Version LogosSetup.exe (203.8 MB)
Home / v1.2.0
Name Modified Size InfoDownloads / Week
Parent folder
Logos.exe 2026-11-12 204.4 MB
LogosSetup.exe 2026-11-12 203.8 MB
Logos 1.2.0 source code.tar.gz 2026-11-12 1.1 MB
Logos 1.2.0 source code.zip 2026-11-12 1.2 MB
README.md 2026-11-12 7.6 kB
Totals: 5 Items   410.5 MB 2

Logos 1.2.0 gives the composer a command surface — /init, /compact, /memory and /help — and stops a long answer from freezing the window. Updating from 1.1.0 is a drop-in replacement: settings.json, logs, cache, session journals, projects and the API keys in the OS keyring are kept.

The composer speaks commands

  • Type / and a palette opens above the composer with every command and its one-line summary. Up/Down move the highlight, Tab fills the command into the input, Enter or a click runs it, and Esc closes the palette without touching the text. The palette never takes focus, so the caret stays in the composer.
  • A command is one of two kinds. A prompt command (/init) expands into one ordinary user message and travels the normal agent path, so the transcript, the journal and the activity blocks show exactly what the model received. An app action (/compact, /memory, /help) runs in the UI, sends nothing to the model, creates no turn and no journal event — and it runs before the provider check, so /memory and /help answer even on a fresh install with no API key.
  • A command typed mid-turn steers instead of interrupting. As in OpenCode, /init pressed during a running turn is folded in as guidance at the next step boundary; pressing it ten times is ten ordinary prompts.
  • A typo is answered, not sent. A leading one-word token that matches no command gets an "Unknown command" notice instead of being treated as a request.

/init writes the project's AGENTS.md

  • Ported from OpenCode's initialize.txt, so both commands behave the same: the same "would an agent likely miss this without help?" bar, the same 2–6 KB and under-90-lines limits, and the same closing rule for a second run. $ARGUMENTS is filled with whatever you typed after /init and ${path} is the project root.
  • The app appends a compact block of facts scanned from the project — manifests, package.json scripts, pyproject.toml entry points and [tool.*] sections, a standalone ruff.toml, Makefile/justfile targets, CI run: lines, .editorconfig / prettier / eslint / tsconfig strict mode, a PyInstaller spec, installer/*.iss, and the commands printed in the README / BUILDING fenced blocks. The scan never walks the tree recursively and never invents a command: a Python entry point becomes uv run python main.py (python main.py without uv.lock), everything else comes from a manifest line or the project's own documentation.
  • The write is verified. A finish that claims "Wrote AGENTS.md" while the file is unchanged and no write tool succeeded is refused and the turn continues (at most twice); after that the answer ends with an honest "No file was written in this run." line instead of leaving the false report unqualified. A real write also retires the guard's own notes, so a live run cannot rewrite the file four times.
  • AGENTS.md is the only file the run may touch: another instruction file (.github/copilot-instructions.md, CLAUDE.md, .cursor/rules) is mentioned, never rewritten.

Memory is two layers

  • ~/.logos/AGENTS.md — your own standing preferences (8 KB), injected into every project and every mode.
  • <project>/AGENTS.md — the project's stable rules (32 KB), injected after the personal block, so a project rule overrides a personal default.
  • HTML comments are stripped before injection and before display, and the personal template is a single comment: creating the file changes nothing the model sees until a real rule is written.

/memory and /help

  • /memory <text> saves what you typed, verbatim, as one bullet per line, in ~/.logos/AGENTS.md. The app does the write, not the model: memory has to be what you wrote, not a paraphrase, and it has to be instant and work mid-turn. Duplicates are skipped, a line that looks like a credential is refused (memory is plain text sent with every request), and a write that would pass 8 KB is refused instead of silently truncated.
  • /memory alone shows the file, its path and its size, and writes nothing.
  • /help lists every command with its usage line and explains both memory layers; /help <command> explains one. The texts live in the registry, so a new command explains itself.
  • /help m completes to /help memory in the palette: a command can declare that its first argument is another command's name, and the row reads exactly the line Tab inserts.

/compact

  • /compact [focus] runs the same manual compaction as the context popover's Compress context and the Session context dialog, with the same refusals (no events yet, a summary in flight, a tool call still running) as one italic line in the chat rather than a modal.
  • A repeat press is a no-op. When the summary already covers every model-facing event, /compact answers "Nothing new to compact" and writes no boundary instead of journaling another compaction event; usage, plan and compaction events are bookkeeping and never make a summary stale. A focus argument always re-summarizes.

A long answer no longer freezes the window

  • The live answer used to be rebuilt in full on every streamed chunk — markdown conversion, HTML parse, document layout and a full scroll-height recompute — which is O(n²) in the answer length. An 18 KB story arrived as 3,559 chunks, the GUI thread painted ~14 a second, the queued chunks outlived the network stream by 80 seconds, and Windows drew the window as "(Not responding)".
  • Chunks now only append text and arm one single-shot timer: the answer is painted at most ten times a second, a pending frame is flushed before the stream state is dropped (a cancelled answer keeps its last words), and the final HTML is painted once at the end. On the same 18 KB answer, 28.4 s of CPU and a 112 ms worst frame became ~7 s spread over ~600 frames with a 16–30 ms worst frame, and the turn now ends in the same second the model stops.

Fixes

  • The /compact progress line follows the work instead of preceding it — it is only written when a summary request actually started, so an instant press shows the outcome alone.
  • Python-Markdown's log noise is gone: three DEBUG lines per rendered document filled 1.7 MB of app.log for a single answer; the logger is raised to INFO.
  • find_files stays out of vendor folders (.git, venv, node_modules, build, dist, __pycache__, site-packages, …) and caps at 500 entries; it is recursive (*.py matches at any depth) and returns folders as well as files.
  • A stopped turn's late answer can no longer land in the next turn: structured responses carry their task tag and turn number, and an answer from another task or from an idled handler is dropped.
  • The pause mark is cleared when a turn ends.
  • The About page gains a Website row, and the installer's update link points at the releases page instead of the repository root.

Install

Download LogosSetup.exe for the installer — per-user, no admin rights, with a Start Menu shortcut, logos.cmd on PATH, an "Open with Logos" folder menu and an entry in Settings → Installed apps — or Logos.exe for the single-file build. The Chromium engine that Browser mode drives is downloaded on first use (~320 MB, kept in %LOCALAPPDATA%\ms-playwright and shared with other Playwright programs).

Download Logos

Source: README.md, updated 2026-11-12