Skip to content

v2.0.0

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 31 Jan 19:21
· 1 commit to master since this release

2.0.0 (2025-01-31)

  • feat!: update semantic release's ci (573814d)
  • refactor!: rename opts.workspace_name -> opts.workspace (bf158f9)

Bug Fixes

  • IPC:is_closing should return true if the pipe does not exist (29170fd)
  • should_skip_update should be checked right before the update (93636dd)
  • actually update the editor image (b1e5deb)
  • adjust server fetching logic (c6ff458)
  • allow sending same activity updates (1883ba4)
  • an attempt to fix intermittent ui freezes (e53bf20)
  • async: avoid including debug info on regular errors and fix error propagation (618ce39)
  • automatically retry connection on ECONNREFUSED & ETIMEDOUT (55452b3)
  • avoid joining the handles (3d478f1)
  • change cfg-if attribute (76ecb5c)
  • close uv handles before exiting (1bd6bb9)
  • config: correctly handle custom client ids (a4719a2)
  • config: correctly replace config values (17dd6f3)
  • config: do not override the given editor icon (25d31ba)
  • config: ensure idle icon is set when validating the config (d5c4231)
  • correct the logic responsible for falling back to defaults (b784a74)
  • correctly handle curl's stdout (5b44dff)
  • correctly serialize activity timestamps (6362a2c)
  • correctly serialize rich presence packet (3e894ee)
  • correctly set workspace_dir & workspace_name (a56a856)
  • do not queue activity updates upon losing focus (0b8d609)
  • fallback to default activity type if not provided (bebea1f)
  • fetching local version should not produce errors (71ed71b)
  • idle timeout check (2e3e961)
  • implement event queuing for handling events registered after the handler is run (46b8de4)
  • imports (9e8819e)
  • include vim.log.levels.OFF when parsing the log level (cc9ba64)
  • ipc: cleanup the stale pipe if the server process was forcefully terminated (a77e86c)
  • ipc: handle client disconnection on ErrorKind::BrokenPipe (a315118)
  • ipc: properly cleanup on exit (0d5c61b)
  • let the updater alone handle executable spawning, or we might have two threads attempting to spawn it simultaneously (44acc10)
  • log: correctly write to the client pipe (710b83e)
  • manager: ensure the manager is setup only once (9f6d330)
  • manager: fixed incorrect handling of timestamps (a67d435)
  • manager: fixed timestamp logic (fabd09f)
  • mappings: ensure that the tooltips have a minimum length of 2 (e9368fa)
  • mappings: prioritize file extensions over filetypes (f09506d)
  • mappings: set plugin managers' default icon to plugin (a2be431)
  • mappings: terminal check should be after the filetype check (c2950f1)
  • normalize path before workspace lookup (c919c94)
  • perform a nil check for usercmds interacting with the activity manager (8427bed)
  • plugins.diagnostics: use correct validation function (3a683c5)
  • plugins.scoped_timestamps: correctly handle idle status (acaece0)
  • plugins: pass the correct configuration (7875026)
  • properly handle chunked data (0b8c655)
  • properly handle server shutdowns (281a93b)
  • reinitialize the server if the plugin was installed with the server already present (ed60ef6)
  • replace method definition with a function definition (8d6bcf9)
  • resolve autocmds errors (02340b1)
  • resolve event serialization issues (7ec693e)
  • resolve idle timeout related issues (21d9a50)
  • resolve workspace issues; handle missing hooks (4cff958)
  • return if config validation fails (503371d)
  • schedule cleanup logic if necessary (9aa6578)
  • schedule the callbacks to maintain compatibility with Neovim 0.6.0 (35428c0)
  • server: assume disconnection after receiving an error (da12d49)
  • server: fetch and store the server version from the local text file (5cead48)
  • server: fix logging level comparison (86f2a70)
  • server: use panic-free means to write to stdout (23ba754)
  • sessions: retrieve the correct session based on id instead of always returning the first available (6493da4)
  • set executable permissions on unix systems (541a563)
  • spawn: use an absolute path for server executable's fallback path (0ac391a)
  • stop the plugin on server errors (20d0a48)
  • update last_activity only if an actual update occurred (1dd0e20)
  • update server's status to ready on receiving the ready event (8e57129)
  • use cord --version to determine the current version of the executable and whether an update is required (5c31319)
  • usercmd: add input validation (33dbf7a)
  • usercmd: allow calling checkhealth from user commands (2a9aac7)
  • usercmd: fix broken autocompletion (49acb99)
  • usercmd: handle feature user commands without args by mapping them to presence functions (c7b32e8)
  • usercmds: fix argument parsing logic (2651e5d)
  • windows: properly handle overlapped I/O (296e4f4)
  • windows: use overlapped io for named pipes to avoid deadlocks (2f73ce8)

