Private
Public Access
feat(palette): define 11 core commands in commands.py
This commit is contained in:
@@ -0,0 +1,88 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
from typing import TYPE_CHECKING
|
||||||
|
from src.command_palette import CommandRegistry
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from src.gui_2 import App
|
||||||
|
|
||||||
|
|
||||||
|
registry = CommandRegistry()
|
||||||
|
|
||||||
|
|
||||||
|
@registry.register
|
||||||
|
def reset_session(app: "App") -> None:
|
||||||
|
"""Reset Session — Reset the AI session and clear discussion history."""
|
||||||
|
from src import ai_client
|
||||||
|
ai_client.reset_session()
|
||||||
|
if hasattr(app, "_handle_reset_session"):
|
||||||
|
app._handle_reset_session()
|
||||||
|
|
||||||
|
|
||||||
|
@registry.register
|
||||||
|
def clear_discussion(app: "App") -> None:
|
||||||
|
"""Clear Discussion — Clear all entries in the current discussion."""
|
||||||
|
if hasattr(app, "discussion_history"):
|
||||||
|
app.discussion_history = []
|
||||||
|
|
||||||
|
|
||||||
|
@registry.register
|
||||||
|
def toggle_diagnostics(app: "App") -> None:
|
||||||
|
"""Toggle Diagnostics — Show/hide the Diagnostics panel."""
|
||||||
|
if hasattr(app, "show_diagnostics"):
|
||||||
|
app.show_diagnostics = not app.show_diagnostics
|
||||||
|
|
||||||
|
|
||||||
|
@registry.register
|
||||||
|
def add_all_files_to_context(app: "App") -> None:
|
||||||
|
"""Add All Files to Context — Add all tracked files to the context."""
|
||||||
|
if hasattr(app, "_add_all_files_to_context"):
|
||||||
|
app._add_all_files_to_context()
|
||||||
|
|
||||||
|
|
||||||
|
@registry.register
|
||||||
|
def open_project(app: "App") -> None:
|
||||||
|
"""Open Project — Open a different project TOML."""
|
||||||
|
if hasattr(app, "_show_project_picker"):
|
||||||
|
app._show_project_picker()
|
||||||
|
|
||||||
|
|
||||||
|
@registry.register
|
||||||
|
def save_project(app: "App") -> None:
|
||||||
|
"""Save Project — Save the current project state to TOML."""
|
||||||
|
if hasattr(app, "_save_project_state"):
|
||||||
|
app._save_project_state()
|
||||||
|
|
||||||
|
|
||||||
|
@registry.register
|
||||||
|
def trigger_hot_reload(app: "App") -> None:
|
||||||
|
"""Hot Reload — Reload the GUI module to pick up code changes."""
|
||||||
|
from src.hot_reloader import HotReloader
|
||||||
|
HotReloader.reload("src.gui_2", app)
|
||||||
|
|
||||||
|
|
||||||
|
@registry.register
|
||||||
|
def show_documentation(app: "App") -> None:
|
||||||
|
"""Show Documentation — Open the documentation index in the browser."""
|
||||||
|
import webbrowser
|
||||||
|
webbrowser.open("https://git.cozyair.dev/ed/manual_slop/")
|
||||||
|
|
||||||
|
|
||||||
|
@registry.register
|
||||||
|
def switch_to_dark_theme(app: "App") -> None:
|
||||||
|
"""Switch to Dark Theme."""
|
||||||
|
from src import theme_2
|
||||||
|
theme_2.apply_dark_theme()
|
||||||
|
|
||||||
|
|
||||||
|
@registry.register
|
||||||
|
def switch_to_light_theme(app: "App") -> None:
|
||||||
|
"""Switch to Light Theme."""
|
||||||
|
from src import theme_2
|
||||||
|
theme_2.apply_light_theme()
|
||||||
|
|
||||||
|
|
||||||
|
@registry.register
|
||||||
|
def switch_to_nerv_theme(app: "App") -> None:
|
||||||
|
"""Switch to NERV Theme."""
|
||||||
|
from src.theme_nerv import apply_nerv
|
||||||
|
apply_nerv()
|
||||||
@@ -43,3 +43,12 @@ def test_fuzzy_match_score_higher_for_exact_prefix():
|
|||||||
]
|
]
|
||||||
results = fuzzy_match("fin", candidates, top_n=10)
|
results = fuzzy_match("fin", candidates, top_n=10)
|
||||||
assert results[0].command.id == "a"
|
assert results[0].command.id == "a"
|
||||||
|
|
||||||
|
|
||||||
|
def test_commands_registry_has_core_commands():
|
||||||
|
from src.commands import registry
|
||||||
|
all_ids = {c.id for c in registry.all()}
|
||||||
|
assert "reset_session" in all_ids
|
||||||
|
assert "clear_discussion" in all_ids
|
||||||
|
assert "trigger_hot_reload" in all_ids
|
||||||
|
assert "show_documentation" in all_ids
|
||||||
|
|||||||
Reference in New Issue
Block a user