Skip to content

Releases: ni-kismet/systemlink-cli

v0.17.0

15 Dec 15:32

Choose a tag to compare

v0.17.0 (2025-12-15)

Chores

Documentation

  • e2e: Clarify statefulness patterns and parallel safety verification (de832b3)

  • Add parallel e2e test execution guidance with pytest-xdist (b4d077a)

  • Comprehensive CLI consistency analysis and improvement proposals (95bafbb)

  • Analyzed all commands for consistency in flags, naming, and patterns

  • Identified 7 key areas with specific inconsistencies

  • Proposed prioritized recommendations with rationale

  • Outlined 3-phase implementation strategy (non-breaking, breaking, docs)

  • Update README to match refreshed CLI help text (8c69cd1)

Features

  • cli: Add template/workflow get; support name for export; unify workspace flags; remove -f from --file; update notebook help; README updates (4729569)

Testing

  • Add unit coverage for main auth/info, templates/workflows get/init, notebook update/sync, file watch guard, webapp open; fix webapp open test; format + lint (927892c)

  • e2e: Update workspace e2e for unified --workspace; docs: README for get/export and flags; chore: dev install pytest-xdist (4b75ecb)

What's Changed

Full Changelog: v0.16.1...v0.17.0

v0.16.1

13 Dec 03:49

Choose a tag to compare

v0.16.1 (2025-12-13)

Bug Fixes

  • Merge pull request #31 from ni-kismet/fix/feed-package-issues (b191d93)

Fix feed package upload issues and add E2E tests

What's Changed

  • Fix feed package upload issues and add E2E tests by @fredvisser in #31

Full Changelog: v0.16.0...v0.16.1

v0.16.0

12 Dec 18:18

Choose a tag to compare

v0.16.0 (2025-12-12)

Features

What's Changed

  • Add feed management commands with unit and E2E coverage by @fredvisser in #30

Full Changelog: v0.15.0...v0.16.0

v0.15.0

12 Dec 14:47

Choose a tag to compare

v0.15.0 (2025-12-12)

Bug Fixes

  • Address remaining PR review comments (4cadd1e)

  • Fix SLE/SLS URL detection inconsistency in conftest.py

    • Extract _is_sle_url() helper using same patterns as platform.py
    • Only specific URL patterns (api.systemlink.io, *-api.lifecyclesolutions.ni.com)
      are classified as SLE, matching production detection logic
  • Improve info command table formatting

    • Add detailed comment explaining why table_utils is not used
      (designed for list-style output, not key-value display)
    • Extract truncate() helper function for cleaner code
    • Use variables for magic numbers (max_value_width, content_width)
  • Improve platform detection reliability and address PR feedback (69c0dc8)

  • Add SYSTEMLINK_PLATFORM env var for explicit platform specification

  • Update detection priority: explicit env var > keyring config > URL fallback

  • Add explicit platform field to e2e config template and CLI runner

  • Add explanatory comment for bare except clause in _get_keyring_config

  • Fix return type annotations (Optional[str]) in test_info_command.py

  • Update _make_cli_runner to pass SYSTEMLINK_PLATFORM when specified

This makes platform detection more reliable by preferring explicit specification over URL pattern matching, which is brittle since both SLE and SLS can be installed on arbitrary servers/DNS names.

  • Exclude e2e tests from default pytest run (1e50650)

Configure pytest to only run unit tests by default:

  • Add --ignore=tests/e2e to addopts
  • Set testpaths to tests/unit
  • Add missing pytest markers (sls, sle, file)

E2E tests can still be run explicitly with:
poetry run pytest tests/e2e/

  • E2e tests for dual SLE/SLS configuration (8b2289a)

  • Fix credential lookup order: env vars now checked before keyring

  • Add dynamic platform detection from URL for runtime overrides

  • Fix URL patterns to correctly distinguish SLE cloud from SLS on-prem

  • Fix e2e test fixtures to use correct env var (SYSTEMLINK_API_URL)

  • Update tests to use configured_workspace fixture

  • Add confirmation input for notebook delete commands in tests

  • Update unit tests for new URL pattern detection

  • Address PR review comments and merge with main (c0b2873)

  • Remove duplicate is_sls variable in notebook_click.py start command

  • Fix return type annotation in test_info_command.py (Optional[str])

  • Add explanatory comment for bare except clause in platform.py

  • Merge with main branch (resolve conflict in conftest.py markers)

Refactoring

  • Address remaining PR review feedback (c4a7b3e)

  • Move 'os' import to module level in platform.py

  • Rename 'maybe' variable to 'config_url' in utils.py for clarity

  • Update URL encoding comments for accuracy (safe='')

  • Fix trailing space in error message

  • Remove duplicate API comments in notebook_click.py

  • Update SLE comment to 'cloud and hosted' for accuracy

  • Extract _build_create_execution_payload helper function

  • Extract _parse_execution_response helper function

  • Add explicit platform='SLE' to DFF test for clarity

  • Improve retry test assertions with exit code verification

  • Update configured_workspace fixture docstring for clarity