Features

  • activity: add additional fields (ffec9cd)
  • add :checkhealth cord to validate user configuration (ac8bf0a)
  • add :Cord restart (ff7b7cf)
  • add json:Error & msgpack:Error (0f33af2)
  • add new function to Packet struct (fd4b201)
  • add notes field (304d171)
  • add TryFrom impl to AssetType (ca4d5d8)
  • add vim.g.cord_is_updating to avoid multiple simultaneous updates (166be04)
  • add a logger struct (d3f4fa0)
  • add a macro that simplifies field deserialization (ada22e6)
  • add cleanup logic (df96059)
  • add dashboard support for NvDash (458a9ff)
  • add explicit rich presence clearing; can be completely hidden with force = true (8e99c03)
  • add message deserialization logic (3f7fea2)
  • add message handler struct (e93d9c8)
  • add program entry point (f0e8727)
  • add proper serialization for LogEvent (340c504)
  • add server-scoped InitializeEvent (5097ceb)
  • add support for checkhealth buffers (#182) (0706911)
  • add support for LazyVim (#168) (7d0ef13)
  • add the Cord struct which is used as the entry point (c2f67c0)
  • add unix implementation of the IPC server (cdc4245)
  • add usercommands (8582099)
  • add utility functions for building and fetching the executable (b77455b)
  • add windows implementation of the IPC server (04192c5)
  • allow ActivityManager:toggle_idle to accept a force parameter (f9498b5)
  • allow parsing client_id from client name (3e7f1b3)
  • allow the user to skip updates (381542d)
  • allow users to set a custom activity (e9d388c)
  • always fetch the executable if it's not present (7a18740)
  • always perform the file exists check first (d94b5b8)
  • async: implement Future wrappers for commonly used uv functions (62b133c)
  • async: implement the concept of futures and handle async operations via coroutines (8638d30)
  • automatically download the server executable if it is not present (355d63a)
  • automatically load the plugin on startup without needing a setup() call (3a2833b)
  • capture build errors (64b1103)
  • checkhealth: include information about required executables (72b5f9e)
  • cli: add --version argument (1799242)
  • cli: implement argument parsing (b3051db)
  • config: add advanced.server.build (bf27f76)
  • config: add advanced.variables_in_functions (6aae137)
  • config: add idle.unidle_on_focus (f4e8c93)
  • config: add on_activity hook (2695288)
  • config: add on_disconnect hook (299882d)
  • config: add text.debug option (6e72bc3)
  • config: add text.diagnostics option (f39fad7)
  • config: add text.games option (bfad8fb)
  • config: add text.test option (682c82a)
  • config: add support for string templates using the new variables option (d5ec225)
  • config: allow users to choose between different icon styles (3fef850)
  • config: custom assets' options now support function types (2a5122c)
  • config: improve validation (f60d250)
  • config: introduce idle.smart_idle option which lets general activities take precedence over the idle ones (99e9e93)
  • create Config struct to store internal configuration and refine timeout logic (d5c179c)
  • create a separate module for icon-related stuff (8b83610)
  • display the most recent activity in case a client disconnects; clear the status if none are connected (eedc94a)
  • events: add client event implementations (fcda103)
  • events: add server events (52061da)
  • events: handle client connection (2e7d5d4)
  • events: notify the client about errors on their side (db9a2ef)
  • handle automatically moving the server executable to nvim's data directory (ae0fb6f)
  • handle the activity type (0bfa07c)
  • hooks: allow prioritized hooks in user configuration (1c862c6)
  • icon: expose locals (15e83b3)
  • implement Default for Overlapped struct (83d9c4e)
  • implement OnEvent trait for all events (1675342)
  • implement a wrapper around curl (4bb65b4)
  • implement caching for workspace and repository entries (1dc2def)
  • implement custom error type (ff80157)
  • implement hooks handler (2a2b111)
  • implement iterations - a maximum amount of time the server can idle without active connections (b6e8955)
  • implement reconnection logic for initial connection (fef32b2)
  • implement reconnection mechanism for Discord (90ba49a)
  • implement sessions and session manager (312b924)
  • improve cleanup logic (1b9be0c)
  • introduce PresenceContext struct which will be used to build the rich presence (59ec145)
  • introduce message communication system (19ab5c6)
  • introduce plugins system (b90ca4e)
  • ipc: continuously read data from Discord pipe to detect sudden disconnects (807291f)
  • ipc: use full pipe path (55ca5ab)
  • json: add robust error handling (a6697da)
  • lockfile: implement file locking mechanism (dd8fe2c)
  • logger: handle cases in lua callbacks (c3ccb35)
  • lua: automatically start the server (0364cfb)
  • lua: call on_workspace_change hook if a workspace change is detected (33abe5a)
  • lua: initial implementation of the Lua codebase (6f72e92)
  • lua: switch to event-driven architecture (e65f015)
  • make server error messages clean (c097bd8)
  • manager: allow disabling text categories via boolean values (7527afc)
  • manager: expose more functions for interacting with rich presence and its manager (c34dea1)
  • manager: handle TermOpen events (f4b573f)
  • manager: take vim.bo.modifiable into account when setting opts.is_read_only (26c1390)
  • mappings: add cuda filetype (9fdd31e)
  • mappings: add text.terminal option (a7b9f25)
  • mappings: add a plethora of new mappings and icons (cc0affa)
  • mappings: add icon for Awk language (67bc5b4)
  • mappings: add icon for config files (501d2ea)
  • mappings: add icon for image files (5487836)
  • mappings: add icon for log files (2421524)
  • mappings: add icon for odin (0df0a45)
  • mappings: add icon for SVG (842fd15)
  • mappings: add missing filetypes (dbfb1ad)
  • mappings: add more default icons (732fd29)
  • mappings: add more new icons and mappings (9b5e4fe)
  • mappings: add Snacks Dashboard (e905ae3)
  • mappings: add support for a plethora of plugins (0731b02)
  • mappings: add support for dashboard plugins (cd04a8c)
  • mappings: add support for docs (cfe563f)
  • modularize the event system and add helper macros for creating messages (f302fa1)
  • msgpack: add msgpack deserialization (eb2e10d)
  • msgpack: add msgpack serialization (1f7c2a6)
  • msgpack: add support for STR8 header (cd634ea)
  • msgpack: allow serialization of Map values (9dc26b4)
  • msgpack: support owned strings (0679c31)
  • notify client when the workspace is found in the blacklist (ae660bd)
  • notify the client when server is ready to accept connections (b27d763)
  • notify the clients about the server shutdown (e987ba0)
  • notify user about ongoing reconnection if any (edd237a)
  • parse cwd in terminal buffers (a83e437)
  • plugins.diagnostics: add plugin description (cff042a)
  • plugins: add cord.plugins.diagnostics (a299d5c)
  • plugins: add cord.plugins.local_time (7782b46)
  • plugins: add cord.plugins.scoped_timestamps (69147c8)
  • plugins: add diagnostics plugin (f3705d7)
  • prepend the messages with a length header in case they get merged (264fde3)
  • prioritize general activities over the idle activity (b4a837c)
  • producer: allow sending a shutdown request (354e2a6)
  • provide clear error message for when the connection to Discord IPC fails (4828894)
  • provide clearer server error messages (34bfe12)
  • provide more data when logging the error (22e9ed8)
  • redesign usercommands (2eb4eaa)
  • server: add local ShutdownEvent (3f55760)
  • server: improve error handling & error messages (9aea257)
  • server: notify the client whether the provided client id is incorrect (edc9f5a)
  • set opts.name independently of assets (f1b9266)
  • set style-specific default idle icons (c17ad89)
  • specify MSRV (1b520ca)
  • specify plugin version (cd8142f)
  • stop any updates when connection is lost (dd1dd43)
  • store os name and architecture (3f663db)
  • switch to next available activity on clear_activity event (f05f126)
  • take custom executable path into account (87c9143)
  • tie each client to a session (edd2141)
  • trim stderr messages (4ec5de9)
  • update sessions' last updated time (9968d94)
  • use newly added mapping types (015f7ed)
  • usercmds: add :Cord shutdown (607c3bb)
  • usercmds: add :Cord status (47c3d6a)
  • usercmds: add :Cord update (eba53d9)
  • usercmds: add :Cord version & :Cord check_version (dd209d5)
  • util: add additional file-related utility functions (36d5031)
  • validate and set editor_image upon initialization (d56416a)

Performance Improvements

  • avoid evaluating string templates if config.variables is not defined (29efe00)
  • avoid unnecessary lookups (a4bccf4)
  • avoid unnecessary lookups (b586eec)
  • config: compute only necessary arguments (dbcd0b5)
  • fs: switch to async filesystem ops (961ec2c)
  • handle logic responsible for broadcasting the ready event more efficiently (a5c8ca3)
  • json: optimize deserialization logic (02c233f)
  • json: optimize serialization logic and generalize the serializer (3e7ab98)
  • lua: lazy load some modules (0f1ebaa)
  • lua: lazily load other modules (6313f45)
  • mappings: performance optimizations (ff9c806)
  • mappings: significant performance improvements (8ea0ad8)
  • remove unnecessary atomics (85499cf)

BREAKING CHANGES

  • opts.workspace_name is deprecated and will soon be removed
  • none