painapple-code 1.1.1__tar.gz → 1.1.2__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.
- {painapple_code-1.1.1 → painapple_code-1.1.2}/CHANGELOG.md +10 -0
- {painapple_code-1.1.1/src/painapple_code.egg-info → painapple_code-1.1.2}/PKG-INFO +1 -1
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/guides/terminal.md +4 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/_version.py +3 -3
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/data/models.defaults.yaml +2 -2
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/data/models.yaml +2 -2
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/paths.py +1 -1
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/tools/agents/shadow-git-helper.md +1 -1
- painapple_code-1.1.2/src/painapple_code/tools/term-bin/pbcopy +40 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/utils/pty_posix.py +14 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2/src/painapple_code.egg-info}/PKG-INFO +1 -1
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code.egg-info/SOURCES.txt +1 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code.egg-info/scm_file_list.json +2 -0
- painapple_code-1.1.2/src/painapple_code.egg-info/scm_version.json +8 -0
- painapple_code-1.1.1/src/painapple_code.egg-info/scm_version.json +0 -8
- {painapple_code-1.1.1 → painapple_code-1.1.2}/.devcontainer/devcontainer.json +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/.dockerignore +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/.gitignore +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/CONTRIBUTING.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/Dockerfile +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/LICENSE +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/MANIFEST.in +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/README.dockerhub.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/README.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/SECURITY.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/THIRD_PARTY_NOTICES.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/build-frontend.sh +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docker-compose.yml +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docker-entrypoint.sh +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/assets/annotate-editor.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/assets/browser-widget.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/assets/comments-stash.gif +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/assets/cost-analytics.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/assets/favicon.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/assets/input-autocomplete.gif +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/assets/logo.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/assets/markdown-quick-edit.gif +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/assets/overview.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/assets/prompt-history.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/assets/quick-switcher.gif +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/assets/quick-switcher.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/assets/settings-appearance.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/assets/settings-claude.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/assets/shadow-journal.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/assets/snippets-picker.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/assets/terminal.gif +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/assets/turn-summary-bar-expanded.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/assets/turn-summary-bar.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/assets/welcome-screen.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/assets/zen-mode.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/changelog.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/features.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/getting-started/first-run.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/getting-started/install-devcontainer.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/getting-started/install-docker.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/getting-started/install-pip.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/getting-started/requirements.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/getting-started/security.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/guides/analytics-and-history.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/guides/claude-artifacts.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/guides/customization.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/guides/files.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/guides/git-and-diffs.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/guides/images-and-annotation.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/guides/input-and-commands.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/guides/ipad-and-mobile.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/guides/permissions-and-thinking.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/guides/providers.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/guides/sessions.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/guides/shadow-git.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/guides/stash-and-discussions.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/guides/welcome-screen.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/guides/zen-mode.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/index.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/reference/api.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/reference/commands.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/reference/data-storage.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/reference/keyboard-shortcuts.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/reference/optional-helpers.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/reference/profiles.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/reference/server-cli.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/mkdocs.yml +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/painapple-docker.sh +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/pyproject.toml +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/requirements-docs.txt +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/requirements.txt +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/setup.cfg +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/setup.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/__init__.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/__main__.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/auth_middleware.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/cli/__init__.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/cli/deploy/__init__.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/cli/deploy/claude_seed.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/cli/deploy/config.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/cli/deploy/container.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/cli/deploy/launch.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/cli/deploy/runtime.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/cli/lifecycle_cmd.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/cli/list_cmd.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/cli/manage_cmd.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/cli/netinfo.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/cli/profiles.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/cli/serve_args.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/cli/serve_config.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/cli/setup_cmd.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/cli/ui.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/cost_analytics.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/data/presets.defaults.json +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/data/strings.yaml +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/helpers.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/prompt_explorer.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/__init__.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/base.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/claude/__init__.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/claude/capabilities.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/claude/errors.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/claude/launch.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/claude/summary.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/claude/translate.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/claude_sdk/__init__.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/claude_sdk/driver.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/codex/__init__.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/codex/capabilities.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/codex/errors.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/codex/translate.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/codex_app_server/__init__.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/codex_app_server/capabilities.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/codex_app_server/launch.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/codex_app_server/summary.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/codex_app_server/translate.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/codex_app_server/transport.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/__init__.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_agents.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_app.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_app_commit_sections.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_app_config.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_app_session_prefs.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_browser.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_commands.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_costs.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_drafts.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_exec.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_files.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_git.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_logs.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_plugins.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_project_config.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_prompts.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_providers.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_search.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_session_stash.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_session_welcome.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_sessions.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_shadow.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_shadow_db.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_shadow_files.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_shadow_search.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_skills.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_tasks.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_terminal.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_upload.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_viewer.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/dependencies.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/ws_chat.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/server.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/server_logging.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/services/__init__.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/services/agent_session.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/session_store.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/session_store_core.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/shadow_db.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/shadow_db_plans.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/shadow_db_queries.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/shadow_db_schema.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/shadow_git.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/shadow_git_frontmatter.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/shadow_git_sections.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/shadow_git_summary.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/shadow_parser.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/00-variables.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/01-base.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/02-tooltips.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/09-left-rail.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/10-header.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/11-connection-bar.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/20-messages.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/21-tool-blocks.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/22-edit-diff.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/23-thinking.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/24-background-tasks.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/25-context-block.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/26-session-setup.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/30-markdown.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/40-input.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/41-autocomplete.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/42-activity-strip.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/43-file-autocomplete.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/44-snippets-autocomplete.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/45-selection-bar.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/46-keyboard-bar.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/47-keyboard-longpress.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/47-token-profile.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/50-welcome.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/51-modals.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/52-utilities.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/53-image-upload.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/54-todo-list.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/55-file-upload.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/56-chat-navigator.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/56-permission-card.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/56-plan-approval.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/56-question-form.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/57-swipe-indicator.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/58-session-families.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/59-about.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/61-log-explorer.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/62-json-tree.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/62-skills-widget.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/63-commands-widget.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/63-plugins-widget.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/63-terminal.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/64-search-files-widget.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/65-snippets-widget.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/66-active-sessions.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/66-agents-widget.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/66-file-explorer-widget.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/66-git-panel.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/66-history-explorer.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/67-diff-viewer.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/67-editor-view.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/67-file-preview-widget.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/68-browser-widget.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/68-compare-wizard.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/68-csv-preview.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/68-diff-preview.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/68-helpers-install-widget.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/68-image-annotate.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/68-terminal-view.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/68-uploads-widget.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/69-cost-analytics.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/70-config-panel.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/70-excalidraw.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/70-prompt-explorer.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/71-chart.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/72-discussion-sidebar.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/74-debug-logs.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/80-open-dialog.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/80-quick-switcher.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/80-widget-system.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/81-quick-actions.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/82-context-popover.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/83-context-menu.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/85-lazy-loading.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/86-zen-mode.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/87-grid-switcher.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/css/login.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/dist/app.bundle.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/feature-triage.html +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/icons/apple-touch-icon.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/icons/favicon-32.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/icons/favicon.ico +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/icons/icon-128.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/icons/icon-144.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/icons/icon-152.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/icons/icon-180.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/icons/icon-192.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/icons/icon-384.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/icons/icon-512.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/icons/icon-72.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/icons/icon-96.png +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/action-delegate.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/activity-strip.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/app/context-menus.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/app/file-preview.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/app/init-ui.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/app/input-events.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/app/input-resize.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/app/message-actions.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/app/panels.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/app/rendering-delegators.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/app/server-loading.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/app/session-ops.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/app/session-switch.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/app/settings-helpers.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/app/startup-welcome.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/app-context.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/app.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/auth-fetch.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/background-tasks.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/boot.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/caret-position.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/chat-navigator.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/chat-search.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/command-executor.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/command-store.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/components.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/config.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/context-menu.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/controllers/chat-controller.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/controllers/dialog-controller.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/controllers/tab-controller.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/controllers/thinking-controller.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/diff-utils.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/drafts-pill.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/editor-view.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/effort-settings.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/feature-triage.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/file-autocomplete.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/file-tabs.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/gestures.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/grid-switcher.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/input-handler.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/keyboard-bar.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/layout-switcher.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/linkify-utils.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/login.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/open-dialog.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/orphan-terminals.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/path-utils.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/perf-marks.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/permission-settings.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/pointer-input.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview/json-tree-menu.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview/json-tree-toolbar.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview/json-tree.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview/preview-breadcrumb.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview/preview-edit.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview/preview-events.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview/preview-history.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview/preview-inline-edit.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview/preview-poll.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview/preview-render.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview/preview-search.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview/preview-state.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview/preview-utils.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview-plugins/chart-plugin.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview-plugins/csv-plugin.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview-plugins/diff-plugin.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview-plugins/excalidraw-plugin.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview-plugins/html-plugin.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview-plugins/image-plugin.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview-plugins/index.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview-plugins/json-plugin.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview-plugins/jsonl-plugin.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview-plugins/markdown-plugin.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview-plugins/panzoom-plugin.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/preview-plugins/plugin-helpers.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/project-color-picker.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/project-colors.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/prompt-favorites.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/quick-actions-menu.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/quick-actions-registry.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/quick-switcher/controller.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/quick-switcher/fuzzy-scorer.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/quick-switcher/index.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/quick-switcher/providers/base-provider.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/quick-switcher/providers/command-provider.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/quick-switcher/providers/file-provider.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/quick-switcher/providers/panel-provider.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/quick-switcher/providers/project-provider.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/quick-switcher/providers/read-files-provider.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/quick-switcher/providers/skills-provider.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/quick-switcher/registry.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/quick-switcher/ui/item.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/quick-switcher/ui/picker.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/recent-opens.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/scroll-manager.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/scroll-state-machine.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/selection/action-bar.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/selection/index.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/selection/selection-handler.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/selection/state.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/session/agent-progress.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/session/handle-agent-message.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/session/handle-message.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/session/interactive.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/session/message-store.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/session/messages.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/session/persistence.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/session/restore.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/session/sync.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/session-container-pool.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/session-setup-panel.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/session.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/shortcut-hints.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/shortcuts.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/skills-autocomplete.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/snippets-autocomplete.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/stash-refs-view.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/stash-ui.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/stash.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/status-bar.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/token-profile.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/tool-renderer-blocks.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/tool-renderer-thinking.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/tool-renderer.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/tooltips.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/upload-manager.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/utils.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/welcome/api.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/welcome/cards.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/welcome/context-menu.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/welcome/families.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/welcome/preview.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/welcome/state.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/welcome.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widget-system/base-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widget-system/device-manager.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widget-system/event-bus.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widget-system/icons.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widget-system/index.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widget-system/init.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widget-system/types/bottom-sheet.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widget-system/types/floating.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widget-system/types/index.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widget-system/types/modal.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widget-system/types/sidebar.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widget-system/types/tab.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widget-system/types/top-sheet.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widget-system/widget-manager.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/about-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/active-sessions-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/agents-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/browser-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/commands-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/config/commit-sections.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/config/dir-autocomplete.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/config/gestures.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/config/models-tab.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/config/quick-actions-tab.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/config/shortcut-editor.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/config/state.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/config/system-controls.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/config-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/cost-analytics-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/debug-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/diff-viewer-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/discussion-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/file-explorer-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/file-preview-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/git-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/helpers-install-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/history-explorer-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/image-annotate-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/image-preview-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/index.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/log-explorer-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/plugins-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/prompt-explorer-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/search-files-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/skills-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/snippets-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/sub-agents-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/tasks-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/terminal/connection.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/terminal/gestures.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/terminal/init.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/terminal/link-providers.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/terminal/osc52.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/terminal/render.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/terminal/size.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/terminal/state.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/terminal/wrap-utils.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/terminal-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/uploads-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/js/widgets/zen-widget.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/login.html +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/manifest.json +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/sw.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/vendor/LICENSES.txt +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/vendor/README.md +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/vendor/codemirror.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/vendor/codemirror.js.LEGAL.txt +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/vendor/github-markdown-dark.min.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/vendor/highlight-github-dark.min.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/vendor/highlight-lang-dockerfile.min.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/vendor/highlight-lang-nginx.min.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/vendor/highlight-lang-properties.min.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/vendor/highlight-lang-scala.min.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/vendor/highlight.min.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/vendor/marked.min.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/vendor/purify.min.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/vendor/xterm-addon-fit.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/vendor/xterm.css +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/vendor/xterm.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/static/web-client.html +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/subprocess_registry.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/tls_cert.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/tools/excalidraw-to-svg.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/tools/install-helpers.sh +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/tools/shadow-git +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/tools/shadow-query +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/tools/vegalite-to-svg.js +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/turn_query.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/turn_tracker.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/utils/__init__.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/utils/agent_cli.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/utils/bash_file_ops.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/utils/chart.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/utils/excalidraw.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/utils/file_lock.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/utils/file_paths.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/utils/generate_icons.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/utils/proc.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/utils/pty_backend.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/utils/pty_windows.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/utils/token_profiles.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/viewer_templates.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/welcome_search.py +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code.egg-info/dependency_links.txt +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code.egg-info/entry_points.txt +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code.egg-info/requires.txt +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code.egg-info/top_level.txt +0 -0
- {painapple_code-1.1.1 → painapple_code-1.1.2}/start.sh +0 -0
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
Notable changes are documented here per release. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions follow [SemVer](https://semver.org/), and the git tag is the single source of truth for the version (the PyPI wheel, the Docker image tag, and `__version__` all derive from it).
|
|
4
4
|
|
|
5
|
+
## 1.1.2 — 2026-09-30
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- `pbcopy` in the built-in terminal on Linux and macOS servers: `git diff | pbcopy` copies to the clipboard of the device you're using (via OSC 52, so it needs Settings → Terminal → "Terminal apps may write to clipboard"; inside tmux also `set -g allow-passthrough on`). A server's native `pbcopy` still takes priority.
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- Claude Sonnet 5.5 replaces Sonnet 5 in the model catalog, and is the new default model for the shadow-git-helper subagent.
|
|
14
|
+
|
|
5
15
|
## 1.1.1 — 2026-09-23
|
|
6
16
|
|
|
7
17
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: painapple-code
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.2
|
|
4
4
|
Summary: Self-hosted remote UI for Claude Code that journals every turn - background AI summaries become shadow-git commits and a queryable DuckDB history
|
|
5
5
|
Author-email: Michał Booth-Wrotkowski <michal@boothw.com>
|
|
6
6
|
License-Expression: AGPL-3.0-or-later
|
|
@@ -59,6 +59,10 @@ With it enabled, three guardrails stay on unconditionally:
|
|
|
59
59
|
- **Reading the clipboard is never allowed.** The OSC 52 read form is consumed and refused, so a terminal program can't see what you've copied.
|
|
60
60
|
- **Reconnects never replay writes.** Scrollback replayed after a reconnect (which iPad PWAs do constantly) is stripped of clipboard sequences server-side, so an hour-old yank can't re-hijack your clipboard when a tab wakes up.
|
|
61
61
|
|
|
62
|
+
### `pbcopy`
|
|
63
|
+
|
|
64
|
+
Terminals on Linux and macOS servers come with a `pbcopy` that works like the macOS one, except it copies to the clipboard of the device you're using. `git diff | pbcopy`, `pbcopy < notes.txt` and `pwd | pbcopy` all work. It sends OSC 52, so it needs the setting above, and inside tmux it also needs `set -g allow-passthrough on`. It's added to the **end** of `PATH`, which means a macOS server's own `pbcopy` still takes priority. There is no `pbpaste`, because terminal programs are never allowed to read the clipboard. To paste, use Cmd/Ctrl+V.
|
|
65
|
+
|
|
62
66
|
## Logging into Claude from the terminal
|
|
63
67
|
|
|
64
68
|
The Claude CLI's OAuth login is interactive, so the `/login` slash command drops you into a terminal tab pre-typed with `claude auth login` — follow the prompts there. If the CLI hits an expired or missing token mid-session, the error card in the chat includes a one-click **Login** button that opens the same terminal. `/logout` mirrors this with `claude auth logout`.
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.1.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 1,
|
|
21
|
+
__version__ = version = '1.1.2'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 1, 2)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g2fe4788'
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
# this over models.yaml. Keep in sync with the shipped models.yaml.
|
|
4
4
|
|
|
5
5
|
selectable:
|
|
6
|
-
- id: claude-sonnet-5
|
|
7
|
-
label: Sonnet 5
|
|
6
|
+
- id: claude-sonnet-5-5
|
|
7
|
+
label: Sonnet 5.5
|
|
8
8
|
desc: Balanced speed and capability
|
|
9
9
|
- id: claude-opus-5-5[1m]
|
|
10
10
|
label: Opus 5.5 (1M)
|
|
@@ -633,7 +633,7 @@ def save_global_config(config: dict):
|
|
|
633
633
|
# Persisted in the global config so it survives helper reinstalls
|
|
634
634
|
# (install-helpers.sh cp -f's the bundled default over the top; we re-apply this).
|
|
635
635
|
HELPER_AGENT_INHERIT = "inherit"
|
|
636
|
-
DEFAULT_HELPER_AGENT_MODEL = "claude-sonnet-5"
|
|
636
|
+
DEFAULT_HELPER_AGENT_MODEL = "claude-sonnet-5-5"
|
|
637
637
|
|
|
638
638
|
|
|
639
639
|
def get_helper_agent_options() -> list[str]:
|
{painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/tools/agents/shadow-git-helper.md
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: shadow-git-helper
|
|
3
3
|
description: "Searches Shadow Git repository to find file history, changes by session, blame analysis, and code archaeology. Uses git commands on the bare repo to trace when/how/why code changed."
|
|
4
|
-
model: claude-sonnet-5
|
|
4
|
+
model: claude-sonnet-5-5
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Shadow Git Helper - Code Archaeologist
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# pbcopy for painapple terminals — copies stdin to the BROWSER's clipboard.
|
|
3
|
+
#
|
|
4
|
+
# The PTY runs on the server, so a native clipboard tool (if any) would
|
|
5
|
+
# write the server's clipboard, not the one on the device you're typing on.
|
|
6
|
+
# Instead this emits OSC 52 (ESC ] 52 ; c ; <base64> BEL), which the
|
|
7
|
+
# terminal widget turns into navigator.clipboard.writeText() — see
|
|
8
|
+
# static/js/widgets/terminal/osc52.js. That handler is opt-in
|
|
9
|
+
# (Settings → Terminal → "Terminal apps may write to clipboard"); when it's
|
|
10
|
+
# off the widget toasts instead of copying, so a failure is never silent.
|
|
11
|
+
#
|
|
12
|
+
# The server APPENDS this directory to PATH, so a real pbcopy (macOS) still
|
|
13
|
+
# wins. Usage mirrors macOS: `cmd | pbcopy`, `pbcopy < file`. Flags that
|
|
14
|
+
# macOS pbcopy accepts (-pboard, -Prefer) are ignored.
|
|
15
|
+
|
|
16
|
+
# Where the escape goes: the controlling terminal, so `pbcopy >/dev/null`
|
|
17
|
+
# and redirected stdout still work. No tty → nothing can receive it.
|
|
18
|
+
tty_out=/dev/tty
|
|
19
|
+
if ! { true >"$tty_out"; } 2>/dev/null; then
|
|
20
|
+
echo "pbcopy: no terminal to send the clipboard escape to" >&2
|
|
21
|
+
exit 1
|
|
22
|
+
fi
|
|
23
|
+
|
|
24
|
+
# The widget refuses payloads over 2,000,000 base64 chars (~1.5 MB of text).
|
|
25
|
+
max_bytes=1500000
|
|
26
|
+
|
|
27
|
+
data=$(base64 | tr -d '\r\n')
|
|
28
|
+
if [ "${#data}" -gt 2000000 ]; then
|
|
29
|
+
echo "pbcopy: input too large for the terminal clipboard (max ~$max_bytes bytes)" >&2
|
|
30
|
+
exit 1
|
|
31
|
+
fi
|
|
32
|
+
|
|
33
|
+
if [ -n "$TMUX" ]; then
|
|
34
|
+
# Inside tmux the outer terminal never sees an app's raw OSC 52 unless
|
|
35
|
+
# `set-clipboard on`; wrap it in DCS passthrough (tmux >= 3.3 also
|
|
36
|
+
# needs `set -g allow-passthrough on`).
|
|
37
|
+
printf '\033Ptmux;\033\033]52;c;%s\a\033\\' "$data" >"$tty_out"
|
|
38
|
+
else
|
|
39
|
+
printf '\033]52;c;%s\a' "$data" >"$tty_out"
|
|
40
|
+
fi
|
|
@@ -20,6 +20,19 @@ import termios
|
|
|
20
20
|
|
|
21
21
|
logger = logging.getLogger(__name__)
|
|
22
22
|
|
|
23
|
+
# Shims that make clipboard tools reach the BROWSER (tools/term-bin/pbcopy
|
|
24
|
+
# emits OSC 52, which the terminal widget handles). Appended — never
|
|
25
|
+
# prepended — to PATH, so a native pbcopy (a macOS server) still wins.
|
|
26
|
+
TERM_BIN_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'tools', 'term-bin')
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def with_term_bin(path: str) -> str:
|
|
30
|
+
"""PATH with TERM_BIN_DIR appended once (idempotent for nested spawns)."""
|
|
31
|
+
parts = [p for p in path.split(os.pathsep) if p] if path else []
|
|
32
|
+
if TERM_BIN_DIR in parts:
|
|
33
|
+
return path
|
|
34
|
+
return os.pathsep.join(parts + [TERM_BIN_DIR])
|
|
35
|
+
|
|
23
36
|
|
|
24
37
|
class PosixPty:
|
|
25
38
|
"""A forked shell attached to a pty master fd."""
|
|
@@ -147,6 +160,7 @@ def spawn_pty(cwd: str, rows: int = 24, cols: int = 80) -> PosixPty:
|
|
|
147
160
|
|
|
148
161
|
os.environ['TERM'] = 'xterm-256color'
|
|
149
162
|
os.environ['COLORTERM'] = 'truecolor'
|
|
163
|
+
os.environ['PATH'] = with_term_bin(os.environ.get('PATH', ''))
|
|
150
164
|
|
|
151
165
|
shell = os.environ.get('SHELL', '/bin/bash')
|
|
152
166
|
os.execvp(shell, [shell, '-i'])
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: painapple-code
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.2
|
|
4
4
|
Summary: Self-hosted remote UI for Claude Code that journals every turn - background AI summaries become shadow-git commits and a queryable DuckDB history
|
|
5
5
|
Author-email: Michał Booth-Wrotkowski <michal@boothw.com>
|
|
6
6
|
License-Expression: AGPL-3.0-or-later
|
|
@@ -496,6 +496,7 @@ src/painapple_code/tools/shadow-git
|
|
|
496
496
|
src/painapple_code/tools/shadow-query
|
|
497
497
|
src/painapple_code/tools/vegalite-to-svg.js
|
|
498
498
|
src/painapple_code/tools/agents/shadow-git-helper.md
|
|
499
|
+
src/painapple_code/tools/term-bin/pbcopy
|
|
499
500
|
src/painapple_code/utils/__init__.py
|
|
500
501
|
src/painapple_code/utils/agent_cli.py
|
|
501
502
|
src/painapple_code/utils/bash_file_ops.py
|
{painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code.egg-info/scm_file_list.json
RENAMED
|
@@ -504,6 +504,7 @@
|
|
|
504
504
|
"src/painapple_code/tools/install-helpers.sh",
|
|
505
505
|
"src/painapple_code/tools/shadow-git",
|
|
506
506
|
"src/painapple_code/tools/shadow-query",
|
|
507
|
+
"src/painapple_code/tools/term-bin/pbcopy",
|
|
507
508
|
"src/painapple_code/tools/vegalite-to-svg.js",
|
|
508
509
|
"src/painapple_code/turn_query.py",
|
|
509
510
|
"src/painapple_code/turn_tracker.py",
|
|
@@ -633,6 +634,7 @@
|
|
|
633
634
|
"tests/test_process_chain_collapse.py",
|
|
634
635
|
"tests/test_providers.py",
|
|
635
636
|
"tests/test_security_headers.py",
|
|
637
|
+
"tests/test_terminal_pbcopy.py",
|
|
636
638
|
"tests/test_text_io_encoding.py",
|
|
637
639
|
"tests/test_tls_cert_san.py",
|
|
638
640
|
"tests/test_tls_optional.py",
|
|
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
|
{painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/assets/turn-summary-bar-expanded.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{painapple_code-1.1.1 → painapple_code-1.1.2}/docs-site/getting-started/install-devcontainer.md
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/claude/__init__.py
RENAMED
|
File without changes
|
{painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/claude/capabilities.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/claude/summary.py
RENAMED
|
File without changes
|
{painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/claude/translate.py
RENAMED
|
File without changes
|
{painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/claude_sdk/__init__.py
RENAMED
|
File without changes
|
{painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/claude_sdk/driver.py
RENAMED
|
File without changes
|
{painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/codex/__init__.py
RENAMED
|
File without changes
|
{painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/codex/capabilities.py
RENAMED
|
File without changes
|
|
File without changes
|
{painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/providers/codex/translate.py
RENAMED
|
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
|
{painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_app_commit_sections.py
RENAMED
|
File without changes
|
|
File without changes
|
{painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_app_session_prefs.py
RENAMED
|
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
|
{painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_project_config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_session_stash.py
RENAMED
|
File without changes
|
{painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_session_welcome.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{painapple_code-1.1.1 → painapple_code-1.1.2}/src/painapple_code/routes/api_shadow_search.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|