-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patherrata.json
More file actions
225 lines (225 loc) · 21.7 KB
/
Copy patherrata.json
File metadata and controls
225 lines (225 loc) · 21.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
[
{
"date": "2026-05-20",
"message": "BTerminal v1.3.5 — friendlier update flow when the working tree is dirty. Previously, updating with uncommitted local changes auto-stashed and then crashed mid-update with 'git stash pop produced conflicts' when the stashed files clashed with new files from origin (this was hitting users who had v1.3.3 test files locally). Now the updater asks up front whether to discard all local changes; Yes runs `git reset --hard HEAD` + `git clean -fd` before pulling, No cleanly cancels the update. Recommended: run install.sh to pick up the new dialog.",
"changes": [
"feat(updater): _prompt_reset_local_changes — modal Yes/No warning before discarding uncommitted work, shown only when `git status --porcelain` reports a dirty tree",
"feat(updater): _git_hard_reset helper — `git reset --hard HEAD` + `git clean -fd` to align the working tree with origin/master when the user consents",
"fix(updater): _git_pull_with_autostash accepts force_reset=True — runs the hard reset before pulling instead of the stash dance, eliminating the 'stash pop conflicts' mid-update failure",
"fix(updater): _do_update calls the prompt before the progress dialog opens — if the user cancels, no progress UI flashes and the update aborts cleanly"
]
},
{
"date": "2026-05-20",
"message": "BTerminal v1.3.4 — sudo dialog fixes after the v1.3.3 rollout on Pop_OS!. The shared askpass cache worked on Mint but the first AI tab on Pop_OS! froze after the password dialog closed: the bash prologue's `sudo -A true` warm-up hung under PAM/mail_badpass without a real PTY. Drop the redundant bash check (ensure() already validated the password in Python), fix the off-by-one in the attempt counter, migrate legacy provider keys in the 'Resume last session' shortcut, honour the schema's default for the sudo checkbox, and default new Claude sessions to sudo=True. Recommended: run install.sh to pick up the new dialogs.",
"changes": [
"fix(sudo): drop `sudo -A true` pre-check from _build_shared_askpass_prologue — was redundant and stalled the AI tab on hosts where sudo blocks under PAM/mail_badpass without a TTY",
"fix(sudo): SudoPasswordDialog error counter shows the attempt that just failed ('Próba 1/3' after the first wrong entry) instead of the next one",
"fix(app): open_ai_tab_one_off migrates legacy top-level provider keys into provider_options before applying force_options — 'Resume last session' no longer drops the sudo flag on legacy sessions",
"fix(dialog): AISessionDialog._add_schema_field honours the optional 4th schema element as the checkbox default",
"feat(claude): default sudo checkbox to True in ClaudeProvider.get_dialog_schema so new sessions get the askpass wired up by default"
]
},
{
"date": "2026-05-20",
"message": "BTerminal v1.3.3 — shared sudo password cache (BUG#31), rules-injection typing guard, and stats bar accuracy fixes. AI sessions that need root now share a single sudo password dialog at the window level — subsequent tabs reuse the cached askpass helper without prompting again. A new typing guard prevents rules/ctx injection from firing while the user is composing a message. The stats bar ♻️ cache-hit label and tok/h metric are now accurate. Recommended: run install.sh to pick up the new sudo dialog and locale strings.",
"changes": [
"feat(sudo): shared SudoAskpassCache — lazy per-window, populated on first sudo AI tab; reused by all subsequent tabs without re-prompting (BUG#31)",
"feat(sudo): SudoPasswordDialog — 3-attempt modal with PL error counter; validates via sudo -A true pre-check (BUG#31)",
"feat(sudo): Tools → 'Ustaw hasło sudo…' / 'Wyczyść hasło sudo' menu items with sensitivity refresh on show (BUG#31e)",
"fix(sudo): _on_quit + _on_delete_event both call sudo_askpass.clear() — no /tmp/bt-askpass-shared-* tempfile leak on exit (BUG#31i)",
"fix(sudo): _build_shared_askpass_prologue — exports SUDO_ASKPASS, falls back to interactive per-tab read-loop when cache expires (BUG#31d)",
"feat(sudo): BTERMINAL_TEST_FAKE_SUDO=1 env — skips real sudo verification in component tests without touching production paths (BUG#31g)",
"feat(sudo): GET /api/debug/sudo_state + POST /api/debug/sudo_submit REST endpoints for component test introspection (BUG#31g)",
"fix(terminal): typing guard — _user_is_typing flag blocks rules/ctx injection while user has uncommitted text; clears on Enter/Escape/Ctrl+C/Ctrl+D",
"fix(stats): ♻️ replaces 📦 for cache hit rate — clearer that the metric is cache efficiency, not context occupancy",
"fix(stats): tok/h now counts only freshly-processed tokens (input + cache_write + output), excluding cheap cache_read — matches visible ↑ ↓ counters",
"fix(i18n): ollama_client error messages wrapped in _() — Ollama pull errors now follow the active language",
"test: 6 new unit test files covering SudoAskpassCache, SudoPasswordDialog, app sudo integration, Tools menu sudo items, terminal_tab sudo branching, typing guard state machine (19 typing-guard cases)",
"test(e2e): REST-driven sudo dialog flow — sudo_state + sudo_submit endpoints verified against running BT under xvfb"
]
},
{
"date": "2026-05-11",
"message": "BTerminal v1.3.2 — Aider setup wizard + 10 bug-fix bundle (#19-28). New tools/aider_setup_wizard CLI detects missing Ollama models, surfaces the curated catalog, and orchestrates pulls so users hit a guided flow instead of LiteLLM's raw stack trace. Memory panel's Apply Rules now affects the current tab without a restart. All fixes verified end-to-end on a real VM with the semi-automatic UI driver. Recommended: run install.sh to pick up the new wizard CLI, recompile locale catalogs, and refresh provider defaults.",
"changes": [
"feat(aider): tools/aider_setup_wizard — detects missing Ollama models, presents curated catalog, orchestrates pulls (BUG#19)",
"feat(aider): providers/aider_probe.py — model presence + curated suggestions logic with refresh from ollama.com (BUG#25, #26)",
"feat(aider): providers/aider_models.json — bundled catalog (qwen2.5-coder family, deepseek-coder-v2, codellama, llama3.1, qwen2.5, llava)",
"feat(aider): providers/ctx_defaults.py — built-in ctx entries seeded on first Aider run for consistent project conventions (BUG#28)",
"fix(aider): missing-model dialog with Open wizard / Skip buttons replaces raw LiteLLM stack trace on spawn (BUG#19)",
"fix(aider): pass intro prompt to Aider spawn so the LLM sees CLAUDE.md from prompt #1 (BUG#27)",
"fix(aider): auto-relaunch Aider after a successful wizard pull (BUG#22)",
"feat(app): Tools → Aider Setup Wizard… menu item opens the wizard tab from BT (BUG#23)",
"fix(memory): Apply Rules button now feeds refreshed rules into the active terminal — no restart needed",
"fix(i18n): refresh 12 locale catalogs (.po) and bterminal.pot for new strings introduced by the wizard flow; PL filled, other locales fallback until translated",
"test(e2e): 5 AT-SPI pin tests covering missing-model dialog, wizard end-to-end flow, Tools menu entry, Aider intro-prompt feed, memory apply current-tab effect",
"test: 6 new unit tests (aider_probe, aider_setup_wizard CLI, catalog refresh, ctx defaults consistency, ctx rules autoinsert, memory wizard defaults)",
"chore: add requirements.txt pinning rich>=13.0 (consumed by aider_setup_wizard semaphore-table UI)",
"docs(readme): multi-provider description + architecture refresh (~50 modules, providers/ subpackage, i18n.py, system_probe.py, ai_session.py listed)"
]
},
{
"date": "2026-05-10",
"message": "BTerminal v1.3.1 — stability + Polish locale bug-fix bundle driven by manual QA. 14 user-visible fixes across the Aider provider, Pull Ollama dialog, Options layout and theme toggle, plus Polish catalog completeness. All fixes verified end-to-end on a real VM with a new semi-automatic UI driver (AT-SPI accessibility tree). Recommended: run install.sh to recompile locale catalogs and pick up the helper scripts; no schema changes, no manual migration needed.",
"changes": [
"fix(aider): inject --read AIDER.md (or CLAUDE.md fallback) at spawn so the LLM sees project conventions from prompt #1 — aider 0.86.2 does NOT auto-discover the conventions file (BUG#2)",
"fix(aider): active ctx rules materialised to a per-spawn temp file and passed via --read; rules reach the model context immediately instead of waiting for the periodic PTY-feed threshold (BUG#3)",
"feat(ollama): Pull Ollama model dialog now uses ComboBoxText with 7 curated tags + free-form Entry + a 'Browse all models on ollama.com →' link button (BUG#8)",
"feat(ollama): warning dialog before pulling models below 3 B parameters — qwen 0.5b cannot follow Aider's edit format (BUG#4)",
"fix(ollama): Pull failed dialog strips ANSI cursor-control sequences from stderr (no more `?2026h ?25l ?1Gpulling manifest ?K` mojibake) (BUG#10)",
"fix(ollama): Pull failed dialog maps known errors to short Polish messages ('Model X nie istnieje w bibliotece Ollama. Sprawdź pisownię.') instead of multi-line stderr dumps (BUG#11)",
"fix(options): wider default size + min size + resizable so longer Polish labels fit without left-edge cropping (BUG#5)",
"fix(options): persistent vertical scrollbar (≥12 px, overlay-scrolling off) when AI providers + Local Models sections are expanded (BUG#7)",
"fix(options): theme combo Save uses a new idempotent _set_theme(target) setter — Light → Dark now works regardless of prior state (BUG#14)",
"fix(i18n,PL): Diagnostyka… / Zainstaluj zależności… in the Tools menu (BUG#1)",
"fix(i18n,PL): 'Dodaj wskazówkę vision przy wklejaniu obrazów do sesji Copilot' Options checkbox (BUG#6)",
"fix(i18n,PL): Pobierz model Ollama / Pobierz / Pobieranie nieudane / Model pobrany Pull dialog strings (BUG#9 + BUG#12)",
"fix(menu): File menu item renamed from 'Nowa sesja Claude Code…' to 'Nowa sesja AI…' — opens the same provider-picker dialog the sidebar Add ▾ uses, not Claude-only (BUG#13)",
"test(e2e): _e2e_live_monitor.sh rewritten to action-driven mode — snapshots taken only on tag <name>, no time-based polling",
"test(e2e): new tools/_e2e_atspi_driver.py accessibility-tree driver (pyatspi) — click widgets by LABEL (XPath-equivalent for GTK) instead of flaky mouse coordinates",
"test(e2e): 14 new pin tests under tests/e2e/test_*.py covering every fix above with structural + behavioural contract checks"
]
},
{
"date": "2026-05-05",
"message": "BTerminal v1.3.0 — multi-language UI in 13 languages (English, Polski, Deutsch, Español, Français, Italiano, Português, Русский, Українська, Čeština, 中文, 日本語, 한국어), license-acceptance dialog enforced at first launch and before each update, and live language switching from Options without restart. The user can also opt the AI agent into responding in their language. Recommended: run install.sh to compile the new translation catalogs, then accept the localised license on next launch.",
"changes": [
"feat(i18n): GNU gettext infrastructure with 13 languages, live UI refresh on language change (no restart), Auto-detect resolution from LANGUAGE/LANG env, plural-form support (3-form for Slavic, 2-form for Romance/Germanic, 1-form for CJK)",
"feat(license): per-language license dialog (defaults/license/LICENSE.<lang>.md) with SHA-256 acceptance hash, re-prompt on language switch or LICENSE update; declining first run quits the app, declining before update aborts the update",
"feat(options): Language dropdown (Auto-detect / English / Polski / + 11 more) and 'Tell the AI agent which language I speak' toggle in Options",
"feat(ai-prompt): when user language != English, append a one-liner hint to the Claude Code intro prompt so the agent responds in the user's language; AI prompt itself stays English by policy",
"feat(install): install.sh now compiles every locale/<lang>/LC_MESSAGES/*.po -> .mo via msgfmt; locale/ live-symlinked into install dir",
"feat(tools): tools/i18n.sh (extract / update / compile / new <lang> / stats), tools/check_i18n.py (AST-based audit for hardcoded PL outside _()), tools/_fill_translations.py (batch fill of all 12 language dicts)",
"fix(updater): show_error_dialog import was missing in updater.py since the v1.2.0 refactor — would have crashed on a failed update",
"fix(idle): Claude Code idle detection refactored from re-armed timer to poll-based (1 s tick, >=2 s quiet OR >=60 s hard cap) — spinner ticks no longer starve injection scheduling",
"fix(memory): Memory panel reloads rules config on project switch (not only on reload)",
"fix(tasks): cmd_done in tools/tasks now also DELETEs from task_claims so the table doesn't grow per finished task",
"fix(memory_wizard): persist config in --auto mode so non-default inject/refresh intervals are picked up by terminal_tab",
"test: 314 tests covering hash logic, locale resolution chain, catalog completeness per language, plural-form correctness per category, license attribution preserved per language, live-refresh registry semantics"
]
},
{
"date": "2026-05-04",
"message": "BTerminal v1.2.0 — refactor of the bterminal.py monolith (11758 lines) into a Python package bterminal/ (~30 modules). Entry point is now `python -m bterminal`. Full regression test suite: 207 tests, ~26s locally. No functional changes for the user — this is an architectural refactor that opens the door for provider abstraction (Copilot/Aider) and easier testability.",
"changes": [
"refactor: bterminal.py (11758 L) -> bterminal/ package with hierarchy ctx/, ui/{dialogs,panels} (~30 modules)",
"refactor: CLI tools (ctx, consult, tasks, claude_log, memory_wizard) and test runners moved to tools/",
"feat(install): rsync bterminal/ recursively + bterminal-launcher shell wrapper (python3 -m bterminal)",
"test: 207 tests (135 unit / ~40 component under xvfb / ~30 e2e / 3 slow), ~26s full regression",
"test: vte_capture fixture + bt_stderr_watcher (catches NameError in GLib callbacks) + mock_ai_cli harness",
"docs: REQUIREMENTS.md (66 R<N>), test-coverage-matrix.md, refactor-modular-architecture.md, refactor-test-plan.md",
"fix(tasks-panel): per-tab task project binding now correctly responds to user-driven dropdown change (port from master)",
"fix(tasks): cmd_done DELETEs the row from task_claims — claims table no longer grows per completed task",
"fix(R3a): SessionPasswordCache — passwords kept in-memory only, filtering save(), migration log from legacy",
"fix(R1): strict argparse parse_args (exit 2 on unrecognized), drop BTERMINAL_DEBUG_REST env, self-heal corrupt options.json",
"fix(intro-prompt): lazy import of _build_intro_prompt eliminates NameError on double-click open",
"fix(path): main() prepends ~/.local/bin and ~/.npm-global/bin to PATH (desktop entry launch)"
]
},
{
"date": "2026-04-24",
"message": "BTerminal v1.1.8 — README updated. Documentation now reflects all changes since v1.1.1: Tribunal, installer with rollback, automatic dependency installation, update progress bar.",
"changes": [
"docs: README updated to v1.1.7 — Tribunal, rollback, auto-deps, update dialog"
]
},
{
"date": "2026-04-24",
"message": "BTerminal v1.1.7 — the update window now shows a progress bar and the current install step. You can see what the installer is doing instead of an empty spinner.",
"changes": [
"feat: progress bar (pulse) in the update dialog",
"feat: live log — last stdout line of install.sh shown in real time"
]
},
{
"date": "2026-04-24",
"message": "BTerminal v1.1.6 — the update dialog now has a fixed size and a scrollbar. It no longer overflows the screen on long errata.",
"changes": [
"fix: 'New version available' dialog — fixed size 520x380px + scrollbar"
]
},
{
"date": "2026-04-24",
"message": "BTerminal v1.1.5 — safe installer with rollback. If installation fails, the previous version is automatically restored. BTerminal should keep working after a failed update.",
"changes": [
"feat: installer rollback — backup before [5/7], restore on error (trap ERR)",
"feat: user-friendly message about restored previous version instead of silent crash"
]
},
{
"date": "2026-04-24",
"message": "BTerminal v1.1.4 — installer fix. The claude_log file was missing from the repository — fresh install aborted with an error. The meld, pandoc and LaTeX tools are now installed automatically.",
"changes": [
"fix: claude_log added to the repository — its absence caused crashes on fresh install",
"fix: meld, pdflatex, latexmk, poppler-utils, pandoc installed automatically via apt (not just warned about)"
]
},
{
"date": "2026-04-24",
"message": "BTerminal v1.1.3 — the claude_log/ directory is now created automatically when a Claude Code session starts. Logs are visible in the Files panel as soon as the project is opened.",
"changes": [
"fix: claude_log/ created when the Claude Code tab opens — no longer waits until close"
]
},
{
"date": "2026-04-24",
"message": "BTerminal v1.1.2 — rules and Consult tool fix. Analyst and Arbiter in Tribunal are now always locked to claude-code/opus. The 'always check models' rule has been narrowed — it only applies to model selection via -m.",
"changes": [
"fix: Tribunal — Analyst and Arbiter locked to claude-code/opus in both GUI and CLI (the only model with project file access)",
"fix: global_rules.txt — the consult-models rule narrowed: applies only to `consult -m`, not every use",
"fix: CLAUDE.md — Tribunal docs updated (--analyst/--arbiter flags removed from CLI)"
]
},
{
"date": "2026-04-24",
"message": "BTerminal v1.1.1 — latex-document-skill is now installed automatically and pinned to a specific commit. Updates are handled by install.sh — no manual steps needed.",
"changes": [
"fix: latex-document-skill pinned to the commit from dependencies.json — users always get a verified version",
"fix: install.sh automatically clones and updates the extension on every install",
"fix: LaTeX dependencies (pdflatex, latexmk, poppler-utils, pandoc) installed automatically"
]
},
{
"date": "2026-04-24",
"message": "BTerminal v1.1.0 — Files panel. A new sidebar tab shows project files like in IntelliJ: directory tree, diff preview in meld with commit selection, context menu with path copying and 'Open With' for any program. Recommended: run install.sh to update.",
"changes": [
"feat: Files panel — project file tree of the active project in the sidebar",
"feat: project dropdown — list of saved Claude Code sessions, defaults to the active tab",
"feat: auto git-root detection — if the session points to a subdirectory (e.g. docs/), the panel walks up to the project root",
"feat: meld diff — double-click opens a dialog with a dropdown of the last 10 commits and a free-form ref input",
"feat: context menu — Copy Path, Copy Relative Path, Copy Name, Paste Path to Terminal",
"feat: Open With > — submenu with Default App, VS Code, Zed, gedit, kate, Custom...",
"feat: meld added to the installer (optional dependency)"
]
},
{
"date": "2026-04-24",
"message": "BTerminal v1.0.0 — first official release. Adds the global rules system, Skills panel, extensions (latex-document-skill), a new installer with dependency verification, versioning, and the /check-deps skill. Recommended: run install.sh to update your installation and pull the new skills.",
"changes": [
"feat: versioning v1.0.0 — VERSION file, window title shows the version",
"feat: global rules file defaults/global_rules.txt — injected into every session, updates with git pull",
"feat: Skills panel in the sidebar — list of installed Claude Code skills, marker for bundled skills",
"feat: bundled skills (reflect.md, check-deps.md) — installed to ~/.claude/commands/ on install",
"feat: /check-deps — skill that checks BTerminal dependency versions against defaults/dependencies.json",
"feat: /reflect — skill that stops the agent and runs rule analysis via memory_wizard --dry-run",
"feat: extensions system — extensions in dependencies.json, latex-document-skill as the first official extension",
"feat: install.sh v2 — manifest-driven, checks and updates all dependencies, writes install_errors.json",
"feat: defaults/dependencies.json — full dependency manifest (runtime, GTK, system tools, claude_code, APIs, extensions)",
"feat: BTerminal environment header in intro prompt and periodic injection (with README.md path)",
"feat: live symlinks — defaults/, README.md, VERSION linked from the repo (git pull = immediate effect)",
"fix: installation error on fresh systems (missing ~/.local/bin before Claude Code install)"
]
},
{
"date": "2026-04-23",
"message": "Merged branch feat/claude-usage-limits. The Claude Code stats bar now shows plan limits (5h/7d) fetched directly from the Anthropic API via OAuth. Fixed a race condition in auto-trigger, task sorting, and the icon on older Mint.",
"changes": [
"feat: Claude plan limits (5h/7d) in the stats bar — utilization percentage and time to reset",
"fix: 100ms delay before Enter after auto-trigger message (prevents race condition)",
"fix: open tasks sorted ascending (1, 1.a, 1.b, 2, ...)",
"fix: sidebar tab font size 11px -> 13px",
"fix: BTerminal icon on older Linux Mint (gtk-update-icon-cache after install)"
]
}
]