Commit Graph
2789 Commits
Author SHA1 Message Date
Antonio Leandro 16fd5b3ba3 Merge pull request #360 from xJaroslav69/fix/mcp-tool-count
docs: the MCP server exposes 56 tools, not 49
2026-09-22 14:49:35 -03:00
Antonio Leandro 0d88c22d69 Merge pull request #361 from xJaroslav69/fix/translate-plugin-errors
fix(i18n): translate the error messages the Telegram plugin returns
2026-09-22 14:49:32 -03:00
xJaroslav69 cec05939e3 fix(i18n): align the Russian wording with the app's own phrasing
"не удаётся подключиться" matches how the app phrases network failures
elsewhere ("Не удалось подключиться к GitHub…"), "не проходит через прокси"
is the usual verb for traffic that is routed somewhere, and "на системном
уровне" ties the requirement to the VPN and to the TUN proxy alike.
"прокси приложения" keeps the term the settings screen uses (never
"прокси-сервер"), and ё stays in line with the rest of ru.json.
2026-09-22 00:31:04 +03:00
xJaroslav69 4ccb08049f fix(i18n): translate the error messages the Telegram plugin returns
The Telegram page printed whatever the plugin answered, so a failure the
plugin reports with a key - `telegram.qr_error_network`, sent when the
MTProto connection cannot reach a datacenter because the network blocks it
or only a proxy-only VPN is active - stayed in English for every locale.
That message is the one place the user needs to read: it explains why the
login cannot work.

`pluginErrorText` translates a message that looks like a translation key
and shows anything else exactly as the plugin sent it, so a plugin that
still returns plain text keeps working unchanged. The new
`telegram.qr_error_network` entry carries the wording that used to be
hardcoded in the plugin; Russian is translated, the other locales keep the
English text until a translator picks it up.
2026-09-21 23:06:01 +03:00
xJaroslav69 eeac0f5164 docs: the MCP server exposes 56 tools, not 49
tool_table::table() is the single source of truth, and its own test pins the
size: assert_eq!(t.len(), 56, "the table lost or gained a tool"). mcp::tools()
returns that table in full — the comment in mcp.rs says the MCP server no
longer keeps a list of its own — so the server serves 56 tools, not the 49 the
docs kept saying.