What's Changed

  • feat: Platform detection and feature gating for SLE/SLS by @fredvisser in #29

Full Changelog: v0.14.0...v0.15.0

v0.14.0

10 Dec 19:39

Choose a tag to compare

v0.14.0 (2025-12-10)

Bug Fixes

  • Address PR review feedback (bbc50ec)

  • Fix --name/--properties priority: --name flag now takes precedence

  • Add test for --name + --properties combination

  • Update watchdog version constraint to ^6.0.0

  • Fix README query filter syntax to use search-files format

  • Fix README --order-by example to use separate flags

  • Add --filter example to file list documentation

  • Add test for upload nonexistent file error handling

  • Handle duplicate filenames in move-to directory

  • Add comments to empty except clauses in E2E tests

Chores

  • deps: Bump urllib3 from 2.5.0 to 2.6.0 (e055ea3)

Bumps urllib3 from 2.5.0 to 2.6.0.


updated-dependencies:

  • dependency-name: urllib3
    dependency-version: 2.6.0
    dependency-type: indirect ...

Signed-off-by: dependabot[bot] support@github.com

Features

  • Add file management commands (9e9f6b4)

Add comprehensive file management CLI commands for SystemLink File Service:

Commands: - file list: List files with filtering by workspace, name, extension - file get: Get detailed metadata for a single file - file upload: Upload files with optional workspace and properties - file download: Download files with force overwrite option - file delete: Delete files with confirmation prompt - file query: Query files with search expressions - file update-metadata: Update file name and properties - file watch: Watch folder and auto-upload new files (requires watchdog)

Features: - Uses performant /search-files endpoint instead of /query-files-linq - Supports workspace filtering by name or ID (resolves names to IDs) - Full UUID display in table output (36 chars) - Dot file filtering in watch command (ignores .DS_Store etc) - Debounce support in watch command to handle file write completion - Move-to or delete-after-upload options in watch command

Tests: - 31 unit tests covering all file commands - 12 E2E tests against dev tier

Dependencies: - watchdog ~=6.0.0 (optional, for watch command)

Refactoring

  • Align CLI commands with best practices (db257af)

  • Add confirmation prompts to delete commands (notebook, templates, workflows, webapp)

  • Replace raise click.ClickException with sys.exit(ExitCodes.*) for proper exit codes

  • Hide function command from top-level help (still accessible)

  • Fix -fmt/-f conflict in function execute commands (remove -f from format to avoid conflict with --function-id)

  • Add ExitCodes import to workflows_click.py

  • Update tests to handle confirmation prompts and correct exit codes

What's Changed

New Contributors

Full Changelog: v0.13.0...v0.14.0

v0.13.0

09 Dec 20:51

Choose a tag to compare

v0.13.0 (2025-12-09)

Features

  • user: Add service account support (3c9602e)

Add support for service accounts (type: service) to user management commands.

Changes

user create - Add --type option (user/service) with interactive prompt - Add --login and --phone options for regular users - Service accounts default lastName to 'ServiceAccount' - Validate that service accounts cannot have email/phone/niuaId/login

user list - Add --type filter (all/user/service) to filter by account type - Add ID column to table output - Add Type column showing 'User' or 'Service' - Update --filter to search across firstName, lastName, and email

user get - Show 'Service Account Details:' header for service accounts - Display account type in output

user update - Validate that service accounts cannot be updated with email/phone/niuaId/login - Add --login, --phone, --niua-id options

Testing - Add TestServiceAccounts class with 8 new tests - Update existing tests to include --type option - All 133 unit tests pass

What's Changed

New Contributors

Full Changelog: v0.12.2...v0.13.0

v0.12.2

06 Oct 15:26

Choose a tag to compare

v0.12.2 (2025-10-06)

Bug Fixes

  • Add name filter to DFF list command (98bf939)

v0.12.1

23 Sep 15:50

Choose a tag to compare

v0.12.1 (2025-09-23)

Bug Fixes

v0.12.0

23 Sep 14:32

Choose a tag to compare

v0.12.0 (2025-09-23)

Features

Add webapp commands

v0.11.3

22 Sep 21:52

Choose a tag to compare

v0.11.3 (2025-09-22)

Bug Fixes

  • e2e: Remove duplicate pytest.fixture decorator (be9ed09)

Chores

  • types: Add types-requests and types-tabulate to dev deps for mypy in CI (191b970)

  • lint: Fix import ordering and docstring/format issues (f432ef6)