2025-01-02
- feat!: update semantic release's ci (view commit)
- fix!: bugfixes related to opts handling, workspace detection callback, button validation as well as slight changes in configuration (view commit)
- merge #147 (view commit)
- merge #152 (view commit)
- merge #155 (view commit)
- Merge branch 'client-server' of https://github.com/vyfor/cord.nvim into client-server (view commit)
- Merge branch 'client-server' of https://github.com/vyfor/cord.nvim into client-server (view commit)
- Merge branch 'client-server' of https://github.com/vyfor/cord.nvim into client-server (view commit)
- refactor!: rename
git_url
->repo_url
(view commit)
- bump project version (view commit)
- bump project version (view commit)
- bump project version (view commit)
- bump project version (view commit)
- bump project version (view commit)
- bump project version (view commit)
- bump project version (view commit)
- enable incremental compilation (view commit)
- prepare for publishing (view commit)
- set project version to
2.0.0-beta.1
(view commit) - specify msrv (view commit)
- add
rustfmt.toml
(view commit) - add derives and reformat code (view commit)
- add relevant
mod
s (view commit) - assets: delete the assets directory (view commit)
- bump assets version (view commit)
- bump assets version (view commit)
- bump assets version (view commit)
- bump assets version (view commit)
- bump assets version (view commit)
- change semantic release config (view commit)
- code cleanup (view commit)
- delete redundant file
status.rs
(view commit) - event: remove redundant implementations (view commit)
- fix clippy warnings (view commit)
- fix typo (view commit)
- fix warnings (view commit)
- fix warnings (view commit)
- ignore clippy warning (view commit)
- lua: fix warnings (view commit)
- prepare for publishing (view commit)
- prepare for publishing (view commit)
- prepare for publishing (view commit)
- release: 1.0.0-beta.1 [skip ci] (view commit)
- release: 2.0.0-beta.1 [skip ci] (view commit)
- release: 2.0.0-beta.1 [skip ci] (view commit)
- release: 2.0.0-beta.1 [skip ci] (view commit)
- release: 2.0.0-beta.1 [skip ci] (view commit)
- release: 2.0.0-beta.2 [skip ci] (view commit)
- remove changelog (view commit)
- remove changelog (view commit)
- remove debug statement (view commit)
- remove redundant code (view commit)
- remove redundant file (view commit)
- remove unnecessary explicit lifetimes (view commit)
- remove unnecessary statement (view commit)
- remove unused imports (view commit)
- remove unused variable (view commit)
- resolve merge conflicts (view commit)
- set previous release in
.releaserc.json
(view commit) - temporarily comment out code (view commit)
- update
.gitignore
(view commit) - update
.luacheckrc
(view commit) - update
.luacheckrc
(view commit) - update
.luacheckrc
(view commit) - update
.releaserc.json
(view commit) - update
util/mod.rs
(view commit) - update releaserc (view commit)
- update semantic release (view commit)
- update semantic release (view commit)
- update semantic release (view commit)
- add freebsd target (view commit)
- create release.yml (view commit)
- integrate semantic release (view commit)
- prepare for publishing to luarocks (view commit)
- update
release.yml
(view commit) - update
release.yml
(view commit) - update release workflow (view commit)
- update release workflow (view commit)
- update release workflow (view commit)
- update release.yml (view commit)
- update semantic release (view commit)
- add configuration examples (view commit)
- configration: add missing backticks (view commit)
- configuration: add default config values (view commit)
- configuration: center activity options (view commit)
- create a configuration guide (view commit)
- create a migration guide (view commit)
- document string templating (view commit)
- lua: document exposed interfaces (view commit)
- migration: fix text highlighting (view commit)
- prefer
:Cord update
over:Cord fetch
(view commit) - readme: add badge icons (view commit)
- readme: add cord's logo (view commit)
- readme: add installation step for
rocks.nvim
(view commit) - readme: include a link for cord's brand new discord server (view commit)
- readme: rewrite README (view commit)
- readme: update README (view commit)
- readme: update README (view commit)
- readme: update README (view commit)
- readme: update README (view commit)
- rust: document crucial parts of the codebase (view commit)
- templates: remove the icon request issue template (view commit)
- update configuration guide (view commit)
- update configuration guide (view commit)
- update configuration guide (view commit)
- update documentation (view commit)
- update examples (view commit)
- update examples (view commit)
- update examples (view commit)
- update migration guide (view commit)
- update migration guide (view commit)
- update migration guide (view commit)
- update readme (view commit)
- update readme (view commit)
- update readme (view commit)
- update readme (view commit)
- update readme (view commit)
- update the configuration guide (view commit)
- update the configuration guide (view commit)
- update the configuration guide (view commit)
- update the configuration guide (view commit)
- update the configuration guide (view commit)
- update the configuration guide (view commit)
- update the configuration guide (view commit)
- update the configuration guide (view commit)
- update the examples (view commit)
- update the examples (view commit)
- update the examples (view commit)
- update the migration guide (view commit)
- update the migration guide (view commit)
- update the migration guide (view commit)
- update the migration guide (view commit)
- update the migration guide (view commit)
- update the migration guide (view commit)
- update the migration guide (view commit)
- activity: add additional fields (view commit)
- add
:Cord restart
(view commit) - add
json:Error
&msgpack:Error
(view commit) - add
new
function toPacket
struct (view commit) - add
notes
field (view commit) - add
TryFrom
impl toAssetType
(view commit) - add
vim.g.cord_is_updating
to avoid multiple simultaneous updates (view commit) - add a logger struct (view commit)
- add a macro that simplifies field deserialization (view commit)
- add cleanup logic (view commit)
- add explicit rich presence clearing; can be completely hidden with
force = true
(view commit) - add message deserialization logic (view commit)
- add message handler struct (view commit)
- add program entry point (view commit)
- add proper serialization for
LogEvent
(view commit) - add server-scoped
InitializeEvent
(view commit) - add the
Cord
struct which is used as the entry point (view commit) - add unix implementation of the IPC server (view commit)
- add usercommands (view commit)
- add utility functions for building and fetching the executable (view commit)
- add windows implementation of the IPC server (view commit)
- allow parsing
client_id
from client name (view commit) - allow the user to skip updates (view commit)
- allow users to set a custom activity (view commit)
- always fetch the executable if it's not present (view commit)
- always perform the file exists check first (view commit)
- async: implement Future wrappers for commonly used uv functions (view commit)
- async: implement the concept of futures and handle async operations via coroutines (view commit)
- capture build errors (view commit)
- cli: add
--version
argument (view commit) - cli: implement argument parsing (view commit)
- config: add
advanced.server.build
(view commit) - config: add
advanced.variables_in_functions
(view commit) - config: add
idle.unidle_on_focus
(view commit) - config: add
on_activity
hook (view commit) - config: add
on_disconnect
hook (view commit) - config: add support for string templates using the new
variables
option (view commit) - config: allow users to choose between different icon styles (view commit)
- config: custom assets' options now support function types (view commit)
- config: introduce
idle.smart_idle
option which lets general activities take precedence over the idle ones (view commit) - create
Config
struct to store internal configuration and refine timeout logic (view commit) - create a separate module for icon-related stuff (view commit)
- display the most recent activity in case a client disconnects; clear the status if none are connected (view commit)
- events: add client event implementations (view commit)
- events: add server events (view commit)
- events: handle client connection (view commit)
- events: notify the client about errors on their side (view commit)
- handle automatically moving the server executable to nvim's data directory (view commit)
- handle the activity type (view commit)
- icon: expose locals (view commit)
- implement
Default
forOverlapped
struct (view commit) - implement
OnEvent
trait for all events (view commit) - implement a wrapper around
curl
(view commit) - implement caching for workspace and repository entries (view commit)
- implement custom error type (view commit)
- implement iterations - a maximum amount of time the server can idle without active connections (view commit)
- implement reconnection mechanism for Discord (view commit)
- implement sessions and session manager (view commit)
- improve cleanup logic (view commit)
- introduce
PresenceContext
struct which will be used to build the rich presence (view commit) - introduce message communication system (view commit)
- ipc: continuously read data from Discord pipe to detect sudden disconnects (view commit)
- ipc: use full pipe path (view commit)
- json: add robust error handling (view commit)
- lockfile: implement file locking mechanism (view commit)
- logger: handle cases in lua callbacks (view commit)
- lua: automatically start the server (view commit)
- lua: call
on_workspace_change
hook if a workspace change is detected (view commit) - lua: initial implementation of the Lua codebase (view commit)
- lua: switch to event-driven architecture (view commit)
- make server error messages clean (view commit)
- manager: expose more functions for interacting with rich presence and its manager (view commit)
- mappings: add
cuda
filetype (view commit) - mappings: add icon for odin (view commit)
- mappings: add missing filetypes (view commit)
- mappings: add support for dashboard plugins (view commit)
- mappings: add support for docs (view commit)
- modularize the event system and add helper macros for creating messages (view commit)
- msgpack: add msgpack deserialization (view commit)
- msgpack: add msgpack serialization (view commit)
- msgpack: add support for STR8 header (view commit)
- msgpack: allow serialization of Map values (view commit)
- msgpack: support owned strings (view commit)
- notify client when the workspace is found in the blacklist (view commit)
- notify the client when server is ready to accept connections (view commit)
- notify the clients about the server shutdown (view commit)
- prepend the messages with a length header in case they get merged (view commit)
- prioritize general activities over the idle activity (view commit)
- producer: allow sending a shutdown request (view commit)
- provide clear error message for when the connection to Discord IPC fails (view commit)
- provide clearer server error messages (view commit)
- provide more data when logging the error (view commit)
- server: add local
ShutdownEvent
(view commit) - server: improve error handling & error messages (view commit)
- server: notify the client whether the provided client id is incorrect (view commit)
- set style-specific default idle icons (view commit)
- specify MSRV (view commit)
- specify plugin version (view commit)
- stop any updates when connection is lost (view commit)
- store os name and architecture (view commit)
- switch to next available activity on
clear_activity
event (view commit) - tie each client to a session (view commit)
- trim stderr messages (view commit)
- update sessions' last updated time (view commit)
- use newly added mapping types (view commit)
- usercmds: add
:Cord status
(view commit) - usercmds: add
:Cord update
(view commit) - util: add additional file-related utility functions (view commit)
- validate and set
editor_image
upon initialization (view commit)
IPC:is_closing
should return true if the pipe does not exist (view commit)should_skip_update
should be checked right before the update (view commit)- actually update the editor image (view commit)
- allow sending same activity updates (view commit)
- an attempt to fix intermittent ui freezes (view commit)
- async: avoid including debug info on regular errors and fix error propagation (view commit)
- automatically retry connection on
ECONNREFUSED
&ETIMEDOUT
(view commit) - avoid joining the handles (view commit)
- change
cfg-if
attribute (view commit) - close uv handles before exiting (view commit)
- config: correctly handle custom client ids (view commit)
- config: correctly replace config values (view commit)
- config: do not override the given editor icon (view commit)
- correct the logic responsible for falling back to defaults (view commit)
- correctly handle curl's stdout (view commit)
- correctly serialize activity timestamps (view commit)
- correctly serialize rich presence packet (view commit)
- correctly set
workspace_dir
&workspace_name
(view commit) - do not queue activity updates upon losing focus (view commit)
- fallback to default activity type if not provided (view commit)
- idle timeout check (view commit)
- implement event queuing for handling events registered after the handler is run (view commit)
- imports (view commit)
- include
vim.log.levels.OFF
when parsing the log level (view commit) - ipc: cleanup the stale pipe if the server process was forcefully terminated (view commit)
- ipc: handle client disconnection on
ErrorKind::BrokenPipe
(view commit) - ipc: properly cleanup on exit (view commit)
- let the updater alone handle executable spawning, or we might have two threads attempting to spawn it simultaneously (view commit)
- log: correctly write to the client pipe (view commit)
- mappings: ensure that the tooltips have a minimum length of 2 (view commit)
- mappings: set plugin managers' default icon to
plugin
(view commit) - normalize path before workspace lookup (view commit)
- perform a nil check for usercmds interacting with the activity manager (view commit)
- properly handle chunked data (view commit)
- properly handle server shutdowns (view commit)
- replace method definition with a function definition (view commit)
- resolve autocmds errors (view commit)
- resolve event serialization issues (view commit)
- resolve idle timeout related issues (view commit)
- resolve workspace issues; handle missing hooks (view commit)
- return if config validation fails (view commit)
- schedule cleanup logic if necessary (view commit)
- schedule the callbacks to maintain compatibility with Neovim 0.6.0 (view commit)
- server: fix logging level comparison (view commit)
- server: use panic-free means to write to stdout (view commit)
- sessions: retrieve the correct session based on id instead of always returning the first available (view commit)
- set executable permissions on unix systems (view commit)
- spawn: use an absolute path for server executable's fallback path (view commit)
- stop the plugin on server errors (view commit)
- update
last_activity
only if an actual update occurred (view commit) - update server's status to
ready
on receiving the ready event (view commit) - use
cord --version
to determine the current version of the executable and whether an update is required (view commit) - windows: properly handle overlapped I/O (view commit)
- windows: use overlapped io for named pipes to avoid deadlocks (view commit)
- avoid unnecessary lookups (view commit)
- avoid unnecessary lookups (view commit)
- fs: switch to async filesystem ops (view commit)
- handle logic responsible for broadcasting the ready event more efficiently (view commit)
- json: optimize deserialization logic (view commit)
- json: optimize serialization logic and generalize the serializer (view commit)
- lua: lazy load some modules (view commit)
- lua: lazily load other modules (view commit)
- mappings: significant performance improvements (view commit)
- remove unnecessary atomics (view commit)
AssetType
: renameLsp
toLspManager
, allow parsing from a string slice (view commit)Config::buttons
should be optional (view commit)Packet
should not own theActivity
(view commit)- activity manager:
pause()
andresume()
should checkis_paused
(view commit) - add more logging (view commit)
- add new message types, rename
ServerMessage
toLocalMessage
, resolve lifetime issues (view commit) - apply clippy suggestions (view commit)
- call
on_ready
after initializing the activity manager (view commit) - change
'Connecting'
log level toDEBUG
(view commit) - change
Deserialize::deserialize
to returncrate::Result
(view commit) - change
killall -9
->pkill -15
(view commit) - change
validate_buttons
function to accept a mutable reference (view commit) - change error messages (view commit)
- change the return type of
OnEvent::on_event
tocrate::Result<()>
(view commit) - cli: add a new error type for cli-related errors (view commit)
- codebase: ensure proper asynchronous flow and reorganize codebase (view commit)
- config: change default text values (view commit)
- config: change default values (view commit)
- config: remove
lsp
(view commit) - config: rename
advanced.server.build
toupdate
(view commit) - config: rename
enable
->enabled
(view commit) - config: set
cursor_update_mode
to'on_hold'
by default (view commit) - config: set
log_level
toINFO
by default (view commit) - constants: change assets url to the new repo; reset assets version (view commit)
- core: simplify Rust backend by removing internal details (view commit)
- correct require path (view commit)
- error: change
CordError
type definition; add missing error types (view commit) - error: include error kind when converting the error to string (view commit)
- events: update event implementations (view commit)
- events: use the client
DisconnectEvent
instead of the localClientDisconnectedEvent
(view commit) - fallback to
vim.uv
(view commit) - fallback to os-specific executable path (view commit)
- fix error message (view commit)
- force constructor initialization (view commit)
- handle shutdowns directly (view commit)
- handle the process handle (view commit)
- have the session store
last_activity
(view commit) - implicitly return result in main function (view commit)
- improve the way updates are skipped; expose a function in the manager class (view commit)
- ipc: remove
on_error
calls (view commit) - ipc: remove unnecessary scheduling (view commit)
- ipc: use full pipe path (view commit)
- json: rename value structs and move them to their own file (view commit)
- make
EventContext
mutable (view commit) - manager: force an update upon gaining focus (view commit)
- mappings: provide a constant value for default icons (view commit)
- minor changes (view commit)
- move
args.rs
to its own module (view commit) - move
AssetType
toutil
(view commit) - move
types.rs
to its own module (view commit) - move autocmd for cleaning up to
plugin/cord.vim
(view commit) - move Discord IPC logic to a separate module (view commit)
- move IPC messages to their own module (view commit)
- move usercmds to
cord.vim
(view commit) - msgpack: make
deseralize
accept already deserializedValue
(view commit) - override
opts.filename
if it's empty (view commit) - provide debug error messages (view commit)
- reduce code verbosity by using macros (view commit)
- reflect codebase changes (view commit)
- remove
constants.VERSION
(view commit) - remove excessive debug logging (view commit)
- remove lib.rs (view commit)
- remove redundant functions (view commit)
- remove server-scoped
ShutdownEvent
(view commit) - remove unnecessary events (view commit)
- rename
Config
toPluginConfig
(view commit) - rename
ResetTimestampEvent
->SetTimestampEvent
(view commit) - rename
rpc
toactivity
(view commit) - rename
style
->theme
(view commit) - rename
swap_images
->swap_icons
(view commit) - rename
take_str
->take_string
(view commit) - rename directory to
presence
(view commit) - replace
SessionManager::new
withDefault
derive (view commit) - rewrite the codebase to use msgpack instead of json (view commit)
- separate process spawning logic (view commit)
- serialization: move [de]serializers to their own common module; introduce a common error type (view commit)
- set
opts.skip_update
back tofalse
after skipping an activity update (view commit) - set executable directory to
nvim-data/cord/bin
(view commit) - split
PluginConfig
into structs with relevant fields (view commit) - store relevant types and constants in a separate file (view commit)
- tweak events (view commit)
- unconditionally fetch and store the git url (view commit)
- update event context to include reference to Cord itself (view commit)
- update log message (view commit)
- update serialization logic (view commit)
- use
crate::Result
type (view commit) - use
Packet::empty()
(view commit) - use Cargo to build the server executable (view commit)
- use os-specific defaults (view commit)
- usercmds: do not include stack traceback when logging on unknown command (view commit)
- wrap
editor_image
in Option type (view commit)
- correct error message (view commit)
- fix warning (view commit)
- fix warnings (view commit)
- fix warnings (view commit)
- fix warnings (view commit)
- fix warnings (view commit)
- more logging (view commit)
- move autocmds to the bottom of the file (view commit)
- reformat code (view commit)
- reformat codebase (view commit)
- remove unused import (view commit)
- remove unused variables (view commit)
- remove unused variables (view commit)
- reorder imports (view commit)
- resolve unused argument warning (view commit)
- none
2025-01-02
- feat!: update semantic release's ci (#573814d)
- fix!: bugfixes related to opts handling, workspace detection callback, button validation as well as slight changes in configuration (#277b5b0)
- merge #147 (#9423cf3)
- merge #152 (#2b0fc96)
- merge #155 (#a490466)
- Merge branch 'client-server' of https://github.com/vyfor/cord.nvim into client-server (#671f856)
- Merge branch 'client-server' of https://github.com/vyfor/cord.nvim into client-server (#f253296)
- Merge branch 'client-server' of https://github.com/vyfor/cord.nvim into client-server (#ccdd749)
- refactor!: rename
git_url
->repo_url
(#5d8faf2)
- bump project version (#e4f9b71)
- bump project version (#a6a33eb)
- bump project version (#d56244a)
- bump project version (#d1853f4)
- bump project version (#6196014)
- bump project version (#f43c94d)
- bump project version (#9898651)
- enable incremental compilation (#7b6bb00)
- prepare for publishing (#9bf0821)
- set project version to
2.0.0-beta.1
(#52ae36f) - specify msrv (#abaa56e)
- add
rustfmt.toml
(#c53d928) - add derives and reformat code (#3d5096c)
- add relevant
mod
s (#c51352c) - assets: delete the assets directory (#97ca959)
- bump assets version (#14ff704)
- bump assets version (#3e5016b)
- bump assets version (#d573d6e)
- bump assets version (#155638d)
- bump assets version (#3092bbc)
- change semantic release config (#705f0ac)
- code cleanup (#b139bfa)
- delete redundant file
status.rs
(#1b133d1) - event: remove redundant implementations (#800991f)
- fix clippy warnings (#6ed0a5d)
- fix typo (#935dce3)
- fix warnings (#f7c9e20)
- fix warnings (#d27ab6a)
- ignore clippy warning (#16fa5b5)
- lua: fix warnings (#8ef3177)
- prepare for publishing (#164b4b1)
- prepare for publishing (#f555b4b)
- release: 1.0.0-beta.1 [skip ci] (#f166cfc)
- release: 2.0.0-beta.1 [skip ci] (#4792fd8)
- release: 2.0.0-beta.1 [skip ci] (#f3f503f)
- release: 2.0.0-beta.1 [skip ci] (#fb719c6)
- release: 2.0.0-beta.1 [skip ci] (#1c39245)
- release: 2.0.0-beta.2 [skip ci] (#371b6eb)
- remove changelog (#c05af76)
- remove changelog (#ca109e5)
- remove debug statement (#67d9770)
- remove redundant code (#baa8703)
- remove redundant file (#755ce40)
- remove unnecessary explicit lifetimes (#1088976)
- remove unnecessary statement (#c12ad54)
- remove unused imports (#0b1d6b9)
- remove unused variable (#fef472f)
- resolve merge conflicts (#4cd628c)
- set previous release in
.releaserc.json
(#f398c02) - temporarily comment out code (#e2e2fd3)
- update
.gitignore
(#bb07214) - update
.luacheckrc
(#f59f170) - update
.luacheckrc
(#df2f200) - update
.luacheckrc
(#6ce30ee) - update
.releaserc.json
(#9744462) - update
util/mod.rs
(#5ba79f4) - update releaserc (#5fbdd5d)
- update semantic release (#e475c5c)
- update semantic release (#7e9c5b0)
- update semantic release (#8149653)
- add freebsd target (#20d27e1)
- create release.yml (#1d725d1)
- integrate semantic release (#66ca7cd)
- prepare for publishing to luarocks (#ac35d97)
- update
release.yml
(#30c3177) - update
release.yml
(#9984818) - update release workflow (#5367491)
- update release workflow (#f9ddd9f)
- update release workflow (#30e98f6)
- update release.yml (#a60ac04)
- update semantic release (#638dadf)
- add configuration examples (#a15b917)
- configration: add missing backticks (#7958f89)
- configuration: add default config values (#1aff02e)
- configuration: center activity options (#de33741)
- create a configuration guide (#e51af26)
- create a migration guide (#debee75)
- document string templating (#0bfc19d)
- lua: document exposed interfaces (#7c23fe2)
- migration: fix text highlighting (#965ee86)
- prefer
:Cord update
over:Cord fetch
(#7774af4) - readme: add badge icons (#63c5b08)
- readme: add cord's logo (#6bd56b5)
- readme: add installation step for
rocks.nvim
(#3f1dba6) - readme: include a link for cord's brand new discord server (#ce8ce56)
- readme: rewrite README (#24d75e0)
- readme: update README (#89ccba3)
- readme: update README (#29f5f74)
- readme: update README (#12b71d1)
- readme: update README (#95f8167)
- rust: document crucial parts of the codebase (#7f217a7)
- templates: remove the icon request issue template (#2578920)
- update configuration guide (#62b0764)
- update configuration guide (#5eca57b)
- update configuration guide (#cf031ff)
- update documentation (#243898a)
- update examples (#a1699d1)
- update examples (#8abe529)
- update examples (#20e02e3)
- update migration guide (#01d1d60)
- update migration guide (#d527f71)
- update migration guide (#c4c6693)
- update readme (#653c13d)
- update readme (#e4c5621)
- update readme (#d13991b)
- update readme (#ccdc4dc)
- update readme (#69d998b)
- update the configuration guide (#cf23961)
- update the configuration guide (#78b7ca6)
- update the configuration guide (#9ef07b7)
- update the configuration guide (#480d74c)
- update the configuration guide (#fb6326f)
- update the configuration guide (#40ec350)
- update the configuration guide (#16b1ec3)
- update the configuration guide (#8038675)
- update the examples (#cf728c3)
- update the examples (#4e67d61)
- update the examples (#8209e21)
- update the migration guide (#006f3a4)
- update the migration guide (#d9ccf2e)
- update the migration guide (#048f1d2)
- update the migration guide (#7ba64be)
- update the migration guide (#c5353fe)
- update the migration guide (#7030bad)
- update the migration guide (#8013f9b)
- activity: add additional fields (#ffec9cd)
- add
:Cord restart
(#ff7b7cf) - add
json:Error
&msgpack:Error
(#0f33af2) - add
new
function toPacket
struct (#fd4b201) - add
notes
field (#304d171) - add
TryFrom
impl toAssetType
(#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 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 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 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)
- capture build errors (#64b1103)
- 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 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: 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)
- icon: expose locals (#15e83b3)
- implement
Default
forOverlapped
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 iterations - a maximum amount of time the server can idle without active connections (#b6e8955)
- 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)
- 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: expose more functions for interacting with rich presence and its manager (#c34dea1)
- mappings: add
cuda
filetype (#9fdd31e) - mappings: add icon for odin (#0df0a45)
- mappings: add missing filetypes (#dbfb1ad)
- 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)
- 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)
- 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 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) - 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 status
(#47c3d6a) - usercmds: add
:Cord update
(#eba53d9) - util: add additional file-related utility functions (#36d5031)
- validate and set
editor_image
upon initialization (#d56416a)
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)
- 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)
- 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)
- 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)
- mappings: ensure that the tooltips have a minimum length of 2 (#e9368fa)
- mappings: set plugin managers' default icon to
plugin
(#a2be431) - normalize path before workspace lookup (#c919c94)
- perform a nil check for usercmds interacting with the activity manager (#8427bed)
- properly handle chunked data (#0b8c655)
- properly handle server shutdowns (#281a93b)
- 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: 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) - windows: properly handle overlapped I/O (#296e4f4)
- windows: use overlapped io for named pipes to avoid deadlocks (#2f73ce8)
- avoid unnecessary lookups (#a4bccf4)
- avoid unnecessary lookups (#b586eec)
- 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: significant performance improvements (#8ea0ad8)
- remove unnecessary atomics (#85499cf)
AssetType
: renameLsp
toLspManager
, allow parsing from a string slice (#025092d)Config::buttons
should be optional (#363fbee)Packet
should not own theActivity
(#ca936f8)- activity manager:
pause()
andresume()
should checkis_paused
(#d884b1d) - add more logging (#2e78f24)
- add new message types, rename
ServerMessage
toLocalMessage
, resolve lifetime issues (#9a7d0c6) - apply clippy suggestions (#071da49)
- call
on_ready
after initializing the activity manager (#378ade3) - change
'Connecting'
log level toDEBUG
(#f0749be) - change
Deserialize::deserialize
to returncrate::Result
(#28e93f0) - change
killall -9
->pkill -15
(#f993173) - change
validate_buttons
function to accept a mutable reference (#29938ed) - change error messages (#694fb96)
- change the return type of
OnEvent::on_event
tocrate::Result<()>
(#54f69dc) - cli: add a new error type for cli-related errors (#4962a5f)
- codebase: ensure proper asynchronous flow and reorganize codebase (#9f205ac)
- config: change default text values (#15a8f58)
- config: change default values (#3822787)
- config: remove
lsp
(#178631a) - config: rename
advanced.server.build
toupdate
(#8f723a5) - config: rename
enable
->enabled
(#849f7a9) - config: set
cursor_update_mode
to'on_hold'
by default (#6b320e9) - config: set
log_level
toINFO
by default (#96e9bab) - constants: change assets url to the new repo; reset assets version (#a61520e)
- core: simplify Rust backend by removing internal details (#266b824)
- correct require path (#6f6899a)
- error: change
CordError
type definition; add missing error types (#cf1990d) - error: include error kind when converting the error to string (#ecfd967)
- events: update event implementations (#baaa8fa)
- events: use the client
DisconnectEvent
instead of the localClientDisconnectedEvent
(#6535683) - fallback to
vim.uv
(#4d7604d) - fallback to os-specific executable path (#19d2ef9)
- fix error message (#7ae5966)
- force constructor initialization (#cb81ac9)
- handle shutdowns directly (#4e9748c)
- handle the process handle (#edf1a1b)
- have the session store
last_activity
(#ca34808) - implicitly return result in main function (#e9667f2)
- improve the way updates are skipped; expose a function in the manager class (#7032c0d)
- ipc: remove
on_error
calls (#5f3fcfe) - ipc: remove unnecessary scheduling (#3271a52)
- ipc: use full pipe path (#8090ddf)
- json: rename value structs and move them to their own file (#542f2f8)
- make
EventContext
mutable (#53bae42) - manager: force an update upon gaining focus (#4e5778f)
- mappings: provide a constant value for default icons (#5a93c08)
- minor changes (#f8b7e0b)
- move
args.rs
to its own module (#26575ef) - move
AssetType
toutil
(#cf9605a) - move
types.rs
to its own module (#aa09011) - move autocmd for cleaning up to
plugin/cord.vim
(#d57d2fc) - move Discord IPC logic to a separate module (#5915844)
- move IPC messages to their own module (#3a70ea6)
- move usercmds to
cord.vim
(#ca7bb9d) - msgpack: make
deseralize
accept already deserializedValue
(#4051fa2) - override
opts.filename
if it's empty (#5e5dee3) - provide debug error messages (#64a6489)
- reduce code verbosity by using macros (#bee4aa0)
- reflect codebase changes (#4b03eb2)
- remove
constants.VERSION
(#2d43373) - remove excessive debug logging (#414b4b2)
- remove lib.rs (#e01274e)
- remove redundant functions (#bc814da)
- remove server-scoped
ShutdownEvent
(#96f3478) - remove unnecessary events (#e4522d6)
- rename
Config
toPluginConfig
(#e7d3795) - rename
ResetTimestampEvent
->SetTimestampEvent
(#f280750) - rename
rpc
toactivity
(#09ed1af) - rename
style
->theme
(#b9a7b7e) - rename
swap_images
->swap_icons
(#c40b7ca) - rename
take_str
->take_string
(#c5b0a22) - rename directory to
presence
(#71034b2) - replace
SessionManager::new
withDefault
derive (#a0587fd) - rewrite the codebase to use msgpack instead of json (#f2228cf)
- separate process spawning logic (#b0d46bd)
- serialization: move [de]serializers to their own common module; introduce a common error type (#92102e6)
- set
opts.skip_update
back tofalse
after skipping an activity update (#fe78f7a) - set executable directory to
nvim-data/cord/bin
(#4e69b5b) - split
PluginConfig
into structs with relevant fields (#3e10a9a) - store relevant types and constants in a separate file (#05eb4f4)
- tweak events (#9dfa106)
- unconditionally fetch and store the git url (#a786053)
- update event context to include reference to Cord itself (#30995c6)
- update log message (#e2d16d2)
- update serialization logic (#c17fa3e)
- use
crate::Result
type (#8cf2bc2) - use
Packet::empty()
(#d4ff8fa) - use Cargo to build the server executable (#233b18b)
- use os-specific defaults (#c5b9e03)
- usercmds: do not include stack traceback when logging on unknown command (#46164b4)
- wrap
editor_image
in Option type (#a59eb25)
- correct error message (#2914451)
- fix warning (#d55a6b1)
- fix warnings (#149cb9f)
- fix warnings (#b5f7cee)
- fix warnings (#791a83e)
- fix warnings (#b22e442)
- more logging (#a776a41)
- move autocmds to the bottom of the file (#c42f88f)
- reformat code (#7af31a8)
- reformat codebase (#8e88a20)
- remove unused import (#ed3f130)
- remove unused variables (#d6f7a40)
- remove unused variables (#dedec5f)
- reorder imports (#5658ca8)
- resolve unused argument warning (#85781a2)
- none
2025-01-02
- feat!: update semantic release's ci ()
- fix!: bugfixes related to opts handling, workspace detection callback, button validation as well as slight changes in configuration ()
- merge #147 (), closes #147
- merge #152 (), closes #152
- merge #155 (), closes #155
- Merge branch 'client-server' of https://github.com/vyfor/cord.nvim into client-server ()
- Merge branch 'client-server' of https://github.com/vyfor/cord.nvim into client-server ()
- Merge branch 'client-server' of https://github.com/vyfor/cord.nvim into client-server ()
- refactor!: rename
git_url
->repo_url
()
- bump project version ()
- bump project version ()
- bump project version ()
- bump project version ()
- bump project version ()
- bump project version ()
- bump project version ()
- enable incremental compilation ()
- prepare for publishing ()
- set project version to
2.0.0-beta.1
() - specify msrv ()
- add
rustfmt.toml
() - add derives and reformat code ()
- add relevant
mod
s () - assets: delete the assets directory ()
- bump assets version ()
- bump assets version ()
- bump assets version ()
- bump assets version ()
- bump assets version ()
- change semantic release config ()
- code cleanup ()
- delete redundant file
status.rs
() - event: remove redundant implementations ()
- fix clippy warnings ()
- fix typo ()
- fix warnings ()
- fix warnings ()
- ignore clippy warning ()
- lua: fix warnings ()
- prepare for publishing ()
- release: 1.0.0-beta.1 [skip ci] (), closes #53 #80
- release: 2.0.0-beta.1 [skip ci] (), closes #147 #152 #155 #53 #80 #147 #152 #155 #53 #80 #147 #152 #155 #53 #80 #147 #152 #155 #53 #80
- release: 2.0.0-beta.1 [skip ci] (), closes #147 #152 #155 #53 #80 #147 #152 #155 #53 #80
- release: 2.0.0-beta.1 [skip ci] (), closes #147 #152 #155 #53 #80
- release: 2.0.0-beta.1 [skip ci] ()
- release: 2.0.0-beta.2 [skip ci] ()
- remove changelog ()
- remove changelog ()
- remove debug statement ()
- remove redundant code ()
- remove redundant file ()
- remove unnecessary explicit lifetimes ()
- remove unnecessary statement ()
- remove unused imports ()
- remove unused variable ()
- resolve merge conflicts ()
- set previous release in
.releaserc.json
() - temporarily comment out code ()
- update
.gitignore
() - update
.luacheckrc
() - update
.luacheckrc
() - update
.luacheckrc
() - update
.releaserc.json
() - update
util/mod.rs
() - update releaserc ()
- update semantic release ()
- update semantic release ()
- update semantic release ()
- add freebsd target ()
- create release.yml ()
- integrate semantic release ()
- prepare for publishing to luarocks ()
- update
release.yml
() - update
release.yml
() - update release workflow ()
- update release workflow ()
- update release workflow ()
- update release.yml ()
- update semantic release ()
- add configuration examples ()
- configration: add missing backticks ()
- configuration: add default config values ()
- configuration: center activity options ()
- create a configuration guide ()
- create a migration guide ()
- document string templating ()
- lua: document exposed interfaces ()
- migration: fix text highlighting ()
- prefer
:Cord update
over:Cord fetch
() - readme: add badge icons ()
- readme: add cord's logo ()
- readme: add installation step for
rocks.nvim
() - readme: include a link for cord's brand new discord server ()
- readme: rewrite README ()
- readme: update README ()
- readme: update README ()
- readme: update README ()
- readme: update README ()
- rust: document crucial parts of the codebase ()
- templates: remove the icon request issue template ()
- update configuration guide ()
- update configuration guide ()
- update configuration guide ()
- update documentation ()
- update examples ()
- update examples ()
- update examples ()
- update migration guide ()
- update migration guide ()
- update migration guide ()
- update readme ()
- update readme ()
- update readme ()
- update readme ()
- update readme ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the examples ()
- update the examples ()
- update the examples ()
- update the migration guide ()
- update the migration guide ()
- update the migration guide ()
- update the migration guide ()
- update the migration guide ()
- update the migration guide ()
- update the migration guide ()
- activity: add additional fields ()
- add
:Cord restart
() - add
json:Error
&msgpack:Error
() - add
new
function toPacket
struct () - add
notes
field () - add
TryFrom
impl toAssetType
() - add
vim.g.cord_is_updating
to avoid multiple simultaneous updates () - add a logger struct ()
- add a macro that simplifies field deserialization ()
- add cleanup logic ()
- add explicit rich presence clearing; can be completely hidden with
force = true
() - add message deserialization logic ()
- add message handler struct ()
- add program entry point ()
- add proper serialization for
LogEvent
() - add server-scoped
InitializeEvent
() - add the
Cord
struct which is used as the entry point () - add unix implementation of the IPC server ()
- add usercommands ()
- add utility functions for building and fetching the executable ()
- add windows implementation of the IPC server ()
- allow parsing
client_id
from client name () - allow the user to skip updates ()
- allow users to set a custom activity ()
- always fetch the executable if it's not present ()
- always perform the file exists check first ()
- async: implement Future wrappers for commonly used uv functions ()
- async: implement the concept of futures and handle async operations via coroutines ()
- capture build errors ()
- cli: add
--version
argument () - cli: implement argument parsing ()
- config: add
advanced.server.build
() - config: add
advanced.variables_in_functions
() - config: add
idle.unidle_on_focus
() - config: add
on_activity
hook () - config: add
on_disconnect
hook () - config: add support for string templates using the new
variables
option () - config: allow users to choose between different icon styles ()
- config: introduce
idle.smart_idle
option which lets general activities take precedence over the idle ones () - create
Config
struct to store internal configuration and refine timeout logic () - create a separate module for icon-related stuff ()
- display the most recent activity in case a client disconnects; clear the status if none are connected ()
- events: add client event implementations ()
- events: add server events ()
- events: handle client connection ()
- events: notify the client about errors on their side ()
- handle automatically moving the server executable to nvim's data directory ()
- handle the activity type ()
- icon: expose locals ()
- implement
Default
forOverlapped
struct () - implement
OnEvent
trait for all events () - implement a wrapper around
curl
() - implement caching for workspace and repository entries ()
- implement custom error type ()
- implement iterations - a maximum amount of time the server can idle without active connections ()
- implement reconnection mechanism for Discord ()
- implement sessions and session manager ()
- improve cleanup logic ()
- introduce
PresenceContext
struct which will be used to build the rich presence () - introduce message communication system ()
- ipc: continuously read data from Discord pipe to detect sudden disconnects ()
- ipc: use full pipe path ()
- json: add robust error handling ()
- lockfile: implement file locking mechanism ()
- logger: handle cases in lua callbacks ()
- lua: automatically start the server ()
- lua: call
on_workspace_change
hook if a workspace change is detected () - lua: initial implementation of the Lua codebase ()
- lua: switch to event-driven architecture ()
- make server error messages clean ()
- manager: expose more functions for interacting with rich presence and its manager ()
- mappings: add
cuda
filetype () - mappings: add icon for odin ()
- mappings: add missing filetypes ()
- mappings: add support for dashboard plugins ()
- mappings: add support for docs ()
- modularize the event system and add helper macros for creating messages ()
- msgpack: add msgpack deserialization ()
- msgpack: add msgpack serialization ()
- msgpack: add support for STR8 header ()
- msgpack: allow serialization of Map values ()
- msgpack: support owned strings ()
- notify client when the workspace is found in the blacklist ()
- notify the client when server is ready to accept connections ()
- notify the clients about the server shutdown ()
- prepend the messages with a length header in case they get merged ()
- prioritize general activities over the idle activity ()
- producer: allow sending a shutdown request ()
- provide clear error message for when the connection to Discord IPC fails ()
- provide clearer server error messages ()
- provide more data when logging the error ()
- server: add local
ShutdownEvent
() - server: improve error handling & error messages ()
- server: notify the client whether the provided client id is incorrect ()
- set style-specific default idle icons ()
- specify MSRV ()
- specify plugin version ()
- stop any updates when connection is lost ()
- store os name and architecture ()
- switch to next available activity on
clear_activity
event () - tie each client to a session ()
- trim stderr messages ()
- update sessions' last updated time ()
- use newly added mapping types ()
- usercmds: add
:Cord status
() - usercmds: add
:Cord update
() - util: add additional file-related utility functions ()
- validate and set
editor_image
upon initialization ()
IPC:is_closing
should return true if the pipe does not exist ()should_skip_update
should be checked right before the update ()- actually update the editor image ()
- allow sending same activity updates ()
- an attempt to fix intermittent ui freezes ()
- async: avoid including debug info on regular errors and fix error propagation ()
- automatically retry connection on
ECONNREFUSED
&ETIMEDOUT
() - avoid joining the handles ()
- change
cfg-if
attribute () - close uv handles before exiting ()
- config: correctly handle custom client ids ()
- config: correctly replace config values ()
- config: do not override the given editor icon ()
- correct the logic responsible for falling back to defaults ()
- correctly handle curl's stdout ()
- correctly serialize activity timestamps ()
- correctly serialize rich presence packet ()
- correctly set
workspace_dir
&workspace_name
() - do not queue activity updates upon losing focus ()
- fallback to default activity type if not provided ()
- idle timeout check ()
- implement event queuing for handling events registered after the handler is run ()
- imports ()
- include
vim.log.levels.OFF
when parsing the log level () - ipc: cleanup the stale pipe if the server process was forcefully terminated ()
- ipc: handle client disconnection on
ErrorKind::BrokenPipe
() - ipc: properly cleanup on exit ()
- let the updater alone handle executable spawning, or we might have two threads attempting to spawn it simultaneously ()
- log: correctly write to the client pipe ()
- mappings: ensure that the tooltips have a minimum length of 2 ()
- mappings: set plugin managers' default icon to
plugin
() - normalize path before workspace lookup ()
- perform a nil check for usercmds interacting with the activity manager ()
- properly handle chunked data ()
- properly handle server shutdowns ()
- replace method definition with a function definition ()
- resolve autocmds errors ()
- resolve event serialization issues ()
- resolve idle timeout related issues ()
- resolve workspace issues; handle missing hooks ()
- return if config validation fails ()
- schedule cleanup logic if necessary ()
- schedule the callbacks to maintain compatibility with Neovim 0.6.0 ()
- server: fix logging level comparison ()
- server: use panic-free means to write to stdout ()
- sessions: retrieve the correct session based on id instead of always returning the first available ()
- set executable permissions on unix systems ()
- spawn: use an absolute path for server executable's fallback path ()
- stop the plugin on server errors ()
- update
last_activity
only if an actual update occurred () - update server's status to
ready
on receiving the ready event () - use
cord --version
to determine the current version of the executable and whether an update is required () - windows: properly handle overlapped I/O ()
- windows: use overlapped io for named pipes to avoid deadlocks ()
- avoid unnecessary lookups ()
- avoid unnecessary lookups ()
- fs: switch to async filesystem ops ()
- handle logic responsible for broadcasting the ready event more efficiently ()
- json: optimize deserialization logic ()
- json: optimize serialization logic and generalize the serializer ()
- lua: lazy load some modules ()
- lua: lazily load other modules ()
- mappings: significant performance improvements ()
- remove unnecessary atomics ()
AssetType
: renameLsp
toLspManager
, allow parsing from a string slice ()Config::buttons
should be optional ()Packet
should not own theActivity
()- activity manager:
pause()
andresume()
should checkis_paused
() - add more logging ()
- add new message types, rename
ServerMessage
toLocalMessage
, resolve lifetime issues () - apply clippy suggestions ()
- call
on_ready
after initializing the activity manager () - change
'Connecting'
log level toDEBUG
() - change
Deserialize::deserialize
to returncrate::Result
() - change
killall -9
->pkill -15
() - change
validate_buttons
function to accept a mutable reference () - change error messages ()
- change the return type of
OnEvent::on_event
tocrate::Result<()>
() - cli: add a new error type for cli-related errors ()
- codebase: ensure proper asynchronous flow and reorganize codebase ()
- config: change default text values ()
- config: change default values ()
- config: remove
lsp
() - config: rename
advanced.server.build
toupdate
() - config: rename
enable
->enabled
() - config: set
cursor_update_mode
to'on_hold'
by default () - config: set
log_level
toINFO
by default () - constants: change assets url to the new repo; reset assets version ()
- core: simplify Rust backend by removing internal details ()
- correct require path ()
- error: change
CordError
type definition; add missing error types () - error: include error kind when converting the error to string ()
- events: update event implementations ()
- events: use the client
DisconnectEvent
instead of the localClientDisconnectedEvent
() - fallback to
vim.uv
() - fallback to os-specific executable path ()
- fix error message ()
- force constructor initialization ()
- handle shutdowns directly ()
- handle the process handle ()
- have the session store
last_activity
() - implicitly return result in main function ()
- improve the way updates are skipped; expose a function in the manager class ()
- ipc: remove
on_error
calls () - ipc: remove unnecessary scheduling ()
- ipc: use full pipe path ()
- json: rename value structs and move them to their own file ()
- make
EventContext
mutable () - manager: force an update upon gaining focus ()
- mappings: provide a constant value for default icons ()
- minor changes ()
- move
args.rs
to its own module () - move
AssetType
toutil
() - move
types.rs
to its own module () - move autocmd for cleaning up to
plugin/cord.vim
() - move Discord IPC logic to a separate module ()
- move IPC messages to their own module ()
- move usercmds to
cord.vim
() - msgpack: make
deseralize
accept already deserializedValue
() - override
opts.filename
if it's empty () - provide debug error messages ()
- reduce code verbosity by using macros ()
- reflect codebase changes ()
- remove
constants.VERSION
() - remove excessive debug logging ()
- remove lib.rs ()
- remove redundant functions ()
- remove server-scoped
ShutdownEvent
() - remove unnecessary events ()
- rename
Config
toPluginConfig
() - rename
ResetTimestampEvent
->SetTimestampEvent
() - rename
rpc
toactivity
() - rename
style
->theme
() - rename
swap_images
->swap_icons
() - rename
take_str
->take_string
() - rename directory to
presence
() - replace
SessionManager::new
withDefault
derive () - rewrite the codebase to use msgpack instead of json ()
- separate process spawning logic ()
- serialization: move [de]serializers to their own common module; introduce a common error type ()
- set
opts.skip_update
back tofalse
after skipping an activity update () - set executable directory to
nvim-data/cord/bin
() - split
PluginConfig
into structs with relevant fields () - store relevant types and constants in a separate file ()
- tweak events ()
- unconditionally fetch and store the git url ()
- update event context to include reference to Cord itself ()
- update log message ()
- update serialization logic ()
- use
crate::Result
type () - use
Packet::empty()
() - use Cargo to build the server executable ()
- use os-specific defaults ()
- usercmds: do not include stack traceback when logging on unknown command ()
- wrap
editor_image
in Option type ()
- correct error message ()
- fix warning ()
- fix warnings ()
- fix warnings ()
- fix warnings ()
- fix warnings ()
- more logging ()
- move autocmds to the bottom of the file ()
- reformat code ()
- reformat codebase ()
- remove unused import ()
- remove unused variables ()
- remove unused variables ()
- reorder imports ()
- resolve unused argument warning ()
- none
2025-01-02
- feat!: update semantic release's ci ()
- fix!: bugfixes related to opts handling, workspace detection callback, button validation as well as slight changes in configuration ()
- merge #147 (), closes #147
- merge #152 (), closes #152
- merge #155 (), closes #155
- Merge branch 'client-server' of https://github.com/vyfor/cord.nvim into client-server ()
- Merge branch 'client-server' of https://github.com/vyfor/cord.nvim into client-server ()
- Merge branch 'client-server' of https://github.com/vyfor/cord.nvim into client-server ()
- refactor!: rename
git_url
->repo_url
()
- bump project version ()
- bump project version ()
- bump project version ()
- bump project version ()
- bump project version ()
- bump project version ()
- bump project version ()
- enable incremental compilation ()
- prepare for publishing ()
- set project version to
2.0.0-beta.1
() - specify msrv ()
- add
rustfmt.toml
() - add derives and reformat code ()
- add relevant
mod
s () - assets: delete the assets directory ()
- bump assets version ()
- bump assets version ()
- bump assets version ()
- bump assets version ()
- bump assets version ()
- change semantic release config ()
- code cleanup ()
- delete redundant file
status.rs
() - event: remove redundant implementations ()
- fix clippy warnings ()
- fix typo ()
- fix warnings ()
- fix warnings ()
- ignore clippy warning ()
- lua: fix warnings ()
- release: 1.0.0-beta.1 [skip ci] (), closes #53 #80
- release: 2.0.0-beta.1 [skip ci] (), closes #147 #152 #155 #53 #80 #147 #152 #155 #53 #80
- release: 2.0.0-beta.1 [skip ci] (), closes #147 #152 #155 #53 #80
- release: 2.0.0-beta.1 [skip ci] ()
- release: 2.0.0-beta.2 [skip ci] ()
- remove changelog ()
- remove changelog ()
- remove debug statement ()
- remove redundant code ()
- remove redundant file ()
- remove unnecessary explicit lifetimes ()
- remove unnecessary statement ()
- remove unused imports ()
- remove unused variable ()
- resolve merge conflicts ()
- set previous release in
.releaserc.json
() - temporarily comment out code ()
- update
.gitignore
() - update
.luacheckrc
() - update
.luacheckrc
() - update
.luacheckrc
() - update
.releaserc.json
() - update
util/mod.rs
() - update releaserc ()
- update semantic release ()
- update semantic release ()
- update semantic release ()
- add freebsd target ()
- create release.yml ()
- integrate semantic release ()
- prepare for publishing to luarocks ()
- update
release.yml
() - update
release.yml
() - update release workflow ()
- update release workflow ()
- update release workflow ()
- update release.yml ()
- update semantic release ()
- add configuration examples ()
- configration: add missing backticks ()
- configuration: add default config values ()
- configuration: center activity options ()
- create a configuration guide ()
- create a migration guide ()
- document string templating ()
- lua: document exposed interfaces ()
- migration: fix text highlighting ()
- prefer
:Cord update
over:Cord fetch
() - readme: add badge icons ()
- readme: add cord's logo ()
- readme: add installation step for
rocks.nvim
() - readme: include a link for cord's brand new discord server ()
- readme: rewrite README ()
- readme: update README ()
- readme: update README ()
- readme: update README ()
- readme: update README ()
- rust: document crucial parts of the codebase ()
- templates: remove the icon request issue template ()
- update configuration guide ()
- update configuration guide ()
- update configuration guide ()
- update documentation ()
- update examples ()
- update examples ()
- update examples ()
- update migration guide ()
- update migration guide ()
- update migration guide ()
- update readme ()
- update readme ()
- update readme ()
- update readme ()
- update readme ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the examples ()
- update the examples ()
- update the examples ()
- update the migration guide ()
- update the migration guide ()
- update the migration guide ()
- update the migration guide ()
- update the migration guide ()
- update the migration guide ()
- update the migration guide ()
- activity: add additional fields ()
- add
:Cord restart
() - add
json:Error
&msgpack:Error
() - add
new
function toPacket
struct () - add
notes
field () - add
TryFrom
impl toAssetType
() - add
vim.g.cord_is_updating
to avoid multiple simultaneous updates () - add a logger struct ()
- add a macro that simplifies field deserialization ()
- add cleanup logic ()
- add explicit rich presence clearing; can be completely hidden with
force = true
() - add message deserialization logic ()
- add message handler struct ()
- add program entry point ()
- add proper serialization for
LogEvent
() - add server-scoped
InitializeEvent
() - add the
Cord
struct which is used as the entry point () - add unix implementation of the IPC server ()
- add usercommands ()
- add utility functions for building and fetching the executable ()
- add windows implementation of the IPC server ()
- allow parsing
client_id
from client name () - allow the user to skip updates ()
- allow users to set a custom activity ()
- always fetch the executable if it's not present ()
- always perform the file exists check first ()
- async: implement Future wrappers for commonly used uv functions ()
- async: implement the concept of futures and handle async operations via coroutines ()
- capture build errors ()
- cli: add
--version
argument () - cli: implement argument parsing ()
- config: add
advanced.server.build
() - config: add
advanced.variables_in_functions
() - config: add
idle.unidle_on_focus
() - config: add
on_activity
hook () - config: add
on_disconnect
hook () - config: add support for string templates using the new
variables
option () - config: allow users to choose between different icon styles ()
- config: custom assets' options now support function types ()
- config: introduce
idle.smart_idle
option which lets general activities take precedence over the idle ones () - create
Config
struct to store internal configuration and refine timeout logic () - create a separate module for icon-related stuff ()
- display the most recent activity in case a client disconnects; clear the status if none are connected ()
- events: add client event implementations ()
- events: add server events ()
- events: handle client connection ()
- events: notify the client about errors on their side ()
- handle automatically moving the server executable to nvim's data directory ()
- handle the activity type ()
- icon: expose locals ()
- implement
Default
forOverlapped
struct () - implement
OnEvent
trait for all events () - implement a wrapper around
curl
() - implement caching for workspace and repository entries ()
- implement custom error type ()
- implement iterations - a maximum amount of time the server can idle without active connections ()
- implement reconnection mechanism for Discord ()
- implement sessions and session manager ()
- improve cleanup logic ()
- introduce
PresenceContext
struct which will be used to build the rich presence () - introduce message communication system ()
- ipc: continuously read data from Discord pipe to detect sudden disconnects ()
- ipc: use full pipe path ()
- json: add robust error handling ()
- lockfile: implement file locking mechanism ()
- logger: handle cases in lua callbacks ()
- lua: automatically start the server ()
- lua: call
on_workspace_change
hook if a workspace change is detected () - lua: initial implementation of the Lua codebase ()
- lua: switch to event-driven architecture ()
- make server error messages clean ()
- manager: expose more functions for interacting with rich presence and its manager ()
- mappings: add
cuda
filetype () - mappings: add icon for odin ()
- mappings: add missing filetypes ()
- mappings: add support for dashboard plugins ()
- mappings: add support for docs ()
- modularize the event system and add helper macros for creating messages ()
- msgpack: add msgpack deserialization ()
- msgpack: add msgpack serialization ()
- msgpack: add support for STR8 header ()
- msgpack: allow serialization of Map values ()
- msgpack: support owned strings ()
- notify client when the workspace is found in the blacklist ()
- notify the client when server is ready to accept connections ()
- notify the clients about the server shutdown ()
- prepend the messages with a length header in case they get merged ()
- prioritize general activities over the idle activity ()
- producer: allow sending a shutdown request ()
- provide clear error message for when the connection to Discord IPC fails ()
- provide clearer server error messages ()
- provide more data when logging the error ()
- server: add local
ShutdownEvent
() - server: improve error handling & error messages ()
- server: notify the client whether the provided client id is incorrect ()
- set style-specific default idle icons ()
- specify MSRV ()
- specify plugin version ()
- stop any updates when connection is lost ()
- store os name and architecture ()
- switch to next available activity on
clear_activity
event () - tie each client to a session ()
- trim stderr messages ()
- update sessions' last updated time ()
- use newly added mapping types ()
- usercmds: add
:Cord status
() - usercmds: add
:Cord update
() - util: add additional file-related utility functions ()
- validate and set
editor_image
upon initialization ()
IPC:is_closing
should return true if the pipe does not exist ()should_skip_update
should be checked right before the update ()- actually update the editor image ()
- allow sending same activity updates ()
- an attempt to fix intermittent ui freezes ()
- async: avoid including debug info on regular errors and fix error propagation ()
- automatically retry connection on
ECONNREFUSED
&ETIMEDOUT
() - avoid joining the handles ()
- change
cfg-if
attribute () - close uv handles before exiting ()
- config: correctly handle custom client ids ()
- config: correctly replace config values ()
- config: do not override the given editor icon ()
- correct the logic responsible for falling back to defaults ()
- correctly handle curl's stdout ()
- correctly serialize activity timestamps ()
- correctly serialize rich presence packet ()
- correctly set
workspace_dir
&workspace_name
() - do not queue activity updates upon losing focus ()
- fallback to default activity type if not provided ()
- idle timeout check ()
- implement event queuing for handling events registered after the handler is run ()
- imports ()
- include
vim.log.levels.OFF
when parsing the log level () - ipc: cleanup the stale pipe if the server process was forcefully terminated ()
- ipc: handle client disconnection on
ErrorKind::BrokenPipe
() - ipc: properly cleanup on exit ()
- let the updater alone handle executable spawning, or we might have two threads attempting to spawn it simultaneously ()
- log: correctly write to the client pipe ()
- mappings: ensure that the tooltips have a minimum length of 2 ()
- mappings: set plugin managers' default icon to
plugin
() - normalize path before workspace lookup ()
- perform a nil check for usercmds interacting with the activity manager ()
- properly handle chunked data ()
- properly handle server shutdowns ()
- replace method definition with a function definition ()
- resolve autocmds errors ()
- resolve event serialization issues ()
- resolve idle timeout related issues ()
- resolve workspace issues; handle missing hooks ()
- return if config validation fails ()
- schedule cleanup logic if necessary ()
- schedule the callbacks to maintain compatibility with Neovim 0.6.0 ()
- server: fix logging level comparison ()
- server: use panic-free means to write to stdout ()
- sessions: retrieve the correct session based on id instead of always returning the first available ()
- set executable permissions on unix systems ()
- spawn: use an absolute path for server executable's fallback path ()
- stop the plugin on server errors ()
- update
last_activity
only if an actual update occurred () - update server's status to
ready
on receiving the ready event () - use
cord --version
to determine the current version of the executable and whether an update is required () - windows: properly handle overlapped I/O ()
- windows: use overlapped io for named pipes to avoid deadlocks ()
- avoid unnecessary lookups ()
- avoid unnecessary lookups ()
- fs: switch to async filesystem ops ()
- handle logic responsible for broadcasting the ready event more efficiently ()
- json: optimize deserialization logic ()
- json: optimize serialization logic and generalize the serializer ()
- lua: lazy load some modules ()
- lua: lazily load other modules ()
- mappings: significant performance improvements ()
- remove unnecessary atomics ()
AssetType
: renameLsp
toLspManager
, allow parsing from a string slice ()Config::buttons
should be optional ()Packet
should not own theActivity
()- activity manager:
pause()
andresume()
should checkis_paused
() - add more logging ()
- add new message types, rename
ServerMessage
toLocalMessage
, resolve lifetime issues () - apply clippy suggestions ()
- call
on_ready
after initializing the activity manager () - change
'Connecting'
log level toDEBUG
() - change
Deserialize::deserialize
to returncrate::Result
() - change
killall -9
->pkill -15
() - change
validate_buttons
function to accept a mutable reference () - change error messages ()
- change the return type of
OnEvent::on_event
tocrate::Result<()>
() - cli: add a new error type for cli-related errors ()
- codebase: ensure proper asynchronous flow and reorganize codebase ()
- config: change default text values ()
- config: change default values ()
- config: remove
lsp
() - config: rename
advanced.server.build
toupdate
() - config: rename
enable
->enabled
() - config: set
cursor_update_mode
to'on_hold'
by default () - config: set
log_level
toINFO
by default () - constants: change assets url to the new repo; reset assets version ()
- core: simplify Rust backend by removing internal details ()
- correct require path ()
- error: change
CordError
type definition; add missing error types () - error: include error kind when converting the error to string ()
- events: update event implementations ()
- events: use the client
DisconnectEvent
instead of the localClientDisconnectedEvent
() - fallback to
vim.uv
() - fallback to os-specific executable path ()
- fix error message ()
- force constructor initialization ()
- handle shutdowns directly ()
- handle the process handle ()
- have the session store
last_activity
() - implicitly return result in main function ()
- improve the way updates are skipped; expose a function in the manager class ()
- ipc: remove
on_error
calls () - ipc: remove unnecessary scheduling ()
- ipc: use full pipe path ()
- json: rename value structs and move them to their own file ()
- make
EventContext
mutable () - manager: force an update upon gaining focus ()
- mappings: provide a constant value for default icons ()
- minor changes ()
- move
args.rs
to its own module () - move
AssetType
toutil
() - move
types.rs
to its own module () - move autocmd for cleaning up to
plugin/cord.vim
() - move Discord IPC logic to a separate module ()
- move IPC messages to their own module ()
- move usercmds to
cord.vim
() - msgpack: make
deseralize
accept already deserializedValue
() - override
opts.filename
if it's empty () - provide debug error messages ()
- reduce code verbosity by using macros ()
- reflect codebase changes ()
- remove
constants.VERSION
() - remove excessive debug logging ()
- remove lib.rs ()
- remove redundant functions ()
- remove server-scoped
ShutdownEvent
() - remove unnecessary events ()
- rename
Config
toPluginConfig
() - rename
ResetTimestampEvent
->SetTimestampEvent
() - rename
rpc
toactivity
() - rename
style
->theme
() - rename
swap_images
->swap_icons
() - rename
take_str
->take_string
() - rename directory to
presence
() - replace
SessionManager::new
withDefault
derive () - rewrite the codebase to use msgpack instead of json ()
- separate process spawning logic ()
- serialization: move [de]serializers to their own common module; introduce a common error type ()
- set
opts.skip_update
back tofalse
after skipping an activity update () - set executable directory to
nvim-data/cord/bin
() - split
PluginConfig
into structs with relevant fields () - store relevant types and constants in a separate file ()
- tweak events ()
- unconditionally fetch and store the git url ()
- update event context to include reference to Cord itself ()
- update log message ()
- update serialization logic ()
- use
crate::Result
type () - use
Packet::empty()
() - use Cargo to build the server executable ()
- use os-specific defaults ()
- usercmds: do not include stack traceback when logging on unknown command ()
- wrap
editor_image
in Option type ()
- correct error message ()
- fix warning ()
- fix warnings ()
- fix warnings ()
- fix warnings ()
- fix warnings ()
- more logging ()
- move autocmds to the bottom of the file ()
- reformat code ()
- reformat codebase ()
- remove unused import ()
- remove unused variables ()
- remove unused variables ()
- reorder imports ()
- resolve unused argument warning ()
- none
2025-01-02
- feat!: update semantic release's ci ()
- fix!: bugfixes related to opts handling, workspace detection callback, button validation as well as slight changes in configuration ()
- merge #147 (), closes #147
- merge #152 (), closes #152
- merge #155 (), closes #155
- Merge branch 'client-server' of https://github.com/vyfor/cord.nvim into client-server ()
- Merge branch 'client-server' of https://github.com/vyfor/cord.nvim into client-server ()
- refactor!: rename
git_url
->repo_url
()
- bump project version ()
- bump project version ()
- bump project version ()
- bump project version ()
- bump project version ()
- bump project version ()
- bump project version ()
- enable incremental compilation ()
- prepare for publishing ()
- set project version to
2.0.0-beta.1
() - specify msrv ()
- add
rustfmt.toml
() - add derives and reformat code ()
- add relevant
mod
s () - assets: delete the assets directory ()
- bump assets version ()
- bump assets version ()
- bump assets version ()
- bump assets version ()
- bump assets version ()
- change semantic release config ()
- code cleanup ()
- delete redundant file
status.rs
() - event: remove redundant implementations ()
- fix clippy warnings ()
- fix typo ()
- fix warnings ()
- fix warnings ()
- ignore clippy warning ()
- lua: fix warnings ()
- release: 1.0.0-beta.1 [skip ci] (), closes #53 #80
- release: 2.0.0-beta.1 [skip ci] (), closes #147 #152 #155 #53 #80
- release: 2.0.0-beta.1 [skip ci] ()
- release: 2.0.0-beta.2 [skip ci] ()
- remove changelog ()
- remove changelog ()
- remove debug statement ()
- remove redundant code ()
- remove redundant file ()
- remove unnecessary explicit lifetimes ()
- remove unnecessary statement ()
- remove unused imports ()
- remove unused variable ()
- resolve merge conflicts ()
- set previous release in
.releaserc.json
() - temporarily comment out code ()
- update
.gitignore
() - update
.luacheckrc
() - update
.luacheckrc
() - update
.luacheckrc
() - update
.releaserc.json
() - update
util/mod.rs
() - update releaserc ()
- update semantic release ()
- update semantic release ()
- add freebsd target ()
- create release.yml ()
- integrate semantic release ()
- prepare for publishing to luarocks ()
- update
release.yml
() - update
release.yml
() - update release workflow ()
- update release workflow ()
- update release workflow ()
- update release.yml ()
- update semantic release ()
- add configuration examples ()
- configration: add missing backticks ()
- configuration: add default config values ()
- configuration: center activity options ()
- create a configuration guide ()
- create a migration guide ()
- document string templating ()
- lua: document exposed interfaces ()
- migration: fix text highlighting ()
- prefer
:Cord update
over:Cord fetch
() - readme: add badge icons ()
- readme: add cord's logo ()
- readme: add installation step for
rocks.nvim
() - readme: include a link for cord's brand new discord server ()
- readme: rewrite README ()
- readme: update README ()
- readme: update README ()
- readme: update README ()
- readme: update README ()
- rust: document crucial parts of the codebase ()
- templates: remove the icon request issue template ()
- update configuration guide ()
- update configuration guide ()
- update configuration guide ()
- update documentation ()
- update examples ()
- update examples ()
- update examples ()
- update migration guide ()
- update migration guide ()
- update migration guide ()
- update readme ()
- update readme ()
- update readme ()
- update readme ()
- update readme ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the examples ()
- update the examples ()
- update the examples ()
- update the migration guide ()
- update the migration guide ()
- update the migration guide ()
- update the migration guide ()
- update the migration guide ()
- update the migration guide ()
- update the migration guide ()
- activity: add additional fields ()
- add
:Cord restart
() - add
json:Error
&msgpack:Error
() - add
new
function toPacket
struct () - add
notes
field () - add
TryFrom
impl toAssetType
() - add
vim.g.cord_is_updating
to avoid multiple simultaneous updates () - add a logger struct ()
- add a macro that simplifies field deserialization ()
- add cleanup logic ()
- add explicit rich presence clearing; can be completely hidden with
force = true
() - add message deserialization logic ()
- add message handler struct ()
- add program entry point ()
- add proper serialization for
LogEvent
() - add server-scoped
InitializeEvent
() - add the
Cord
struct which is used as the entry point () - add unix implementation of the IPC server ()
- add usercommands ()
- add utility functions for building and fetching the executable ()
- add windows implementation of the IPC server ()
- allow parsing
client_id
from client name () - allow the user to skip updates ()
- allow users to set a custom activity ()
- always fetch the executable if it's not present ()
- always perform the file exists check first ()
- async: implement Future wrappers for commonly used uv functions ()
- async: implement the concept of futures and handle async operations via coroutines ()
- capture build errors ()
- cli: add
--version
argument () - cli: implement argument parsing ()
- config: add
advanced.server.build
() - config: add
advanced.variables_in_functions
() - config: add
idle.unidle_on_focus
() - config: add
on_activity
hook () - config: add
on_disconnect
hook () - config: add support for string templates using the new
variables
option () - config: allow users to choose between different icon styles ()
- config: custom assets' options now support function types ()
- config: introduce
idle.smart_idle
option which lets general activities take precedence over the idle ones () - create
Config
struct to store internal configuration and refine timeout logic () - create a separate module for icon-related stuff ()
- display the most recent activity in case a client disconnects; clear the status if none are connected ()
- events: add client event implementations ()
- events: add server events ()
- events: handle client connection ()
- events: notify the client about errors on their side ()
- handle automatically moving the server executable to nvim's data directory ()
- handle the activity type ()
- icon: expose locals ()
- implement
Default
forOverlapped
struct () - implement
OnEvent
trait for all events () - implement a wrapper around
curl
() - implement caching for workspace and repository entries ()
- implement custom error type ()
- implement iterations - a maximum amount of time the server can idle without active connections ()
- implement reconnection mechanism for Discord ()
- implement sessions and session manager ()
- improve cleanup logic ()
- introduce
PresenceContext
struct which will be used to build the rich presence () - introduce message communication system ()
- ipc: continuously read data from Discord pipe to detect sudden disconnects ()
- ipc: use full pipe path ()
- json: add robust error handling ()
- lockfile: implement file locking mechanism ()
- logger: handle cases in lua callbacks ()
- lua: automatically start the server ()
- lua: call
on_workspace_change
hook if a workspace change is detected () - lua: initial implementation of the Lua codebase ()
- lua: switch to event-driven architecture ()
- make server error messages clean ()
- manager: expose more functions for interacting with rich presence and its manager ()
- mappings: add
cuda
filetype () - mappings: add icon for odin ()
- mappings: add missing filetypes ()
- mappings: add support for dashboard plugins ()
- mappings: add support for docs ()
- modularize the event system and add helper macros for creating messages ()
- msgpack: add msgpack deserialization ()
- msgpack: add msgpack serialization ()
- msgpack: add support for STR8 header ()
- msgpack: allow serialization of Map values ()
- msgpack: support owned strings ()
- notify client when the workspace is found in the blacklist ()
- notify the client when server is ready to accept connections ()
- notify the clients about the server shutdown ()
- prepend the messages with a length header in case they get merged ()
- prioritize general activities over the idle activity ()
- producer: allow sending a shutdown request ()
- provide clear error message for when the connection to Discord IPC fails ()
- provide clearer server error messages ()
- provide more data when logging the error ()
- server: add local
ShutdownEvent
() - server: improve error handling & error messages ()
- server: notify the client whether the provided client id is incorrect ()
- set style-specific default idle icons ()
- specify MSRV ()
- specify plugin version ()
- stop any updates when connection is lost ()
- store os name and architecture ()
- switch to next available activity on
clear_activity
event () - tie each client to a session ()
- trim stderr messages ()
- update sessions' last updated time ()
- use newly added mapping types ()
- usercmds: add
:Cord status
() - usercmds: add
:Cord update
() - util: add additional file-related utility functions ()
- validate and set
editor_image
upon initialization ()
IPC:is_closing
should return true if the pipe does not exist ()should_skip_update
should be checked right before the update ()- actually update the editor image ()
- allow sending same activity updates ()
- an attempt to fix intermittent ui freezes ()
- async: avoid including debug info on regular errors and fix error propagation ()
- automatically retry connection on
ECONNREFUSED
&ETIMEDOUT
() - avoid joining the handles ()
- change
cfg-if
attribute () - close uv handles before exiting ()
- config: correctly handle custom client ids ()
- config: correctly replace config values ()
- config: do not override the given editor icon ()
- correct the logic responsible for falling back to defaults ()
- correctly handle curl's stdout ()
- correctly serialize activity timestamps ()
- correctly serialize rich presence packet ()
- correctly set
workspace_dir
&workspace_name
() - do not queue activity updates upon losing focus ()
- fallback to default activity type if not provided ()
- idle timeout check ()
- implement event queuing for handling events registered after the handler is run ()
- imports ()
- include
vim.log.levels.OFF
when parsing the log level () - ipc: cleanup the stale pipe if the server process was forcefully terminated ()
- ipc: handle client disconnection on
ErrorKind::BrokenPipe
() - ipc: properly cleanup on exit ()
- let the updater alone handle executable spawning, or we might have two threads attempting to spawn it simultaneously ()
- log: correctly write to the client pipe ()
- mappings: ensure that the tooltips have a minimum length of 2 ()
- mappings: set plugin managers' default icon to
plugin
() - normalize path before workspace lookup ()
- perform a nil check for usercmds interacting with the activity manager ()
- properly handle chunked data ()
- properly handle server shutdowns ()
- replace method definition with a function definition ()
- resolve autocmds errors ()
- resolve event serialization issues ()
- resolve idle timeout related issues ()
- resolve workspace issues; handle missing hooks ()
- return if config validation fails ()
- schedule cleanup logic if necessary ()
- schedule the callbacks to maintain compatibility with Neovim 0.6.0 ()
- server: fix logging level comparison ()
- server: use panic-free means to write to stdout ()
- sessions: retrieve the correct session based on id instead of always returning the first available ()
- set executable permissions on unix systems ()
- spawn: use an absolute path for server executable's fallback path ()
- stop the plugin on server errors ()
- update
last_activity
only if an actual update occurred () - update server's status to
ready
on receiving the ready event () - use
cord --version
to determine the current version of the executable and whether an update is required () - windows: properly handle overlapped I/O ()
- windows: use overlapped io for named pipes to avoid deadlocks ()
- avoid unnecessary lookups ()
- avoid unnecessary lookups ()
- fs: switch to async filesystem ops ()
- handle logic responsible for broadcasting the ready event more efficiently ()
- json: optimize deserialization logic ()
- json: optimize serialization logic and generalize the serializer ()
- lua: lazy load some modules ()
- lua: lazily load other modules ()
- mappings: significant performance improvements ()
- remove unnecessary atomics ()
AssetType
: renameLsp
toLspManager
, allow parsing from a string slice ()Config::buttons
should be optional ()Packet
should not own theActivity
()- activity manager:
pause()
andresume()
should checkis_paused
() - add more logging ()
- add new message types, rename
ServerMessage
toLocalMessage
, resolve lifetime issues () - apply clippy suggestions ()
- call
on_ready
after initializing the activity manager () - change
'Connecting'
log level toDEBUG
() - change
Deserialize::deserialize
to returncrate::Result
() - change
killall -9
->pkill -15
() - change
validate_buttons
function to accept a mutable reference () - change error messages ()
- change the return type of
OnEvent::on_event
tocrate::Result<()>
() - cli: add a new error type for cli-related errors ()
- codebase: ensure proper asynchronous flow and reorganize codebase ()
- config: change default text values ()
- config: change default values ()
- config: remove
lsp
() - config: rename
advanced.server.build
toupdate
() - config: rename
enable
->enabled
() - config: set
cursor_update_mode
to'on_hold'
by default () - config: set
log_level
toINFO
by default () - constants: change assets url to the new repo; reset assets version ()
- core: simplify Rust backend by removing internal details ()
- correct require path ()
- error: change
CordError
type definition; add missing error types () - error: include error kind when converting the error to string ()
- events: update event implementations ()
- events: use the client
DisconnectEvent
instead of the localClientDisconnectedEvent
() - fallback to
vim.uv
() - fallback to os-specific executable path ()
- fix error message ()
- force constructor initialization ()
- handle shutdowns directly ()
- handle the process handle ()
- have the session store
last_activity
() - implicitly return result in main function ()
- improve the way updates are skipped; expose a function in the manager class ()
- ipc: remove
on_error
calls () - ipc: remove unnecessary scheduling ()
- ipc: use full pipe path ()
- json: rename value structs and move them to their own file ()
- make
EventContext
mutable () - manager: force an update upon gaining focus ()
- mappings: provide a constant value for default icons ()
- minor changes ()
- move
args.rs
to its own module () - move
AssetType
toutil
() - move
types.rs
to its own module () - move autocmd for cleaning up to
plugin/cord.vim
() - move Discord IPC logic to a separate module ()
- move IPC messages to their own module ()
- move usercmds to
cord.vim
() - msgpack: make
deseralize
accept already deserializedValue
() - override
opts.filename
if it's empty () - provide debug error messages ()
- reduce code verbosity by using macros ()
- reflect codebase changes ()
- remove
constants.VERSION
() - remove excessive debug logging ()
- remove lib.rs ()
- remove redundant functions ()
- remove server-scoped
ShutdownEvent
() - remove unnecessary events ()
- rename
Config
toPluginConfig
() - rename
ResetTimestampEvent
->SetTimestampEvent
() - rename
rpc
toactivity
() - rename
style
->theme
() - rename
swap_images
->swap_icons
() - rename
take_str
->take_string
() - rename directory to
presence
() - replace
SessionManager::new
withDefault
derive () - rewrite the codebase to use msgpack instead of json ()
- separate process spawning logic ()
- serialization: move [de]serializers to their own common module; introduce a common error type ()
- set
opts.skip_update
back tofalse
after skipping an activity update () - set executable directory to
nvim-data/cord/bin
() - split
PluginConfig
into structs with relevant fields () - store relevant types and constants in a separate file ()
- tweak events ()
- unconditionally fetch and store the git url ()
- update event context to include reference to Cord itself ()
- update log message ()
- update serialization logic ()
- use
crate::Result
type () - use
Packet::empty()
() - use Cargo to build the server executable ()
- use os-specific defaults ()
- usercmds: do not include stack traceback when logging on unknown command ()
- wrap
editor_image
in Option type ()
- correct error message ()
- fix warning ()
- fix warnings ()
- fix warnings ()
- fix warnings ()
- fix warnings ()
- more logging ()
- move autocmds to the bottom of the file ()
- reformat code ()
- reformat codebase ()
- remove unused import ()
- remove unused variables ()
- remove unused variables ()
- reorder imports ()
- resolve unused argument warning ()
- none
2025-01-02
- feat!: update semantic release's ci ()
- fix!: bugfixes related to opts handling, workspace detection callback, button validation as well as slight changes in configuration ()
- merge #147 (), closes #147
- merge #152 (), closes #152
- merge #155 (), closes #155
- Merge branch 'client-server' of https://github.com/vyfor/cord.nvim into client-server ()
- refactor!: rename
git_url
->repo_url
()
- bump project version ()
- bump project version ()
- bump project version ()
- bump project version ()
- bump project version ()
- bump project version ()
- bump project version ()
- enable incremental compilation ()
- prepare for publishing ()
- set project version to
2.0.0-beta.1
() - specify msrv ()
- add
rustfmt.toml
() - add derives and reformat code ()
- add relevant
mod
s () - assets: delete the assets directory ()
- bump assets version ()
- bump assets version ()
- bump assets version ()
- bump assets version ()
- bump assets version ()
- change semantic release config ()
- code cleanup ()
- delete redundant file
status.rs
() - event: remove redundant implementations ()
- fix clippy warnings ()
- fix typo ()
- fix warnings ()
- fix warnings ()
- ignore clippy warning ()
- lua: fix warnings ()
- release: 1.0.0-beta.1 [skip ci] (), closes #53 #80
- release: 2.0.0-beta.1 [skip ci] ()
- release: 2.0.0-beta.2 [skip ci] ()
- remove changelog ()
- remove changelog ()
- remove debug statement ()
- remove redundant code ()
- remove redundant file ()
- remove unnecessary explicit lifetimes ()
- remove unnecessary statement ()
- remove unused imports ()
- remove unused variable ()
- resolve merge conflicts ()
- set previous release in
.releaserc.json
() - temporarily comment out code ()
- update
.gitignore
() - update
.luacheckrc
() - update
.luacheckrc
() - update
.luacheckrc
() - update
.releaserc.json
() - update
util/mod.rs
() - update releaserc ()
- add freebsd target ()
- create release.yml ()
- integrate semantic release ()
- prepare for publishing to luarocks ()
- update
release.yml
() - update
release.yml
() - update release workflow ()
- update release workflow ()
- update release workflow ()
- update release.yml ()
- update semantic release ()
- add configuration examples ()
- configration: add missing backticks ()
- configuration: add default config values ()
- configuration: center activity options ()
- create a configuration guide ()
- create a migration guide ()
- document string templating ()
- lua: document exposed interfaces ()
- migration: fix text highlighting ()
- prefer
:Cord update
over:Cord fetch
() - readme: add badge icons ()
- readme: add cord's logo ()
- readme: add installation step for
rocks.nvim
() - readme: include a link for cord's brand new discord server ()
- readme: rewrite README ()
- readme: update README ()
- readme: update README ()
- readme: update README ()
- readme: update README ()
- rust: document crucial parts of the codebase ()
- templates: remove the icon request issue template ()
- update configuration guide ()
- update configuration guide ()
- update configuration guide ()
- update documentation ()
- update examples ()
- update examples ()
- update examples ()
- update migration guide ()
- update migration guide ()
- update migration guide ()
- update readme ()
- update readme ()
- update readme ()
- update readme ()
- update readme ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the configuration guide ()
- update the examples ()
- update the examples ()
- update the examples ()
- update the migration guide ()
- update the migration guide ()
- update the migration guide ()
- update the migration guide ()
- update the migration guide ()
- update the migration guide ()
- update the migration guide ()
- activity: add additional fields ()
- add
:Cord restart
() - add
json:Error
&msgpack:Error
() - add
new
function toPacket
struct () - add
notes
field () - add
TryFrom
impl toAssetType
() - add
vim.g.cord_is_updating
to avoid multiple simultaneous updates () - add a logger struct ()
- add a macro that simplifies field deserialization ()
- add cleanup logic ()
- add explicit rich presence clearing; can be completely hidden with
force = true
() - add message deserialization logic ()
- add message handler struct ()
- add program entry point ()
- add proper serialization for
LogEvent
() - add server-scoped
InitializeEvent
() - add the
Cord
struct which is used as the entry point () - add unix implementation of the IPC server ()
- add usercommands ()
- add utility functions for building and fetching the executable ()
- add windows implementation of the IPC server ()
- allow parsing
client_id
from client name () - allow the user to skip updates ()
- allow users to set a custom activity ()
- always fetch the executable if it's not present ()
- always perform the file exists check first ()
- async: implement Future wrappers for commonly used uv functions ()
- async: implement the concept of futures and handle async operations via coroutines ()
- capture build errors ()
- cli: add
--version
argument () - cli: implement argument parsing ()
- config: add
advanced.server.build
() - config: add
advanced.variables_in_functions
() - config: add
idle.unidle_on_focus
() - config: add
on_activity
hook () - config: add
on_disconnect
hook () - config: add support for string templates using the new
variables
option () - config: allow users to choose between different icon styles ()
- config: custom assets' options now support function types ()
- config: introduce
idle.smart_idle
option which lets general activities take precedence over the idle ones () - create
Config
struct to store internal configuration and refine timeout logic () - create a separate module for icon-related stuff ()
- display the most recent activity in case a client disconnects; clear the status if none are connected ()
- events: add client event implementations ()
- events: add server events ()
- events: handle client connection ()
- events: notify the client about errors on their side ()
- handle automatically moving the server executable to nvim's data directory ()
- handle the activity type ()
- icon: expose locals ()
- implement
Default
forOverlapped
struct () - implement
OnEvent
trait for all events () - implement a wrapper around
curl
() - implement caching for workspace and repository entries ()
- implement custom error type ()
- implement iterations - a maximum amount of time the server can idle without active connections ()
- implement reconnection mechanism for Discord ()
- implement sessions and session manager ()
- improve cleanup logic ()
- introduce
PresenceContext
struct which will be used to build the rich presence () - introduce message communication system ()
- ipc: continuously read data from Discord pipe to detect sudden disconnects ()
- ipc: use full pipe path ()
- json: add robust error handling ()
- lockfile: implement file locking mechanism ()
- logger: handle cases in lua callbacks ()
- lua: automatically start the server ()
- lua: call
on_workspace_change
hook if a workspace change is detected () - lua: initial implementation of the Lua codebase ()
- lua: switch to event-driven architecture ()
- make server error messages clean ()
- manager: expose more functions for interacting with rich presence and its manager ()
- mappings: add
cuda
filetype () - mappings: add icon for odin ()
- mappings: add missing filetypes ()
- mappings: add support for dashboard plugins ()
- mappings: add support for docs ()
- modularize the event system and add helper macros for creating messages ()
- msgpack: add msgpack deserialization ()
- msgpack: add msgpack serialization ()
- msgpack: add support for STR8 header ()
- msgpack: allow serialization of Map values ()
- msgpack: support owned strings ()
- notify client when the workspace is found in the blacklist ()
- notify the client when server is ready to accept connections ()
- notify the clients about the server shutdown ()
- prepend the messages with a length header in case they get merged ()
- prioritize general activities over the idle activity ()
- producer: allow sending a shutdown request ()
- provide clear error message for when the connection to Discord IPC fails ()
- provide clearer server error messages ()
- provide more data when logging the error ()
- server: add local
ShutdownEvent
() - server: improve error handling & error messages ()
- server: notify the client whether the provided client id is incorrect ()
- set style-specific default idle icons ()
- specify MSRV ()
- specify plugin version ()
- stop any updates when connection is lost ()
- store os name and architecture ()
- switch to next available activity on
clear_activity
event () - tie each client to a session ()
- trim stderr messages ()
- update sessions' last updated time ()
- use newly added mapping types ()
- usercmds: add
:Cord status
() - usercmds: add
:Cord update
() - util: add additional file-related utility functions ()
- validate and set
editor_image
upon initialization ()
IPC:is_closing
should return true if the pipe does not exist ()should_skip_update
should be checked right before the update ()- actually update the editor image ()
- allow sending same activity updates ()
- an attempt to fix intermittent ui freezes ()
- async: avoid including debug info on regular errors and fix error propagation ()
- automatically retry connection on
ECONNREFUSED
&ETIMEDOUT
() - avoid joining the handles ()
- change
cfg-if
attribute () - close uv handles before exiting ()
- config: correctly handle custom client ids ()
- config: correctly replace config values ()
- config: do not override the given editor icon ()
- correct the logic responsible for falling back to defaults ()
- correctly handle curl's stdout ()
- correctly serialize activity timestamps ()
- correctly serialize rich presence packet ()
- correctly set
workspace_dir
&workspace_name
() - do not queue activity updates upon losing focus ()
- fallback to default activity type if not provided ()
- idle timeout check ()
- implement event queuing for handling events registered after the handler is run ()
- imports ()
- include
vim.log.levels.OFF
when parsing the log level () - ipc: cleanup the stale pipe if the server process was forcefully terminated ()
- ipc: handle client disconnection on
ErrorKind::BrokenPipe
() - ipc: properly cleanup on exit ()
- let the updater alone handle executable spawning, or we might have two threads attempting to spawn it simultaneously ()
- log: correctly write to the client pipe ()
- mappings: ensure that the tooltips have a minimum length of 2 ()
- mappings: set plugin managers' default icon to
plugin
() - normalize path before workspace lookup ()
- perform a nil check for usercmds interacting with the activity manager ()
- properly handle chunked data ()
- properly handle server shutdowns ()
- replace method definition with a function definition ()
- resolve autocmds errors ()
- resolve event serialization issues ()
- resolve idle timeout related issues ()
- resolve workspace issues; handle missing hooks ()
- return if config validation fails ()
- schedule cleanup logic if necessary ()
- schedule the callbacks to maintain compatibility with Neovim 0.6.0 ()
- server: fix logging level comparison ()
- server: use panic-free means to write to stdout ()
- sessions: retrieve the correct session based on id instead of always returning the first available ()
- set executable permissions on unix systems ()
- spawn: use an absolute path for server executable's fallback path ()
- stop the plugin on server errors ()
- update
last_activity
only if an actual update occurred () - update server's status to
ready
on receiving the ready event () - use
cord --version
to determine the current version of the executable and whether an update is required () - windows: properly handle overlapped I/O ()
- windows: use overlapped io for named pipes to avoid deadlocks ()
- avoid unnecessary lookups ()
- avoid unnecessary lookups ()
- fs: switch to async filesystem ops ()
- handle logic responsible for broadcasting the ready event more efficiently ()
- json: optimize deserialization logic ()
- json: optimize serialization logic and generalize the serializer ()
- lua: lazy load some modules ()
- lua: lazily load other modules ()
- mappings: significant performance improvements ()
- remove unnecessary atomics ()
AssetType
: renameLsp
toLspManager
, allow parsing from a string slice ()Config::buttons
should be optional ()Packet
should not own theActivity
()- activity manager:
pause()
andresume()
should checkis_paused
() - add more logging ()
- add new message types, rename
ServerMessage
toLocalMessage
, resolve lifetime issues () - apply clippy suggestions ()
- call
on_ready
after initializing the activity manager () - change
'Connecting'
log level toDEBUG
() - change
Deserialize::deserialize
to returncrate::Result
() - change
killall -9
->pkill -15
() - change
validate_buttons
function to accept a mutable reference () - change error messages ()
- change the return type of
OnEvent::on_event
tocrate::Result<()>
() - cli: add a new error type for cli-related errors ()
- codebase: ensure proper asynchronous flow and reorganize codebase ()
- config: change default text values ()
- config: change default values ()
- config: remove
lsp
() - config: rename
advanced.server.build
toupdate
() - config: rename
enable
->enabled
() - config: set
cursor_update_mode
to'on_hold'
by default () - config: set
log_level
toINFO
by default () - constants: change assets url to the new repo; reset assets version ()
- core: simplify Rust backend by removing internal details ()
- correct require path ()
- error: change
CordError
type definition; add missing error types () - error: include error kind when converting the error to string ()
- events: update event implementations ()
- events: use the client
DisconnectEvent
instead of the localClientDisconnectedEvent
() - fallback to
vim.uv
() - fallback to os-specific executable path ()
- fix error message ()
- force constructor initialization ()
- handle shutdowns directly ()
- handle the process handle ()
- have the session store
last_activity
() - implicitly return result in main function ()
- improve the way updates are skipped; expose a function in the manager class ()
- ipc: remove
on_error
calls () - ipc: remove unnecessary scheduling ()
- ipc: use full pipe path ()
- json: rename value structs and move them to their own file ()
- make
EventContext
mutable () - manager: force an update upon gaining focus ()
- mappings: provide a constant value for default icons ()
- minor changes ()
- move
args.rs
to its own module () - move
AssetType
toutil
() - move
types.rs
to its own module () - move autocmd for cleaning up to
plugin/cord.vim
() - move Discord IPC logic to a separate module ()
- move IPC messages to their own module ()
- move usercmds to
cord.vim
() - msgpack: make
deseralize
accept already deserializedValue
() - override
opts.filename
if it's empty () - provide debug error messages ()
- reduce code verbosity by using macros ()
- reflect codebase changes ()
- remove
constants.VERSION
() - remove excessive debug logging ()
- remove lib.rs ()
- remove redundant functions ()
- remove server-scoped
ShutdownEvent
() - remove unnecessary events ()
- rename
Config
toPluginConfig
() - rename
ResetTimestampEvent
->SetTimestampEvent
() - rename
rpc
toactivity
() - rename
style
->theme
() - rename
swap_images
->swap_icons
() - rename
take_str
->take_string
() - rename directory to
presence
() - replace
SessionManager::new
withDefault
derive () - rewrite the codebase to use msgpack instead of json ()
- separate process spawning logic ()
- serialization: move [de]serializers to their own common module; introduce a common error type ()
- set
opts.skip_update
back tofalse
after skipping an activity update () - set executable directory to
nvim-data/cord/bin
() - split
PluginConfig
into structs with relevant fields () - store relevant types and constants in a separate file ()
- tweak events ()
- unconditionally fetch and store the git url ()
- update event context to include reference to Cord itself ()
- update log message ()
- update serialization logic ()
- use
crate::Result
type () - use
Packet::empty()
() - use Cargo to build the server executable ()
- use os-specific defaults ()
- usercmds: do not include stack traceback when logging on unknown command ()
- wrap
editor_image
in Option type ()
- correct error message ()
- fix warning ()
- fix warnings ()
- fix warnings ()
- fix warnings ()
- fix warnings ()
- more logging ()
- move autocmds to the bottom of the file ()
- reformat code ()
- reformat codebase ()
- remove unused import ()
- remove unused variables ()
- remove unused variables ()
- reorder imports ()
- resolve unused argument warning ()
- none