Updated README.md (4 places), llms.txt (5), llms-full.txt (4), README_pt_br.md
(1) and the AppStream metainfo (1, that one is user-visible in software
centres).
2026-09-21 20:15:16 +03:00
Antonio Leandro 58f77a23cd Merge pull request #357 from tonhowtf/release/0.10.1
chore(release): 0.10.1 Help, guided setup and Agents polish
v0.10.1
2026-09-21 04:32:16 -03:00
tonhowtfandCursor dc885421dc chore(release): 0.10.1 Help, guided setup and Agents polish
Help ships offline guides and an assistant that cites bundled docs.
Connection wizard, surface guides, usage monitor and workspace appearance
land with the Agents UX pass; the shared tool table gains seven help tools.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 01:02:19 -03:00
Antonio Leandro 1eaa355f2c Merge pull request #332 from YahyaZekry/fix/i18n-pt-strings
fix(i18n): route hardcoded Portuguese strings through i18n
2026-09-19 14:01:46 -03:00
tonhowtf e0b298c74d chore(release): 0.10.0 ships on 2026-09-19 v0.10.0 2026-09-19 13:22:41 -03:00
tonhowtf 68996390f9 fix(core): retry a spawn that hits ETXTBSY
A launcher script written and started in the same breath can be refused on
Linux while a fork on another thread still holds the write descriptor.
2026-09-19 13:06:27 -03:00
tonhowtf 37f414c205 fix(llm): the workspace chip wraps below the agent name, so Undo is never hidden under the header actions 2026-09-19 13:03:51 -03:00
tonhowtf ae98471faf chore(release): the limits strip in the 0.10.0 notes 2026-09-19 12:54:22 -03:00
tonhowtf 57ffdf4d84 fix(skills): kill the scanner's process group with the syscall, not the kill command
procps on Linux does not read a negative argument the way the BSD kill does;
a misread group id takes every process of the user with it, which on CI is the
runner itself ("lost communication" with no log).
2026-09-19 12:54:22 -03:00
tonhowtf cf9b486274 docs(readme): the limits strip 2026-09-19 11:52:42 -03:00
tonhowtf f6e79595cf feat(llm): limits strip, a usage ring per coding assistant on a screen edge (off by default) 2026-09-19 11:52:32 -03:00
tonhowtf 04f4ddf454 fix(ci): hand-stepped world tests stop the tick thread and pump past next_due 2026-09-19 11:52:31 -03:00
tonhowtf a4f76186f3 chore(art): source art of the craft-v1 atlas and the scripts that prepare it 2026-09-19 11:15:00 -03:00
tonhowtf dbac06a9ed fix(ci): two tests assumed LF checkouts and forward slashes, which Windows does not give 2026-09-19 11:13:45 -03:00
tonhowtf c9709621fd docs(seo): search-phrase headings, FAQ per question, agents in the package metadata, llms.txt for both halves 2026-09-19 10:48:16 -03:00
tonhowtf 071241a475 docs(readme): credits as a thank-you at the end, no weaknesses section 2026-09-19 10:19:18 -03:00
tonhowtf 77fe413db9 fix(ci): hand-stepped world tests stop the tick thread; the test step times out with its log
Two world tests move the clock by hand while the live tick thread was
still running, so a slow runner settled the state back under them. The
Test step now has a 30 minute ceiling: the Ubuntu job hung silently and a
cancelled job leaves no log.
2026-09-19 10:18:45 -03:00
tonhowtf eaef3b5be6 docs(readme): agents and the World first, with new Loop art and motion
The 0.10 section moves to the top and covers the coding harness,
permissions and rules, undo, jobs, loops, triggers, the CLI, bring your
own agents, delegation, project memory, pruning receipts, the World and
visits. Counts follow the shipped catalog: 156 tools in 24 categories,
49 on the MCP server.
2026-09-19 09:17:35 -03:00
tonhowtf a38f589476 feat(world): visits go through the public room server by default
omniworld-server now runs behind the existing TLS proxy; the app points
at wss://chat.tonho.wtf/v1/room unless Settings → World names another.
2026-09-19 09:17:35 -03:00
tonhowtf 7d51656225 fix(ci): skill fixtures that reach the runner, a scanner timeout that holds, Windows test manifest
The skill fixtures are SKILL.md files and the repository ignores every
.md, so CI never had them: they are now tracked as .md.fixture and the
tests copy them to a scratch folder under their real names. A hung
scanner is killed with its whole process group and the timeout no longer
waits for readers that a grandchild keeps open. On Windows/MSVC the
Common Controls v6 manifest is linked into every target, so the unit
test executable loads.
2026-09-19 09:17:34 -03:00
tonhowtf 608c59f38a fix(ci): box the stdio MCP transport, gate unix-only test imports, relax a wall-clock test
Clippy on Linux and Windows flagged a large enum variant in the MCP
client and five imports only the unix-gated tests use. The open-house
tick-rate test asked for 13 ticks in 1.5 s and a loaded macOS runner
delivered 10; the bar is now what separates an active house from a
dozing one.
2026-09-19 08:39:33 -03:00
tonhowtf 4d240391be feat: 0.10.0 — agents that work, jobs and loops, the World and visits
LLM section with a native coding harness (workspace-bound tools, macOS
seatbelt, permission asks with Always rules, undo of files and of the
turn's messages), jobs, Loops with a check command, cron and webhook
triggers, `omniget agent` in the CLI, ACP and CLI agents, agent_delegate,
project knowledge base, skills from owner/repo, context pruning with
measured receipts, and the coding tools on the embedded MCP server.

The World: a house for the roster (three default agents, one post each,
tool balloons, activity panel, demo mode, yard preview), open house and
visits by code through omniworld-server, with the host as the authority.

Retires the experimental OmniDisc chat. OMNIGET_DATA_DIR now gives a
second profile its own settings, bridge port and instance.
2026-09-19 08:23:35 -03:00
tonhowtf 2e0305fd54 docs(readme): document agents, jobs, the World and the 49-tool MCP server 2026-09-18 21:26:44 -03:00
Yahya Zekry dfd49232df fix(i18n): fill the new lao locale with the sweep's keys
Main gained lo.json (PR #330) after this branch forked; CI builds the
merge commit, so check:i18n failed there with lo.json missing 1155
keys. Fills it via scripts/sync-locales.mjs (English fallback, same as
the other non-pt locales).
2026-09-17 23:28:56 +03:00
Yahya Zekry e96b5ca94c Merge remote-tracking branch 'origin/main' into fix/i18n-pt-strings 2026-09-17 23:26:01 +03:00
Yahya Zekry d36593d01a fix(i18n): convert the remaining literals flagged in review
Point the MaintenancePanel import tooltip at the new placeholder-free
key, route the hardcoded Spotify SDK failure message through get(t),
and convert the optional list from the review: MaintenancePanel
buttons, presets create/edit/empty states, anki import CSV validation
messages, YouTube tab potoken strings, DownloadsDock drawer/SoundCloud
labels, NbTabStrip tab actions, and Editar source in the
Abc/Flowchart/Plantuml viewers.
2026-09-17 20:56:12 +03:00
Yahya Zekry e0e25c1aed fix(i18n): fix wd_* key regression, dotted read keys, and review-requested keys
Moves the 14 weekday keys the sweep wrote under study.tools.x.* to
tools.x.archive/tools.x.profile where ArchiveTool/ProfileTool actually
request them (chart weekday axes rendered raw key paths in every
language). Adds study.notes.maintenance.import_tooltip (no placeholder,
for the button tooltip; the modal body keeps import_hint with its
{{name}} payload) and study.music.sdk.load_failed. Normalizes the ten
study.read entries that existed as dotted keys ("search.title", …) into
proper nesting via scripts/sync-locales.mjs — --check now exits 0.
2026-09-17 20:56:11 +03:00
Antonio Leandro 013ff612bc Merge pull request #330 from shiroesneo-99/feat/lao-locale
feat(i18n): add Lao (ລາວ) translation and bundled Lao font
2026-09-15 20:28:30 -03:00
Antonio Leandro 8857c860d0 Merge pull request #339 from dajiaohuang/fix/settings-download-attachments
fix(settings): expose course attachment downloads
2026-09-15 20:28:24 -03:00
Antonio Leandro 929fe26e62 Merge pull request #328 from YahyaZekry/fix/sqlite-symbol-interposition
fix(build): keep bundled sqlite symbols out of the process-wide symbol table
2026-09-15 20:18:53 -03:00
tonhowtf c83ae2d38d docs(readme): re-illustrate with Loop artwork and document the 158-tool catalog
New illustrations (animated hero, workflow strip, extension pairing, Tools, Study,
privacy, AI agents, League), fresh screenshots of the 25-category hub, and sections
for the categories added in 0.9.2 (Audio, Facebook, Reddit, Twitch, Bilibili, Music,
LinkedIn, Games, CTF) plus the new Video, PDF, Images, Files and System tools.
Adds the MCP server and Claude Code plugin section, the extension deep search
paragraph, and mirrors the counts in llms.txt. Translated READMEs only re-point
at the new image files.
2026-09-15 19:06:53 -03:00
dajiaohuang 0f8ac89de9 fix(i18n): translate Persian attachment description 2026-09-16 04:01:46 +08:00
dajiaohuang a5e6d33c69 fix(settings): expose course attachment downloads 2026-09-16 01:14:18 +08:00
tonhowtf 42895b7af7 chore: update funding.json star/download counts and correct topic claim 2026-09-15 11:59:13 -03:00
tonhowtf c595b42790 chore: add funding metadata (FUNDING.yml, funding.json) 2026-09-15 11:49:12 -03:00
Yahya Zekry 3ec09a0631 fix(i18n): route the last hardcoded Portuguese strings through i18n
Second sweep pass over every file the PR touches: converts ~165
remaining hardcoded strings (player keyboard help + shell + sponsor
labels, anki browse/presets/sync/import/tags, telegram account/browser/
perf/transfer/clone, notes components, settings maintenance/library/
youtube tabs, music spotify/albums/soundcloud, course/read pages,
achievements charts, study hub/layout) to $t() calls with keys added
in the previous commit. Language names (Português etc.) and functional
Anki query strings are intentionally left as-is.
2026-09-14 06:34:36 +03:00
Yahya Zekry e2eb1437b9 fix(i18n): add 128 missing translation keys across all locales
Greptile review on #332 flagged call sites requesting keys that never
existed: the achv tree page asked for tree.d_ago/mo_ago/y_ago/available/
prereq which had been inserted under study.achv.charts instead, and
charts.link, study.player.keys/shell/sponsor.*, several anki, music and
telegram keys were absent entirely, so those labels rendered as raw key
paths. Moves the misplaced achv keys under tree, adds every missing key
(pt keeps the original Portuguese, other locales use English text), and
fixes the focus_*_desc values whose literal {h} placeholder was never
interpolated.
2026-09-14 06:34:23 +03:00
Yahya Zekry 39862223e6 fix(i18n): use English fallback text for new keys in non-en/pt locales 2026-09-14 02:12:56 +03:00
Yahya Zekry 2ae15e1bfc fix(i18n): sweep telegram page buttons/aria + account/perf/transfer leftovers (11 keys, all locales) 2026-09-14 01:53:14 +03:00
Yahya Zekry 5943ca6b62 fix(i18n): complete telegram channel drawer sweep (44 keys, all locales) 2026-09-14 01:53:14 +03:00
Yahya Zekry c132ed8542 fix(i18n): type fixes from svelte-check (tpl refs, hero narrowing, tree/stockOptions typing, spotify null) 2026-09-13 21:09:19 +03:00
Yahya Zekry 3819f75223 fix(i18n): redo keyboard overlay i18n without generic ; restore upstream chatType generic 2026-09-13 20:40:10 +03:00
Yahya Zekry ac75acb24b fix(i18n): route all remaining hardcoded Portuguese strings through i18n
Entire Study surfaces bypassed i18n with pt literals, so an en-locale UI
showed mixed languages: the Telegram sync pill, Study hub recents, all
Anki pages (settings, stats, media, note types, browse, import, decks,
tags, revlog, filtered decks, review session, sidebar), the notes
shortcuts reference/templates/main page, the Telegram channel drawer,
clone wizard, account/transfer/perf panels, the player components and
all 7 study settings tabs, the music downloads dock and stores, the read
pages, achievements tree/charts, course pages, and misc singletons.

Replace every literal with $t() calls; add the new keys (study.anki.*,
study.notes.*, study.tg_sync/telegram.*, study.player.*, study.settings.*
, study.music.*, study.achv.*, study.read.*, study.library.*, study.misc
, study.spotify.*, study.soundcloud.*) to all 11 locales - check:i18n
enforces strict key parity and the build aborts otherwise. pt.json keeps
the original wording; other locales are fresh translations.

Also: rename shadowed loop vars (t -> tpl/tr) so the i18n store isn't
hidden inside each-blocks, and drop $derived generics that this Svelte
version's parser rejects when the type argument starts with "{".
2026-09-13 20:03:50 +03:00
shiroesneo-99andClaude Opus 5 07caf08f29 feat(fonts): render Lao script with bundled Noto Serif Lao
Windows ships no good Lao UI font, so Lao text fell back to a poor
system face. Bundle the Lao subset of Noto Serif Lao (OFL, 27 KB) as
'OmniGet Lao', limited by unicode-range to the Lao block so Latin text
keeps the user's chosen font, and prepend it to the display/body stacks.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-13 17:03:31 +07:00
shiroesneo-99andClaude Opus 5 90527a718d feat(i18n): add Lao (ລາວ) translation
Adds a complete Lao locale (lo.json, 7208 keys, all placeholders
preserved) and registers it in the i18n loader, the Settings language
picker and the onboarding wizard.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-13 17:03:30 +07:00
Yahya Zekry 10500fd851 fix(build): stop bundled sqlite symbols from preempting system libsqlite3
rusqlite is compiled with "bundled", so the executable defines sqlite3_*
symbols. Because webkit2gtk (and libsoup/tinysparql) carry undefined refs
to some of them, ld auto-exports those definitions from the executable
(51 sqlite3_* symbols in .dynsym), and at runtime they preempt sqlite3
process-wide - including libsqlite3.so.0's own internal calls.

Any plugin linking the system libsqlite3 (e.g. the Telegram plugin via
grammers' SqliteSession) then runs a Frankenstein mix: of its 22 sqlite
imports, 17 bound to the bundled instance and 5 to the system library,
whose sqlite3_initialize was itself preempted - so the system library's
global config was never initialized. The first sqlite3_bind_blob on a
bundled-instance statement executed in system code and tail-jumped
through the never-populated sqlite3GlobalConfig.mutex.xMutexEnter slot,
segfaulting the whole app on the plugin's first session write.

-Wl,--exclude-libs,ALL keeps static-archive members private: shared
libraries and plugins bind to the real libsqlite3.so.0 and the bundled
copy stays internal. Linux only; the flag is GNU/lld-specific.
2026-09-13 09:31:10 +03:00