Skip to content

Releases: jinnovation/kele.el

0.6.0: Permissions, kind-specific keybindings, list improvements

08 Jun 10:19
beec4a7
Compare
Choose a tag to compare

Note

This release bumps the minimum required version of Emacs to 29.

This release fleshes out the resource listing functionality. Some highlights:

  • In addition to opening a resource from the list view (RET), you can now also delete/kill the resource at point with k;
  • The list view now shows the owner resource(s) for every list item; hitting RET with your cursor over the owner cell will instead open the owning resource;
  • The list view now supports listing across all namespaces.

image

This release also introduces the notion of kind-specific keybindings. Some resources have special "actions" associated with them, e.g. "restarting" Deployments or getting logs from Pods. kele-resource now has a dedicated column for these keybindings that, when defined, are dynamically filled in based on the selected resource kind. For now, there is only one resource-specific keybinding—R to restart a Deployment. Try s-k deployments to check it out.

image

Lastly, individual bindings within kele-resource are disabled based on your permissions for the given context/cluster. In other words, if you don't have permission to list Pods within the selected cluster, Kele will disable the l keybinding with a helpful message.

image

Enjoy!

v0.5.0: Menu bar + doom-modeline integration!

13 Apr 15:09
642c415
Compare
Choose a tag to compare

This release integrates Kele with the Emacs menu bar. With this initial integration, you can switch Kubernetes contexts and default namespaces from within the menu bar. Kele presents your available contexts and namespaces as dynamic sub-menus, freeing you from the need to remember exact names and typing them in by hand (similar to kubectx and kubens on the terminal).

With this release, Kele is now also integrated with doom-modeline. By adding the k8s segment to your doom-modeline configuration, you'll see current context and namespace information directly on the modeline. The menu bar is also accessible here as well, for the (menu-bar-mode -1) crowd.

v0.4.2

05 Apr 20:21
7719ca6
Compare
Choose a tag to compare

Fixed

  • Fixed a bug where kele-mode errors out when the kubeconfig file does not
    exist yet
  • Fixed a bug where curl errors are not properly caught, resulting in attempts
    to query the kubectl proxy server before it is ready

Changed

  • Bumped dependency plz from 0.3 to 0.7.3

0.4.1

25 Mar 16:56
Compare
Choose a tag to compare

Fixed

  • Fixed an issue where Kele can exhaust the number of file descriptors available for Emacs to use.
  • Fixed an issue where command families that require proxy servers, e.g. kele-resource, result in false-positive
    timeout errors when starting up the proxy server.

Changed

  • Discovery cache polling is now timer-based instead of "dynamic," i.e. in response to filesystem changes.

0.4.0

05 Feb 18:15
Compare
Choose a tag to compare

Lots of fun stuff in this release.

Most importantly, Kele 0.4.0 introduces kele-list (s-k <resource type> l)
and -- with it -- the ability to list all resources of a given type in tabulated
form. Before, you could only fetch single resources. Now, with kele-list, you
can create ad-hoc "overviews" of specific resource types within a given context
and namespace; hitting Enter on any entry in this list brings up the resource's
full manifest.

Kele 0.4.0 also introduces the kele-proxy command palette (s-k p) for
starting/stopping proxy servers for contexts. It also fleshes out the Kubeconfig
management command palette (s-k c).

For more details, see: How-Tos > Usage.

Added

  • Added a kele-proxy command prefix for managing proxy servers
  • Added a keybinding to kele-context to enable/disable the proxy server for
    the current context
  • Added a keybinding to kele-context for deleting a context
  • Added a keybinding to open kele-kubeconfig-path in a buffer
  • Added a keybinding to kele-resource to support listing out all resources of
    a given type (kele-list)

Fixed

  • kele-context and kele-resource now wait on kubeconfig sync completion to
    finish if one is currently in progress
  • Fixed a bug where force-enabling or force-disabling kele-mode (via either
    (kele-mode 1) or (kele-mode -1)) when kele-mode is already active or
    inactive (respectively) resulted in errors
  • Fixed an issue where attempting to invoke s-k <resource name> g sometimes
    results in the following error: transient-setup: Suffix transient:kele-resource::command is not defined or autoloaded as a command

Changed

  • Renamed kele-context to kele-config
  • Increased the default value of kele-proxy-ttl from 60 to 180
  • Binding for kele-get in kele-get-mode changed from U to g

0.3.0

28 Jan 13:30
Compare
Choose a tag to compare

This release focuses on providing Kele's command palette and user interface with
a scalable foundation for future growth. As Kele's spread of user-facing
commands grows, it becomes less and less reasonable to expect users to M-x
everything.

