stkit 17.2.5__tar.gz → 17.2.6__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.
- {stkit-17.2.5 → stkit-17.2.6}/CHANGELOG.md +6 -0
- {stkit-17.2.5 → stkit-17.2.6}/PKG-INFO +1 -1
- {stkit-17.2.5 → stkit-17.2.6}/pyproject.toml +1 -1
- {stkit-17.2.5 → stkit-17.2.6}/stk/__init__.py +1 -1
- {stkit-17.2.5 → stkit-17.2.6}/stk/cli/copy_rules.py +5 -2
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_copy_rules.py +3 -1
- {stkit-17.2.5 → stkit-17.2.6}/.gitignore +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/LICENSE +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/README.md +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/SECURITY.md +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/examples/minimal/.env-sample +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/examples/minimal/.gitignore +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/examples/minimal/README.md +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/examples/minimal/minimal/__init__.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/examples/minimal/minimal/app.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/examples/minimal/minimal/migrations/364232ae77d5_add_note.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/examples/minimal/minimal/note/__init__.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/examples/minimal/minimal/note/models.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/examples/minimal/minimal/note/templates/note/index.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/examples/minimal/minimal/note/views.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/examples/minimal/minimal/settings.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/examples/minimal/minimal/templates/layout.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/examples/minimal/pyproject.toml +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/examples/minimal/tests/__init__.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/examples/minimal/tests/test_app.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/examples/minimal/uv.lock +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/__main__.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/agent_login.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/app.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/checks.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/cli/__init__.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/cli/agent.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/cli/base.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/cli/database.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/cli/develop.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/cli/doctor.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/cli/main.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/cli/reports.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/cli/smoke.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/cli/users.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/cli/watch.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/extensions.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/files/__init__.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/files/models.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/files/store.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/files/views.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/mcp/__init__.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/mcp/models.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/mcp/server.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/mcp/views.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/migrations/__init__.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/migrations/env.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/migrations/script.py.mako +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/migrations/versions/stk_0001_initial_schema.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/migrations/versions/stk_0002_jobs.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/migrations/versions/stk_0003_files.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/migrations/versions/stk_0004_notifications.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/migrations/versions/stk_0005_mcp_tokens.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/migrations/versions/stk_0006_stk_mcp_token.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/notification/__init__.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/notification/models.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/notification/views.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/portal/views.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/public/__init__.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/public/models.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/public/views.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/__init__.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/app/CLAUDE.md +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/app/Dockerfile +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/app/README.md +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/app/__app__/__init__.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/app/__app__/app.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/app/__app__/settings.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/app/claude/skills/stk-api/SKILL.md +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/app/claude/skills/stk-blueprint/SKILL.md +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/app/claude/skills/stk-deploy/SKILL.md +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/app/claude/skills/stk-lessons/SKILL.md +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/app/claude/skills/stk-migrate/SKILL.md +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/app/docker-compose.yml +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/app/dockerignore +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/app/env-sample +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/app/github/workflows/checks.yml +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/app/gitignore +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/app/nginx/nginx.conf +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/app/nginx/stk.conf +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/app/postgres/init-db.sh +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/app/pyproject.toml +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/app/tests/__init__.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/app/tests/test_app.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/generator.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/scaffold/templates.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/security.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/settings.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/shell.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/VERSIONS.txt +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/css/app.css +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/css/layout.css +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/css/vuetify.min.css +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.animals.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.arrows-1.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.arrows-2.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.badges.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.brand-1.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.brand-2.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.buildings.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.charts.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.communication.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.computers.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.core.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.currencies.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.database.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.design-1.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.design-2.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.development.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.devices-1.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.devices-2.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.document.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.e-commerce.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.electrical.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.extensions.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.food.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.games.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.gender.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.gestures.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.health.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.laundry.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.letters.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.logic.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.map.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.math.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.media.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.mood.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.nature.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.numbers.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.photography.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.shapes.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.sport.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.symbols.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.system-1.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.system-2.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.system-3.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.text.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.vehicles.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.version-control.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.weather.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/fonts/tabler-icons.zodiac.woff2 +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/icons/tabler-icons.min.css +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/img/auth-bg.webp +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/img/favicon.ico +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/img/stk.svg +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/js/axios.min.js +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/js/components/NotificationDropdown.js +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/js/components/ThemeSwitcher.js +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/js/components/TransitionExpand.js +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/js/components/VerticalNavGroup.js +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/js/components/VerticalNavLink.js +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/js/components/VerticalNavSectionTitle.js +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/js/components/index.js +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/js/config.js +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/js/vue.min.js +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/js/vuetify.min.js +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/static/robots.txt +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/tasks/__init__.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/tasks/models.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/401.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/404.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/500.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/_brand.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/auth_layout.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/cms/activities.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/cms/jobs.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/cms/roles.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/cms/users.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/dashboard.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/index.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/layout.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/login-layout.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/mcp/tokens.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/_macros.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/_messages.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/change_password.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/confirm_email.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/email/change_notice.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/email/change_notice.txt +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/email/confirmation_instructions.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/email/confirmation_instructions.txt +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/email/login_instructions.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/email/login_instructions.txt +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/email/reset_instructions.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/email/reset_instructions.txt +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/email/reset_notice.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/email/reset_notice.txt +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/email/welcome.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/email/welcome.txt +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/forgot_password.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/login_user.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/mf_recovery.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/mf_recovery_codes.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/register_user.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/reset_password.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/send_confirmation.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/send_login.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/two_factor_select.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/two_factor_setup.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/two_factor_verify_code.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/wan_register.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/wan_signin.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/templates/security/wan_verify.html +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/user/__init__.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/user/forms.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/user/models.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/user/views.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/utils/email.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/utils/netguard.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/utils/ratelimit.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/stk/websocket.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_agent_operability.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_app_index.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_branding.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_builder_ux.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_cli.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_composition.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_csrf_exempt.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_error_handler.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_files.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_jobs.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_mcp.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_mcp_migration.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_migration_drift.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_netguard.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_notifications.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_production_security.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_revision_imports.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_route_collisions.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_scaffolder.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_security_compatibility.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_shell.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_smoke_pages.py +0 -0
- {stkit-17.2.5 → stkit-17.2.6}/tests/test_static_versioning.py +0 -0
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v17.2.6 (2026-10-31)
|
|
4
|
+
|
|
5
|
+
No migration required.
|
|
6
|
+
|
|
7
|
+
- `stk smoke`'s `hex-id` rule no longer flags mixed-case names such as `Ed25519`. Ids are printed in one case, so `1fbaac41` and `1FBAAC41` still fail (Build Loop).
|
|
8
|
+
|
|
3
9
|
## v17.2.5 (2026-10-31)
|
|
4
10
|
|
|
5
11
|
No migration required.
|
|
@@ -83,14 +83,17 @@ def uuid(text):
|
|
|
83
83
|
|
|
84
84
|
|
|
85
85
|
def hex_id(text):
|
|
86
|
-
"""6+ hex characters with at least two digits and a letter, alone
|
|
87
|
-
word: 'Request 1fbaac41'. Uuids are their own rule.
|
|
86
|
+
"""6+ hex characters in one case with at least two digits and a letter, alone
|
|
87
|
+
or glued to a word: 'Request 1fbaac41'. Uuids are their own rule. Mixed case
|
|
88
|
+
is a name, not an id: 'Ed25519'."""
|
|
88
89
|
text = UUID.sub(" ", text)
|
|
89
90
|
out = []
|
|
90
91
|
for m in HEX.finditer(text):
|
|
91
92
|
token = m.group()
|
|
92
93
|
if sum(c.isdigit() for c in token) < 2 or token.isdigit():
|
|
93
94
|
continue
|
|
95
|
+
if token not in (token.lower(), token.upper()):
|
|
96
|
+
continue
|
|
94
97
|
if HASH_LABEL.search(text[max(0, m.start() - 20) : m.start()]):
|
|
95
98
|
continue
|
|
96
99
|
out.append(_around(text, m))
|
|
@@ -31,9 +31,11 @@ class CopyRuleTests(unittest.TestCase):
|
|
|
31
31
|
def test_hex_id(self):
|
|
32
32
|
self.assertRule(
|
|
33
33
|
hex_id,
|
|
34
|
-
["Request 1fbaac41 failed", "texteb148f8f"],
|
|
34
|
+
["Request 1fbaac41 failed", "texteb148f8f", "Build 1FBAAC41"],
|
|
35
35
|
[
|
|
36
36
|
"SHA-256: 9f86d081884c7d65",
|
|
37
|
+
"Every run gets a fresh Ed25519 key",
|
|
38
|
+
"a facade from a decade ago",
|
|
37
39
|
"Total 1234567",
|
|
38
40
|
"Accepted",
|
|
39
41
|
"Owner 3f2b8c1e-9a4d-4e2f-8b1c-0d9e7f6a5b4c",
|
|
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
|
|
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
|
|
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
|
|
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
|