@ably/cli
Version:
Ably CLI for Pub/Sub, Chat and Spaces
526 lines (346 loc) • 17 kB
Markdown
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.15.0] - 2025-12-03
### Added
- Public Preview version notice displayed across all CLI modes
- Release status information to version command
### Changed
- Improved support commands for web CLI mode with proper link display
- Consolidated terminal connection logic to prevent duplicate WebSocket connections
- Refactored exit handling for more consistent behavior across commands
### Fixed
- Fixed spaces cursors `get-all` command hanging issue
- Fixed chat occupancy `get` command hanging issue
- Fixed initial command execution in split terminal mode
- Fixed initial command being sent when resuming sessions
- Prevented duplicate WebSocket connections in terminal server
- Improved command cleanup and exit code handling
### Development
- Added `.env` to `.gitignore` to prevent committing secrets
- Applied Prettier formatting across entire codebase and enforced in CI
- Centralized chat command cleanup logic
- Removed obsolete test scripts and dependencies on Sinon
- Improved test mode detection using `isTestMode()` helper
- Fixed various flaky e2e and integration tests
## [0.14.0] - 2025-10-23
### Changed
- Bumped the `@ably/chat` version to 1.0.0
- Renamed the `roomId` parameter for `rooms` commands to `room` for consistency.
## [0.13.0] - 2025-09-10
### Fixed
- Setting the `--endpoint` flag or `ABLY_ENDPOINT` environment variable correctly sets the endpoint SDK client option
- Setting the `ABLY_CONTROL_HOST` environment variable correctly sets the Control API client hostname
### Added
- Add `ablyEndpoint` and `ablyControlHost` props to the AblyCliTerminal react component
## [0.12.0] - 2025-08-31
### Fixed
- Enhanced auth info display functionality to only hide when API key or token is explicitly provided (#81)
- Updated auth info tests to support async methods for improved consistency
- Resolved security vulnerability by updating @types/node-fetch to fix form-data dependency issue
- Added missing `await` keywords for async `showAuthInfoIfNeeded` calls throughout codebase
- Fixed "Unknown App" display issue by fetching and caching missing app names dynamically
- Improved interactive mode test assertions to expect `>` prompt instead of `$`
- Ensured correct default behavior in configuration handling
### Changed
- Refactored auth info display based on code review feedback for cleaner implementation
- Updated interactive mode prompt from `$` to `ably>` for better brand consistency (#54)
### Improved
- Web CLI tests now use TERMINAL_SERVER_URL environment variable for better test configuration
- Enhanced repository URLs to match new repository name across documentation
## [0.11.0] - 2025-08-08
### Added
- Added an AI_START_HERE.md file.
### Changed
- For chat rooms, `rooms messages get` is now `rooms messages history`
### Fixed
- Runtime errors now return more useful error messages when environment variables are not set.
- Fixed spaces cursor connection stability issues.
- Fixed various Web CLI terminal connection and UI issues.
### Improved
- Improved the terminal session and resume stability in message handling.
- Improved functionality of the API key selection flow.
- Improved AI assistant instructions.
## [0.10.0] - 2025-07-24
### Added
- Added `endpoint` option, to allow use with custom endpoints and dedicated environments.
### Changed
- For chat rooms, `rooms messages reactions add` is now `rooms messages reactions send`
### Fixed
- Race conditions in session storage to ensure smoother reconnection and consistent handling
## [0.9.0] - 2025-07-07
### Added
- Interactive mode improvements:
- Added helpful feedback when typing "ably" in interactive mode
- Improved welcome messages across all CLI modes
- Enhanced help display and SIGINT handling in interactive mode
- Allow help command in interactive mode
- WebSocket control message prefix protocol client implementation
- Hidden test:wait command for testing purposes
- Multi-project workspace documentation improvements
### Changed
- Restructured help system and promoted support commands
- Improved Ctrl+C handling during command execution
- Updated help instruction in interactive mode
- Enhanced anonymous mode command restrictions in web CLI
### Fixed
- Prevented terminal clearing in interactive mode and web terminals
- Fixed handling of binary WebSocket messages in client
- Resolved test failures in CI
- Fixed interactive mode tests and documented exit codes
## [0.8.2] - 2025-06-25
### Fixed
- Web CLI help command now properly displays help content when using `--help` flag
- Fixed padding issue that was cropping the bottom line of the terminal in Web CLI
- Resolved race condition in React Web CLI sessionId tests for better test reliability
- Fixed flaky test timing issue in manual reconnect test
## [0.8.1] - 2025-06-24
### Added
- Enhanced Web CLI mode restrictions with separate handling for authenticated and anonymous users
- Authenticated users can now access control plane commands (e.g., `auth:keys:list`, `apps:list`)
- Anonymous users are restricted from privacy-sensitive and authentication-required commands
- Wildcard pattern support for command restrictions (e.g., `config*`, `mcp*`)
- Clearer error messages that guide users to appropriate actions (login or install locally)
### Fixed
- Domain-scoped credential storage for enhanced security
- React Web CLI unit test failures
- CI reliability improvements around rate limits
- Web CLI mode now properly differentiates between authenticated and anonymous states
### Security
- Credentials are now properly scoped per domain, preventing cross-domain credential access
- Anonymous Web CLI users cannot access commands that might expose other users' activity
## [0.8.0] - 2025-06-20
### Changed
- Refactored client creation methods to provide type-specific alternatives
- Deprecated `createAblyClient()` method in favor of:
- `createAblyRestClient()` - Returns `Promise<Ably.Rest | null>`
- `createAblyRealtimeClient()` - Returns `Promise<Ably.Realtime | null>`
- This eliminates the need for type casting and improves type safety
- All 50+ command files updated to use the appropriate method
- All test files updated to match new method signatures
### Added
- Web CLI authentication support with credential validation UI
- Auto-update notifications to inform users about new CLI versions
- Auto-completion support for improved command discovery
- Standardized topic command display with `BaseTopicCommand`
- Restricted mode for Web CLI to handle anonymous users
- User agent header (`ably-cli`) in all data and control plane requests
- Reconnection attempt counter that resets on manual reconnect
- Line break between countdown and install instructions in reconnection display
### Fixed
- Presence CLI regression where commands were not working correctly
- Meta channel names for connection lifecycle logs (now use `[meta]connection.lifecycle`)
- Multi-line JSON handling in connection lifecycle tests
- E2E test failures for web-cli application with proper authentication scenarios
- Playwright E2E tests for rate limiting and server disconnection scenarios
- Credentials no longer baked into test builds
- Various linting errors across the codebase
- Consistent authentication recommendations when not logged in
- Help and list commands now have standardized output format
### Removed
- Obsolete TODO comments that have been completed
- Old test skip logic that was no longer needed
## [0.7.7] - 2025-06-14
### Fixed
- Updated React Web CLI README to reflect server separation
- Default to public CLI endpoint in development
### Changed
- Updated GitHub Actions to use checkout@v4
- Added release workflow for automated releases
- Updated CONTRIBUTING.md with release workflow documentation
## [0.7.6] - 2025-06-14
### Fixed
- Ensured README is properly visible in npm package
## [0.7.5] - 2025-06-14
### Fixed
- Explicitly linked to README in npm package configuration
## [0.7.4] - 2025-06-14
### Fixed
- Resolved npm package publishing issues
### Removed
- Cleaned up old Markdown files
## [0.7.3] - 2025-06-14
### Fixed
- Fixed global installs that were broken by npm link issues
## [0.7.2] - 2025-06-14
### Fixed
- Included README in npm package
## [0.7.1] - 2025-06-13
### Fixed
- Initial patch release after v0.7.0 with minor fixes
## [0.7.0] - 2025-06-13
### Security
- Fixed critical security vulnerabilities in dependencies:
- Updated `brace-expansion` to 1.1.12+ and 2.0.2+ to fix ReDoS vulnerability
- Updated `tar-fs` to 2.1.3+ to fix directory traversal vulnerability
- Applied pnpm overrides to enforce secure versions across all transitive dependencies
### Changed
- **BREAKING**: Complete removal of all server-related code from git history
- Git history has been rewritten to remove all traces of terminal server implementation
- Repository size reduced by 71% (from 68MB to 20MB)
- All old branches and tags that referenced server code have been removed
- Contributors will need to re-clone the repository after this update
### Fixed
- Fixed environment-dependent test skips by correcting environment variable names
- Updated .env.example to remove obsolete variables
- Ensured all tests run consistently in CI environments
### Added
- Added placeholder file (server/REMOVED.md) to indicate server code has been moved
- Added comprehensive documentation for the server migration process
### Removed
- Removed all server-related files from git history including:
- Server directory and all its contents
- Docker configurations
- Terminal server scripts
- Server-specific tests and documentation
- Removed unnecessary test skip logic that was checking for environment variables
## [0.6.0] - 2025-06-12
### Changed
- **BREAKING**: Terminal server functionality has been moved to a separate private repository (`@ably/cli-terminal-server`).
- Removed server-specific dependencies and configurations
- Updated documentation to reflect the separation
- Web CLI now connects to the production endpoint `wss://web-cli.ably.com` by default
### Added
- Instructions in CONTRIBUTING.md for Ably engineers to test against local terminal server
### Removed
- Server directory and all terminal server implementation code
- Server-related test files that were specific to server implementation
### Notes
- The terminal server is now maintained in a private repository
- Web CLI functionality remains fully operational using the production terminal server endpoint
- For local development against terminal server, see CONTRIBUTING.md
## [0.5.0] - 2024-05-15
### Added
- Enhanced Web CLI with improved connection status display and animations.
- Support for Docker container development with `pnpm dev:container`.
- Improved bench tooling for performance testing.
- Self-contained connection-status overlay with tests for Web CLI.
- Postinstall notice for better user experience.
- Support for `--filter` option to the pnpm test runner.
- Split-screen support planning in terminal.
- Defer first WebSocket connection until terminal is visible.
- Add inactivity timeout for web connections.
- New convenience development commands.
### Changed
- Improved UI styling and state persistence in Web CLI.
- Enhanced example UI with integrated CliDrawer component.
- Optimized prepare script to avoid redundant build steps.
- Improved specificity for terminal server connection resume functionality.
- Switched from npm to pnpm as the preferred package manager.
- Web CLI no longer reconnects automatically for idle connections.
- Silenced React terminal noise and added opt-in debug logging.
### Fixed
- Addressed numerous CI and build issues.
- Fixed flakey tests in various test suites.
- Resolved CPU issues with Ora spinner.
- Fixed restricted shell parsing error.
- Resolved history command issue with API key environment variable and silent failures.
- Fixed terminal issues related to color support in Docker containers.
- Improved reconnection stability.
- Fixed hijack messages leaking into terminal interface.
- Fixed TypeScript errors in Web CLI e2e tests.
- Made Docker capability tests compatible with different Docker API versions.
- Resolved React unit test drift from implementation.
- Fixed package mismatch issues.
- Removed messageId argument from room reactions.
## [0.4.0] - 2024-04-28
### Added
- Comprehensive AI Assistance guidelines (`.cursor/rules/AI-Assistance.mdc`).
- Mandatory development workflow definition (`.cursor/rules/Workflow.mdc`, `CONTRIBUTING.md`).
- Detailed `Debugging.md` and `Troubleshooting.md` guides in `docs/`.
- Formalized `CONTRIBUTING.md` in the root directory.
### Changed
- Significantly restructured and enhanced `docs/Testing.md` with clear strategies, examples, and folder structure.
- Refactored `.cursor/rules/` for clarity, consistency, and improved AI guidance.
- Updated `README.md` to link to new contribution and workflow documents.
- Standardized documentation file naming (`Title-Case-With-Hyphens.md`).
- Simplified `Product-Requirements.md`.
### Fixed
- Persistent failures in Web CLI Playwright E2E tests related to incorrect WebSocket URL usage (`examples/web-cli/src/App.tsx`).
- Corrected inaccurate release dates in previous `CHANGELOG.md` entries.
- Minor typos and formatting inconsistencies in documentation.
## [0.3.4] - 2025-04-20
### Added
- Apache 2.0 LICENSE file.
- Project Structure documentation.
- `.editorconfig` for IDE formatting consistency.
- Initial test strategy and proposed test coverage.
### Changed
- Improved terminal server with timestamps in logging.
- Enhanced error handling in `AblyCliTerminal.tsx`.
- Improved project documentation organization and clarity.
- Applied consistent formatting across all files via `.editorconfig`.
### Fixed
- Terminal server regressions following TypeScript/lint fixes.
- React mismatch issues in Web-CLI.
- Fixed variable redeclaration in `channel-rules/update.ts`.
- Ensured bottom line of terminal is always visible and resize works correctly.
- Fixed dependency issues in `package.json`.
- Various linting errors.
## [0.3.3] - 2025-04-19
### Fixed
- Dependency update (vite 6.2.4 to 6.2.6).
- Various linting issues and improvements across the codebase.
- Ensured test runs are supported with GitHub Actions.
- Improved consistency of `process.exit()` usage (using `this.exit()`).
- Fixed `unicorn/no-array-push-push` linting error.
### Added
- ESLint v9 compatibility and standardized configuration.
- Mocha support for testing framework.
- "Did you mean" functionality for command suggestions via `command_not_found` hook.
### Changed
- Updated oclif dependencies for consistency.
## [0.3.2] - 2025-04-14
### Added
- Support for `--verbose` logging flag.
- MCP Server section to `README.md`.
### Fixed
- Formatting in `Product-Requirements.md`.
## [0.3.1] - 2025-04-11
### Added
- Experimental Model Context Protocol (MCP) server (`src/mcp/mcp-server.ts`).
### Fixed
- Bug in Control API access for MCP server.
- Dependency update (vite 6.2.4 to 6.2.5).
## [0.3.0] - 2025-04-11
### Added
- React Web CLI component (`packages/react-web-cli`).
- Terminal server for Web CLI (`scripts/terminal-server.ts`).
- Example Web CLI implementation (`examples/web-cli`).
- Standardized stats display service (`src/services/stats-display.ts`).
- `--web-cli-help` command.
### Changed
- Standardized CLI command status reporting.
- Improved help command intuitiveness.
- Refactored handling of interactive commands and history in Web CLI.
- Updated Cursor rules to reference `Product-Requirements.md`.
- Improved build dependability.
### Fixed
- Various bugs related to Web CLI (Ctrl-C handling, prompt behavior, history).
- Prevented exit from terminal with Ctrl-C (SIGINT) in Web CLI server.
## [0.2.6] - 2025-04-01
### Added
- `ably apps switch` command.
### Changed
- Improved handling of missing API keys and access tokens.
### Fixed
- Added missing `switch` command to `ably apps` topic help.
## [0.2.5] - 2025-04-01
### Added
- Screenshot to `README.md`.
### Changed
- Improved welcome screen with ASCII logo and colorization.
### Fixed
- Ensured alias commands show errors for invalid requests.
## [0.2.4] - 2025-03-31
### Added
- Ably AI Agent integration (`ably help ask`).
- Support for follow-up questions (`--continue`) with the AI agent.
- `ably help contact`, `ably help support`, `ably help status` commands.
### Changed
- Ensured consistent help output when topic commands are called without subcommands.
- Improved alias handling and error display for invalid commands.
### Fixed
- Ensured `--control-host` argument works for all commands.
- Replaced colons with spaces in `ably channels occupancy` and `