To that end, this release adds the following:

  • A Kele command keymap that will allow keybinding-based access to all
    Kele-based functionality (see How-Tos > Customization and How-Tos > Usage
    for more details)
  • A spread of three Transient-based "prefix" commands -- kele-context,
    kele-resource, and kele-dispatch -- for nested command discovery and
    ad-hoc configuration, e.g. overriding the context and namespace to use for
    resource fetching. Again, see How-Tos > Usage for more details.

I'm optimistic that these two additions make Kele's user interface much more
pleasant and nimble, while also giving it ample room to grow in complexity and
scope in the coming releases.

Added

  • kele-get resource name input now supports completion! 🔥
  • kele-get buffers now have keybindings for quitting and killing the resource
    display buffer
  • You can now press U in kele-get buffers to re-fetch and refresh the
    current resource
  • kele-get buffers' front matter now outlines the available keybindings
  • Added a kele-dispatch command for when you forget the specific keybinding of
    what you're trying to accomplish
  • Added a kele-context command prefix for context-related actions
  • Added a kele-resources command prefix for acting on specific resource kinds,
    e.g. getting, with support for selecting the context, namespace, and the
    group-version to use (in cases of ambiguity)

Changed

  • Added dependency: s
  • Removed dependency: requests
  • Increased minimum required Emacs version to 28.1

0.2.1

16 Jan 19:01
Compare
Choose a tag to compare

This release focuses on refining the kele-get experience -- usability
improvements and general bugfixes.

Added

  • kele-get buffers now have a dedicated minor mode, kele-get-mode.
  • kele-get buffers now print a header detailing, for the resource under
    display: the context it was fetched from; and the time of retrieval
  • Added a custom variable kele-filtered-fields with which you can routinely
    filter out resource fields from display in kele-get

Fixed

  • Fixed an issue where kele-get results buffer incorrectly prints namespace
    for un-namespaced resources as nil
  • Fixed an issue where kele-get refused to display the retrieved resource, if
    a buffer corresponding to that resource already exists

Changed

  • kele-get completion for the resource type now only returns resources that
    support the get verb

v0.2.0: Introducing `kele-get`

15 Jan 15:42
Compare
Choose a tag to compare

This release introduces kele-get -- kubectl get, the Emacs way
🚀. With kele-get you can interactively specify the kind and name of the
resource that you'd like to get and display its manifest in a separate
buffer. What's more, it supports custom resources right out the gate -- a
long-standing functionality gap in kubernetes-el.

See How-Tos > Usage > Working with
Resources
for details and a demo
GIF. It's very much an MVP so there are some rough edges. Please open an issue
for any peculiar behavior that you notice.

Added

  • Implemented kele-get for interactively getting and displaying a given
    resource
  • Context annotations now display whether a proxy server is currently active for
    the given context
  • Implemented interactive functions for per-context proxy server management:
    kele-proxy-start, kele-proxy-stop, and kele-proxy-toggle

Fixed

  • Fixed an issue where disabling kele-mode resulted in an error reporting
    unbound slot filewatch-id on kele--discovery-cache
  • Fixed an issue where cluster servers with ports,
    e.g. https://127.0.0.1:51134, were not recognized properly
  • Fixed an issue where namespace completion candidates failed to populate on
    initial fetch of said namespaces from the Kubernetes API

Changed

  • Buffer for contexts' proxy processes are now hidden
  • Default value for kele-cache-dir is now ~/.kube/cache; before it was
    relative to the value of kele-kubeconfig-path (and unreliably so)

0.1.1

06 Jan 00:42
Compare
Choose a tag to compare

Added

  • Kubeconfig file watching is now asynchronous and therefore non-blocking!
  • Kubeconfig file watching now prints a [progress report] denoting when changes
    were detected (and thus reading has begun asynchronously) and when reading has
    completed

Fixed

  • Fixed an issue where proxies were being created for the current context,
    regardless of which context it was actually requested for
  • Fixed an issue in kele-namespace-switch-for-context where the selection
    candidates were pulled for the current context rather than the argument
    context
  • Fixed an issue where attempting to pull completion candidates via queries to
    the proxy API server resulted in an error, as well as multiple proxy server
    processes being inadvertently spun up for the same context
  • Fixed an issue where custom kubeconfig path is not respected by kubectl
    invocations

Inaugural release 🎉

03 Jan 01:13
Compare
Choose a tag to compare

Kele is born!

This initial release of Kele has a very simple goal: "kubectx and
kubens
, but make it Emacs." Its feature set is limited but lays the
foundation -- both in terms of implementation and "design philosophy" -- for
future enhancements.

Added

  • Added ability to switch and rename contexts, with completion and caching
  • Added ability to switch namespaces for any given context

Full Changelog: https://github.com/jinnovation/kele.el/commits/v0.1.0