taskai-cli 1.9.25__tar.gz → 1.9.26__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/PKG-INFO +1 -1
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/pyproject.toml +1 -1
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/static/canvas.js +7 -1
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/.github/workflows/publish-to-pypi.yml +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/.github/workflows/test.yml +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/.gitignore +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/.readthedocs.yaml +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/CHANGELOG.md +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/DEVLOG.md +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/DEVPLAN.md +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/PHASE_1_RELEASE.md +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/README.md +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/TRIAGE.md +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/docs/.gitignore +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/docs/_static/.gitkeep +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/docs/_static/demo-script.md +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/docs/ai-integration.md +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/docs/browser-mode.md +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/docs/commands.md +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/docs/conf.py +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/docs/configuration.md +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/docs/getting-started.md +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/docs/index.md +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/docs/interactive-mode.md +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/docs/item-data.md +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/docs/managing-the-tree.md +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/docs/requirements.txt +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/scripts/bump_version.py +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/browser.py +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/cli.py +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/config.py +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/dates.py +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/errors.py +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/filters.py +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/help_menu.py +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/json_dir_database.py +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/llm_models.py +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/models.py +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/services/ai.py +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/services/pomodoro.py +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/services/repair_database.py +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/services/user_setup.py +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/static/camera.js +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/static/config.js +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/static/console.js +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/static/editpanel.js +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/static/graph.js +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/static/index.html +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/static/navigation.js +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/static/render.js +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/static/shortcuts.js +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/static/style.css +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/taskai/views.py +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/test/test_chains.py +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/test/test_cli.py +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/test/test_execution.py +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/test/test_json_dir_database.py +0 -0
- {taskai_cli-1.9.25 → taskai_cli-1.9.26}/test/test_view.py +0 -0
|
@@ -45,10 +45,16 @@ function applyTree(itemsById) {
|
|
|
45
45
|
// it's gone (e.g. just deleted), fall back to the previously-selected
|
|
46
46
|
// node before it, and only give up to the synthetic root if that's gone too.
|
|
47
47
|
const prevId = state.selectedNode ? state.selectedNode.id : null;
|
|
48
|
-
const
|
|
48
|
+
const kept = prevId && state.graph.getNode(prevId);
|
|
49
|
+
const resolved = kept
|
|
49
50
|
|| (state.previousSelectedId && state.graph.getNode(state.previousSelectedId))
|
|
50
51
|
|| state.graph.rootNode;
|
|
51
52
|
selectNode(resolved);
|
|
53
|
+
|
|
54
|
+
// the selection vanished (e.g. it was just deleted) and fell back to a
|
|
55
|
+
// real node: bring that node into view. Falling back to the synthetic
|
|
56
|
+
// root leaves the camera alone.
|
|
57
|
+
if (!kept && resolved !== state.graph.rootNode) state.camera.focusOnNode(resolved);
|
|
52
58
|
}
|
|
53
59
|
|
|
54
60
|
async function loadTree() {
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|