From 7e9c5b014c0c91fa34264b3105b8d3f7e4ee72b6 Mon Sep 17 00:00:00 2001 From: vyfor Date: Thu, 2 Jan 2025 22:31:38 +0500 Subject: [PATCH 1/2] chore: update semantic release --- .github/workflows/release.yml | 31 +++++++++++++++++++++---------- .releaserc.js | 12 +++--------- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ce859ff4..14bc2978 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,7 +22,8 @@ jobs: build: name: Build ${{ matrix.target }} runs-on: ${{ matrix.os }} - if: needs.get-next-version.outputs.new-release-published == 'true' + if: false + # if: needs.get-next-version.outputs.new-release-published == 'true' needs: - get-next-version strategy: @@ -112,18 +113,13 @@ jobs: release: runs-on: ubuntu-latest if: needs.get-next-version.outputs.new-release-published == 'true' - needs: [get-next-version, build] + # needs: [get-next-version, build] + needs: [get-next-version] steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - - - name: Download artifacts - uses: actions/download-artifact@v3 - with: - name: binaries - path: dist - name: Invoke semantic-release env: @@ -146,11 +142,26 @@ jobs: fetch-depth: 0 ref: client-server + - name: Set LuaRocks version + id: set_version + run: | + VERSION="${{ needs.get-next-version.outputs.new-release-version }}" + if [[ $VERSION == *"-beta"* ]]; then + # Convert 2.0.0-beta.1 to 2.0.0-beta-1 + BASE_VERSION=$(echo $VERSION | cut -d'-' -f1) + BETA_NUM=$(echo $VERSION | grep -oP '(?<=beta\.)\d+') + echo "version=${BASE_VERSION}-beta" >> $GITHUB_OUTPUT + echo "rockspec_revision=$BETA_NUM" >> $GITHUB_OUTPUT + else + echo "version=$VERSION" >> $GITHUB_OUTPUT + echo "rockspec_revision=1" >> $GITHUB_OUTPUT + fi + - uses: nvim-neorocks/luarocks-tag-release@v7 with: - # version: ${{ needs.get-next-version.outputs.new-release-version }} copy_directories: "plugin" - version: "scm" + version: ${{ steps.set_version.outputs.version }} + specrev: ${{ steps.set_version.outputs.rockspec_revision }} detailed_description: | Meet the future of rich presence with Cord, the most extensible Discord Rich Presence plugin for Neovim, powered by Rust. Cord offers a wide range of customization options allowing you to create custom and dynamic experiences that adapt to your needs. diff --git a/.releaserc.js b/.releaserc.js index 624f011b..8e58c35b 100644 --- a/.releaserc.js +++ b/.releaserc.js @@ -13,11 +13,9 @@ module.exports = { [ "@semantic-release/release-notes-generator", { - "preset": "conventionalcommits", + "preset": "angular", "writerOpts": { "headerPartial": "# {{#with context}}{{#if isServerUpdate}}⚙️ {{/if}}{{/with}}[{{currentTag}}]{{#if title}} {{title}}{{/if}}\n\n{{#if date}}_{{date}}_{{/if}}", - "commitPartial": "* {{subject}} ([{{hash}}]({{#if @root.repository}}{{@root.repository}}/commit/{{hash}}{{else}}{{@root.repoUrl}}/commit/{{hash}}{{/if}}))\n", - "mainTemplate": "{{> header}}\n\n{{#each commitGroups}}\n\n{{#if title}}\n### {{title}}\n\n{{/if}}{{#each commits}}{{> commit}}{{/each}}\n{{/each}}\n\n{{> footer}}", "transform": function (commit, context) { if (!context.context) context.context = {}; @@ -25,6 +23,7 @@ module.exports = { context.context.isServerUpdate = true; } + console.log(commit); const shortHash = commit.hash.substring(0, 7); return { @@ -42,12 +41,7 @@ module.exports = { } ], "@semantic-release/changelog", - [ - "@semantic-release/github", - { - "assets": "dist/*" - } - ], + "@semantic-release/github", [ "@semantic-release/git", { From f3f503f2e426d6cd32539d993f1e75be9bd46456 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 2 Jan 2025 17:59:17 +0000 Subject: [PATCH 2/2] chore(release): 2.0.0-beta.1 [skip ci] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # ⚙️ [v2.0.0-beta.1] _2025-01-02_ * feat!: update semantic release's ci ([](https://github.com/vyfor/cord.nvim/commit/573814d)) * fix!: bugfixes related to opts handling, workspace detection callback, button validation as well as slight changes in configuration ([](https://github.com/vyfor/cord.nvim/commit/277b5b0)) * merge #147 ([](https://github.com/vyfor/cord.nvim/commit/9423cf3)), closes [#147](https://github.com/vyfor/cord.nvim/issues/147) * merge #152 ([](https://github.com/vyfor/cord.nvim/commit/2b0fc96)), closes [#152](https://github.com/vyfor/cord.nvim/issues/152) * merge #155 ([](https://github.com/vyfor/cord.nvim/commit/a490466)), closes [#155](https://github.com/vyfor/cord.nvim/issues/155) * Merge branch 'client-server' of https://github.com/vyfor/cord.nvim into client-server ([](https://github.com/vyfor/cord.nvim/commit/f253296)) * Merge branch 'client-server' of https://github.com/vyfor/cord.nvim into client-server ([](https://github.com/vyfor/cord.nvim/commit/ccdd749)) * refactor!: rename `git_url` -> `repo_url` ([](https://github.com/vyfor/cord.nvim/commit/5d8faf2)) ### build * bump project version ([](https://github.com/vyfor/cord.nvim/commit/e4f9b71)) * bump project version ([](https://github.com/vyfor/cord.nvim/commit/a6a33eb)) * bump project version ([](https://github.com/vyfor/cord.nvim/commit/d56244a)) * bump project version ([](https://github.com/vyfor/cord.nvim/commit/d1853f4)) * bump project version ([](https://github.com/vyfor/cord.nvim/commit/6196014)) * bump project version ([](https://github.com/vyfor/cord.nvim/commit/f43c94d)) * bump project version ([](https://github.com/vyfor/cord.nvim/commit/9898651)) * enable incremental compilation ([](https://github.com/vyfor/cord.nvim/commit/7b6bb00)) * prepare for publishing ([](https://github.com/vyfor/cord.nvim/commit/9bf0821)) * set project version to `2.0.0-beta.1` ([](https://github.com/vyfor/cord.nvim/commit/52ae36f)) * specify msrv ([](https://github.com/vyfor/cord.nvim/commit/abaa56e)) ### chore * add `rustfmt.toml` ([](https://github.com/vyfor/cord.nvim/commit/c53d928)) * add derives and reformat code ([](https://github.com/vyfor/cord.nvim/commit/3d5096c)) * add relevant `mod`s ([](https://github.com/vyfor/cord.nvim/commit/c51352c)) * **assets:** delete the assets directory ([](https://github.com/vyfor/cord.nvim/commit/97ca959)) * bump assets version ([](https://github.com/vyfor/cord.nvim/commit/14ff704)) * bump assets version ([](https://github.com/vyfor/cord.nvim/commit/3e5016b)) * bump assets version ([](https://github.com/vyfor/cord.nvim/commit/d573d6e)) * bump assets version ([](https://github.com/vyfor/cord.nvim/commit/155638d)) * bump assets version ([](https://github.com/vyfor/cord.nvim/commit/3092bbc)) * change semantic release config ([](https://github.com/vyfor/cord.nvim/commit/705f0ac)) * code cleanup ([](https://github.com/vyfor/cord.nvim/commit/b139bfa)) * delete redundant file `status.rs` ([](https://github.com/vyfor/cord.nvim/commit/1b133d1)) * **event:** remove redundant implementations ([](https://github.com/vyfor/cord.nvim/commit/800991f)) * fix clippy warnings ([](https://github.com/vyfor/cord.nvim/commit/6ed0a5d)) * fix typo ([](https://github.com/vyfor/cord.nvim/commit/935dce3)) * fix warnings ([](https://github.com/vyfor/cord.nvim/commit/f7c9e20)) * fix warnings ([](https://github.com/vyfor/cord.nvim/commit/d27ab6a)) * ignore clippy warning ([](https://github.com/vyfor/cord.nvim/commit/16fa5b5)) * **lua:** fix warnings ([](https://github.com/vyfor/cord.nvim/commit/8ef3177)) * **release:** 1.0.0-beta.1 [skip ci] ([](https://github.com/vyfor/cord.nvim/commit/f166cfc)), closes [#53](https://github.com/vyfor/cord.nvim/issues/53) [#80](https://github.com/vyfor/cord.nvim/issues/80) * **release:** 2.0.0-beta.1 [skip ci] ([](https://github.com/vyfor/cord.nvim/commit/fb719c6)), closes [#147](https://github.com/vyfor/cord.nvim/issues/147) [#152](https://github.com/vyfor/cord.nvim/issues/152) [#155](https://github.com/vyfor/cord.nvim/issues/155) [#53](https://github.com/vyfor/cord.nvim/issues/53) [#80](https://github.com/vyfor/cord.nvim/issues/80) * **release:** 2.0.0-beta.1 [skip ci] ([](https://github.com/vyfor/cord.nvim/commit/1c39245)) * **release:** 2.0.0-beta.2 [skip ci] ([](https://github.com/vyfor/cord.nvim/commit/371b6eb)) * remove changelog ([](https://github.com/vyfor/cord.nvim/commit/c05af76)) * remove changelog ([](https://github.com/vyfor/cord.nvim/commit/ca109e5)) * remove debug statement ([](https://github.com/vyfor/cord.nvim/commit/67d9770)) * remove redundant code ([](https://github.com/vyfor/cord.nvim/commit/baa8703)) * remove redundant file ([](https://github.com/vyfor/cord.nvim/commit/755ce40)) * remove unnecessary explicit lifetimes ([](https://github.com/vyfor/cord.nvim/commit/1088976)) * remove unnecessary statement ([](https://github.com/vyfor/cord.nvim/commit/c12ad54)) * remove unused imports ([](https://github.com/vyfor/cord.nvim/commit/0b1d6b9)) * remove unused variable ([](https://github.com/vyfor/cord.nvim/commit/fef472f)) * resolve merge conflicts ([](https://github.com/vyfor/cord.nvim/commit/4cd628c)) * set previous release in `.releaserc.json` ([](https://github.com/vyfor/cord.nvim/commit/f398c02)) * temporarily comment out code ([](https://github.com/vyfor/cord.nvim/commit/e2e2fd3)) * update `.gitignore` ([](https://github.com/vyfor/cord.nvim/commit/bb07214)) * update `.luacheckrc` ([](https://github.com/vyfor/cord.nvim/commit/f59f170)) * update `.luacheckrc` ([](https://github.com/vyfor/cord.nvim/commit/df2f200)) * update `.luacheckrc` ([](https://github.com/vyfor/cord.nvim/commit/6ce30ee)) * update `.releaserc.json` ([](https://github.com/vyfor/cord.nvim/commit/9744462)) * update `util/mod.rs` ([](https://github.com/vyfor/cord.nvim/commit/5ba79f4)) * update releaserc ([](https://github.com/vyfor/cord.nvim/commit/5fbdd5d)) * update semantic release ([](https://github.com/vyfor/cord.nvim/commit/7e9c5b0)) * update semantic release ([](https://github.com/vyfor/cord.nvim/commit/8149653)) ### ci * add freebsd target ([](https://github.com/vyfor/cord.nvim/commit/20d27e1)) * create release.yml ([](https://github.com/vyfor/cord.nvim/commit/1d725d1)) * integrate semantic release ([](https://github.com/vyfor/cord.nvim/commit/66ca7cd)) * prepare for publishing to luarocks ([](https://github.com/vyfor/cord.nvim/commit/ac35d97)) * update `release.yml` ([](https://github.com/vyfor/cord.nvim/commit/30c3177)) * update `release.yml` ([](https://github.com/vyfor/cord.nvim/commit/9984818)) * update release workflow ([](https://github.com/vyfor/cord.nvim/commit/5367491)) * update release workflow ([](https://github.com/vyfor/cord.nvim/commit/f9ddd9f)) * update release workflow ([](https://github.com/vyfor/cord.nvim/commit/30e98f6)) * update release.yml ([](https://github.com/vyfor/cord.nvim/commit/a60ac04)) * update semantic release ([](https://github.com/vyfor/cord.nvim/commit/638dadf)) ### docs * add configuration examples ([](https://github.com/vyfor/cord.nvim/commit/a15b917)) * **configration:** add missing backticks ([](https://github.com/vyfor/cord.nvim/commit/7958f89)) * **configuration:** add default config values ([](https://github.com/vyfor/cord.nvim/commit/1aff02e)) * **configuration:** center activity options ([](https://github.com/vyfor/cord.nvim/commit/de33741)) * create a configuration guide ([](https://github.com/vyfor/cord.nvim/commit/e51af26)) * create a migration guide ([](https://github.com/vyfor/cord.nvim/commit/debee75)) * document string templating ([](https://github.com/vyfor/cord.nvim/commit/0bfc19d)) * **lua:** document exposed interfaces ([](https://github.com/vyfor/cord.nvim/commit/7c23fe2)) * **migration:** fix text highlighting ([](https://github.com/vyfor/cord.nvim/commit/965ee86)) * prefer `:Cord update` over `:Cord fetch` ([](https://github.com/vyfor/cord.nvim/commit/7774af4)) * **readme:** add badge icons ([](https://github.com/vyfor/cord.nvim/commit/63c5b08)) * **readme:** add cord's logo ([](https://github.com/vyfor/cord.nvim/commit/6bd56b5)) * **readme:** add installation step for `rocks.nvim` ([](https://github.com/vyfor/cord.nvim/commit/3f1dba6)) * **readme:** include a link for cord's brand new discord server ([](https://github.com/vyfor/cord.nvim/commit/ce8ce56)) * **readme:** rewrite README ([](https://github.com/vyfor/cord.nvim/commit/24d75e0)) * **readme:** update README ([](https://github.com/vyfor/cord.nvim/commit/89ccba3)) * **readme:** update README ([](https://github.com/vyfor/cord.nvim/commit/29f5f74)) * **readme:** update README ([](https://github.com/vyfor/cord.nvim/commit/12b71d1)) * **readme:** update README ([](https://github.com/vyfor/cord.nvim/commit/95f8167)) * **rust:** document crucial parts of the codebase ([](https://github.com/vyfor/cord.nvim/commit/7f217a7)) * **templates:** remove the icon request issue template ([](https://github.com/vyfor/cord.nvim/commit/2578920)) * update configuration guide ([](https://github.com/vyfor/cord.nvim/commit/62b0764)) * update configuration guide ([](https://github.com/vyfor/cord.nvim/commit/5eca57b)) * update configuration guide ([](https://github.com/vyfor/cord.nvim/commit/cf031ff)) * update documentation ([](https://github.com/vyfor/cord.nvim/commit/243898a)) * update examples ([](https://github.com/vyfor/cord.nvim/commit/a1699d1)) * update examples ([](https://github.com/vyfor/cord.nvim/commit/8abe529)) * update examples ([](https://github.com/vyfor/cord.nvim/commit/20e02e3)) * update migration guide ([](https://github.com/vyfor/cord.nvim/commit/01d1d60)) * update migration guide ([](https://github.com/vyfor/cord.nvim/commit/d527f71)) * update migration guide ([](https://github.com/vyfor/cord.nvim/commit/c4c6693)) * update readme ([](https://github.com/vyfor/cord.nvim/commit/653c13d)) * update readme ([](https://github.com/vyfor/cord.nvim/commit/e4c5621)) * update readme ([](https://github.com/vyfor/cord.nvim/commit/d13991b)) * update readme ([](https://github.com/vyfor/cord.nvim/commit/ccdc4dc)) * update readme ([](https://github.com/vyfor/cord.nvim/commit/69d998b)) * update the configuration guide ([](https://github.com/vyfor/cord.nvim/commit/cf23961)) * update the configuration guide ([](https://github.com/vyfor/cord.nvim/commit/78b7ca6)) * update the configuration guide ([](https://github.com/vyfor/cord.nvim/commit/9ef07b7)) * update the configuration guide ([](https://github.com/vyfor/cord.nvim/commit/480d74c)) * update the configuration guide ([](https://github.com/vyfor/cord.nvim/commit/fb6326f)) * update the configuration guide ([](https://github.com/vyfor/cord.nvim/commit/40ec350)) * update the configuration guide ([](https://github.com/vyfor/cord.nvim/commit/16b1ec3)) * update the configuration guide ([](https://github.com/vyfor/cord.nvim/commit/8038675)) * update the examples ([](https://github.com/vyfor/cord.nvim/commit/cf728c3)) * update the examples ([](https://github.com/vyfor/cord.nvim/commit/4e67d61)) * update the examples ([](https://github.com/vyfor/cord.nvim/commit/8209e21)) * update the migration guide ([](https://github.com/vyfor/cord.nvim/commit/006f3a4)) * update the migration guide ([](https://github.com/vyfor/cord.nvim/commit/d9ccf2e)) * update the migration guide ([](https://github.com/vyfor/cord.nvim/commit/048f1d2)) * update the migration guide ([](https://github.com/vyfor/cord.nvim/commit/7ba64be)) * update the migration guide ([](https://github.com/vyfor/cord.nvim/commit/c5353fe)) * update the migration guide ([](https://github.com/vyfor/cord.nvim/commit/7030bad)) * update the migration guide ([](https://github.com/vyfor/cord.nvim/commit/8013f9b)) ### feat * **activity:** add additional fields ([](https://github.com/vyfor/cord.nvim/commit/ffec9cd)) * add `:Cord restart` ([](https://github.com/vyfor/cord.nvim/commit/ff7b7cf)) * add `json:Error` & `msgpack:Error` ([](https://github.com/vyfor/cord.nvim/commit/0f33af2)) * add `new` function to `Packet` struct ([](https://github.com/vyfor/cord.nvim/commit/fd4b201)) * add `notes` field ([](https://github.com/vyfor/cord.nvim/commit/304d171)) * add `TryFrom` impl to `AssetType` ([](https://github.com/vyfor/cord.nvim/commit/ca4d5d8)) * add `vim.g.cord_is_updating` to avoid multiple simultaneous updates ([](https://github.com/vyfor/cord.nvim/commit/166be04)) * add a logger struct ([](https://github.com/vyfor/cord.nvim/commit/d3f4fa0)) * add a macro that simplifies field deserialization ([](https://github.com/vyfor/cord.nvim/commit/ada22e6)) * add cleanup logic ([](https://github.com/vyfor/cord.nvim/commit/df96059)) * add explicit rich presence clearing; can be completely hidden with `force = true` ([](https://github.com/vyfor/cord.nvim/commit/8e99c03)) * add message deserialization logic ([](https://github.com/vyfor/cord.nvim/commit/3f7fea2)) * add message handler struct ([](https://github.com/vyfor/cord.nvim/commit/e93d9c8)) * add program entry point ([](https://github.com/vyfor/cord.nvim/commit/f0e8727)) * add proper serialization for `LogEvent` ([](https://github.com/vyfor/cord.nvim/commit/340c504)) * add server-scoped `InitializeEvent` ([](https://github.com/vyfor/cord.nvim/commit/5097ceb)) * add the `Cord` struct which is used as the entry point ([](https://github.com/vyfor/cord.nvim/commit/c2f67c0)) * add unix implementation of the IPC server ([](https://github.com/vyfor/cord.nvim/commit/cdc4245)) * add usercommands ([](https://github.com/vyfor/cord.nvim/commit/8582099)) * add utility functions for building and fetching the executable ([](https://github.com/vyfor/cord.nvim/commit/b77455b)) * add windows implementation of the IPC server ([](https://github.com/vyfor/cord.nvim/commit/04192c5)) * allow parsing `client_id` from client name ([](https://github.com/vyfor/cord.nvim/commit/3e7f1b3)) * allow the user to skip updates ([](https://github.com/vyfor/cord.nvim/commit/381542d)) * allow users to set a custom activity ([](https://github.com/vyfor/cord.nvim/commit/e9d388c)) * always fetch the executable if it's not present ([](https://github.com/vyfor/cord.nvim/commit/7a18740)) * always perform the file exists check first ([](https://github.com/vyfor/cord.nvim/commit/d94b5b8)) * **async:** implement Future wrappers for commonly used uv functions ([](https://github.com/vyfor/cord.nvim/commit/62b133c)) * **async:** implement the concept of futures and handle async operations via coroutines ([](https://github.com/vyfor/cord.nvim/commit/8638d30)) * capture build errors ([](https://github.com/vyfor/cord.nvim/commit/64b1103)) * **cli:** add `--version` argument ([](https://github.com/vyfor/cord.nvim/commit/1799242)) * **cli:** implement argument parsing ([](https://github.com/vyfor/cord.nvim/commit/b3051db)) * **config:** add `advanced.server.build` ([](https://github.com/vyfor/cord.nvim/commit/bf27f76)) * **config:** add `advanced.variables_in_functions` ([](https://github.com/vyfor/cord.nvim/commit/6aae137)) * **config:** add `idle.unidle_on_focus` ([](https://github.com/vyfor/cord.nvim/commit/f4e8c93)) * **config:** add `on_activity` hook ([](https://github.com/vyfor/cord.nvim/commit/2695288)) * **config:** add `on_disconnect` hook ([](https://github.com/vyfor/cord.nvim/commit/299882d)) * **config:** add support for string templates using the new `variables` option ([](https://github.com/vyfor/cord.nvim/commit/d5ec225)) * **config:** allow users to choose between different icon styles ([](https://github.com/vyfor/cord.nvim/commit/3fef850)) * **config:** custom assets' options now support function types ([](https://github.com/vyfor/cord.nvim/commit/2a5122c)) * **config:** introduce `idle.smart_idle` option which lets general activities take precedence over the idle ones ([](https://github.com/vyfor/cord.nvim/commit/99e9e93)) * create `Config` struct to store internal configuration and refine timeout logic ([](https://github.com/vyfor/cord.nvim/commit/d5c179c)) * create a separate module for icon-related stuff ([](https://github.com/vyfor/cord.nvim/commit/8b83610)) * display the most recent activity in case a client disconnects; clear the status if none are connected ([](https://github.com/vyfor/cord.nvim/commit/eedc94a)) * **events:** add client event implementations ([](https://github.com/vyfor/cord.nvim/commit/fcda103)) * **events:** add server events ([](https://github.com/vyfor/cord.nvim/commit/52061da)) * **events:** handle client connection ([](https://github.com/vyfor/cord.nvim/commit/2e7d5d4)) * **events:** notify the client about errors on their side ([](https://github.com/vyfor/cord.nvim/commit/db9a2ef)) * handle automatically moving the server executable to nvim's data directory ([](https://github.com/vyfor/cord.nvim/commit/ae0fb6f)) * handle the activity type ([](https://github.com/vyfor/cord.nvim/commit/0bfa07c)) * **icon:** expose locals ([](https://github.com/vyfor/cord.nvim/commit/15e83b3)) * implement `Default` for `Overlapped` struct ([](https://github.com/vyfor/cord.nvim/commit/83d9c4e)) * implement `OnEvent` trait for all events ([](https://github.com/vyfor/cord.nvim/commit/1675342)) * implement a wrapper around `curl` ([](https://github.com/vyfor/cord.nvim/commit/4bb65b4)) * implement caching for workspace and repository entries ([](https://github.com/vyfor/cord.nvim/commit/1dc2def)) * implement custom error type ([](https://github.com/vyfor/cord.nvim/commit/ff80157)) * implement iterations - a maximum amount of time the server can idle without active connections ([](https://github.com/vyfor/cord.nvim/commit/b6e8955)) * implement reconnection mechanism for Discord ([](https://github.com/vyfor/cord.nvim/commit/90ba49a)) * implement sessions and session manager ([](https://github.com/vyfor/cord.nvim/commit/312b924)) * improve cleanup logic ([](https://github.com/vyfor/cord.nvim/commit/1b9be0c)) * introduce `PresenceContext` struct which will be used to build the rich presence ([](https://github.com/vyfor/cord.nvim/commit/59ec145)) * introduce message communication system ([](https://github.com/vyfor/cord.nvim/commit/19ab5c6)) * **ipc:** continuously read data from Discord pipe to detect sudden disconnects ([](https://github.com/vyfor/cord.nvim/commit/807291f)) * **ipc:** use full pipe path ([](https://github.com/vyfor/cord.nvim/commit/55ca5ab)) * **json:** add robust error handling ([](https://github.com/vyfor/cord.nvim/commit/a6697da)) * **lockfile:** implement file locking mechanism ([](https://github.com/vyfor/cord.nvim/commit/dd8fe2c)) * **logger:** handle cases in lua callbacks ([](https://github.com/vyfor/cord.nvim/commit/c3ccb35)) * **lua:** automatically start the server ([](https://github.com/vyfor/cord.nvim/commit/0364cfb)) * **lua:** call `on_workspace_change` hook if a workspace change is detected ([](https://github.com/vyfor/cord.nvim/commit/33abe5a)) * **lua:** initial implementation of the Lua codebase ([](https://github.com/vyfor/cord.nvim/commit/6f72e92)) * **lua:** switch to event-driven architecture ([](https://github.com/vyfor/cord.nvim/commit/e65f015)) * make server error messages clean ([](https://github.com/vyfor/cord.nvim/commit/c097bd8)) * **manager:** expose more functions for interacting with rich presence and its manager ([](https://github.com/vyfor/cord.nvim/commit/c34dea1)) * **mappings:** add `cuda` filetype ([](https://github.com/vyfor/cord.nvim/commit/9fdd31e)) * **mappings:** add icon for odin ([](https://github.com/vyfor/cord.nvim/commit/0df0a45)) * **mappings:** add missing filetypes ([](https://github.com/vyfor/cord.nvim/commit/dbfb1ad)) * **mappings:** add support for dashboard plugins ([](https://github.com/vyfor/cord.nvim/commit/cd04a8c)) * **mappings:** add support for docs ([](https://github.com/vyfor/cord.nvim/commit/cfe563f)) * modularize the event system and add helper macros for creating messages ([](https://github.com/vyfor/cord.nvim/commit/f302fa1)) * **msgpack:** add msgpack deserialization ([](https://github.com/vyfor/cord.nvim/commit/eb2e10d)) * **msgpack:** add msgpack serialization ([](https://github.com/vyfor/cord.nvim/commit/1f7c2a6)) * **msgpack:** add support for STR8 header ([](https://github.com/vyfor/cord.nvim/commit/cd634ea)) * **msgpack:** allow serialization of Map values ([](https://github.com/vyfor/cord.nvim/commit/9dc26b4)) * **msgpack:** support owned strings ([](https://github.com/vyfor/cord.nvim/commit/0679c31)) * notify client when the workspace is found in the blacklist ([](https://github.com/vyfor/cord.nvim/commit/ae660bd)) * notify the client when server is ready to accept connections ([](https://github.com/vyfor/cord.nvim/commit/b27d763)) * notify the clients about the server shutdown ([](https://github.com/vyfor/cord.nvim/commit/e987ba0)) * prepend the messages with a length header in case they get merged ([](https://github.com/vyfor/cord.nvim/commit/264fde3)) * prioritize general activities over the idle activity ([](https://github.com/vyfor/cord.nvim/commit/b4a837c)) * **producer:** allow sending a shutdown request ([](https://github.com/vyfor/cord.nvim/commit/354e2a6)) * provide clear error message for when the connection to Discord IPC fails ([](https://github.com/vyfor/cord.nvim/commit/4828894)) * provide clearer server error messages ([](https://github.com/vyfor/cord.nvim/commit/34bfe12)) * provide more data when logging the error ([](https://github.com/vyfor/cord.nvim/commit/22e9ed8)) * **server:** add local `ShutdownEvent` ([](https://github.com/vyfor/cord.nvim/commit/3f55760)) * **server:** improve error handling & error messages ([](https://github.com/vyfor/cord.nvim/commit/9aea257)) * **server:** notify the client whether the provided client id is incorrect ([](https://github.com/vyfor/cord.nvim/commit/edc9f5a)) * set style-specific default idle icons ([](https://github.com/vyfor/cord.nvim/commit/c17ad89)) * specify MSRV ([](https://github.com/vyfor/cord.nvim/commit/1b520ca)) * specify plugin version ([](https://github.com/vyfor/cord.nvim/commit/cd8142f)) * stop any updates when connection is lost ([](https://github.com/vyfor/cord.nvim/commit/dd1dd43)) * store os name and architecture ([](https://github.com/vyfor/cord.nvim/commit/3f663db)) * switch to next available activity on `clear_activity` event ([](https://github.com/vyfor/cord.nvim/commit/f05f126)) * tie each client to a session ([](https://github.com/vyfor/cord.nvim/commit/edd2141)) * trim stderr messages ([](https://github.com/vyfor/cord.nvim/commit/4ec5de9)) * update sessions' last updated time ([](https://github.com/vyfor/cord.nvim/commit/9968d94)) * use newly added mapping types ([](https://github.com/vyfor/cord.nvim/commit/015f7ed)) * **usercmds:** add `:Cord status` ([](https://github.com/vyfor/cord.nvim/commit/47c3d6a)) * **usercmds:** add `:Cord update` ([](https://github.com/vyfor/cord.nvim/commit/eba53d9)) * **util:** add additional file-related utility functions ([](https://github.com/vyfor/cord.nvim/commit/36d5031)) * validate and set `editor_image` upon initialization ([](https://github.com/vyfor/cord.nvim/commit/d56416a)) ### fix * `IPC:is_closing` should return true if the pipe does not exist ([](https://github.com/vyfor/cord.nvim/commit/29170fd)) * `should_skip_update` should be checked right before the update ([](https://github.com/vyfor/cord.nvim/commit/93636dd)) * actually update the editor image ([](https://github.com/vyfor/cord.nvim/commit/b1e5deb)) * allow sending same activity updates ([](https://github.com/vyfor/cord.nvim/commit/1883ba4)) * an attempt to fix intermittent ui freezes ([](https://github.com/vyfor/cord.nvim/commit/e53bf20)) * **async:** avoid including debug info on regular errors and fix error propagation ([](https://github.com/vyfor/cord.nvim/commit/618ce39)) * automatically retry connection on `ECONNREFUSED` & `ETIMEDOUT` ([](https://github.com/vyfor/cord.nvim/commit/55452b3)) * avoid joining the handles ([](https://github.com/vyfor/cord.nvim/commit/3d478f1)) * change `cfg-if` attribute ([](https://github.com/vyfor/cord.nvim/commit/76ecb5c)) * close uv handles before exiting ([](https://github.com/vyfor/cord.nvim/commit/1bd6bb9)) * **config:** correctly handle custom client ids ([](https://github.com/vyfor/cord.nvim/commit/a4719a2)) * **config:** correctly replace config values ([](https://github.com/vyfor/cord.nvim/commit/17dd6f3)) * **config:** do not override the given editor icon ([](https://github.com/vyfor/cord.nvim/commit/25d31ba)) * correct the logic responsible for falling back to defaults ([](https://github.com/vyfor/cord.nvim/commit/b784a74)) * correctly handle curl's stdout ([](https://github.com/vyfor/cord.nvim/commit/5b44dff)) * correctly serialize activity timestamps ([](https://github.com/vyfor/cord.nvim/commit/6362a2c)) * correctly serialize rich presence packet ([](https://github.com/vyfor/cord.nvim/commit/3e894ee)) * correctly set `workspace_dir` & `workspace_name` ([](https://github.com/vyfor/cord.nvim/commit/a56a856)) * do not queue activity updates upon losing focus ([](https://github.com/vyfor/cord.nvim/commit/0b8d609)) * fallback to default activity type if not provided ([](https://github.com/vyfor/cord.nvim/commit/bebea1f)) * idle timeout check ([](https://github.com/vyfor/cord.nvim/commit/2e3e961)) * implement event queuing for handling events registered after the handler is run ([](https://github.com/vyfor/cord.nvim/commit/46b8de4)) * imports ([](https://github.com/vyfor/cord.nvim/commit/9e8819e)) * include `vim.log.levels.OFF` when parsing the log level ([](https://github.com/vyfor/cord.nvim/commit/cc9ba64)) * **ipc:** cleanup the stale pipe if the server process was forcefully terminated ([](https://github.com/vyfor/cord.nvim/commit/a77e86c)) * **ipc:** handle client disconnection on `ErrorKind::BrokenPipe` ([](https://github.com/vyfor/cord.nvim/commit/a315118)) * **ipc:** properly cleanup on exit ([](https://github.com/vyfor/cord.nvim/commit/0d5c61b)) * let the updater alone handle executable spawning, or we might have two threads attempting to spawn it simultaneously ([](https://github.com/vyfor/cord.nvim/commit/44acc10)) * **log:** correctly write to the client pipe ([](https://github.com/vyfor/cord.nvim/commit/710b83e)) * **mappings:** ensure that the tooltips have a minimum length of 2 ([](https://github.com/vyfor/cord.nvim/commit/e9368fa)) * **mappings:** set plugin managers' default icon to `plugin` ([](https://github.com/vyfor/cord.nvim/commit/a2be431)) * normalize path before workspace lookup ([](https://github.com/vyfor/cord.nvim/commit/c919c94)) * perform a nil check for usercmds interacting with the activity manager ([](https://github.com/vyfor/cord.nvim/commit/8427bed)) * properly handle chunked data ([](https://github.com/vyfor/cord.nvim/commit/0b8c655)) * properly handle server shutdowns ([](https://github.com/vyfor/cord.nvim/commit/281a93b)) * replace method definition with a function definition ([](https://github.com/vyfor/cord.nvim/commit/8d6bcf9)) * resolve autocmds errors ([](https://github.com/vyfor/cord.nvim/commit/02340b1)) * resolve event serialization issues ([](https://github.com/vyfor/cord.nvim/commit/7ec693e)) * resolve idle timeout related issues ([](https://github.com/vyfor/cord.nvim/commit/21d9a50)) * resolve workspace issues; handle missing hooks ([](https://github.com/vyfor/cord.nvim/commit/4cff958)) * return if config validation fails ([](https://github.com/vyfor/cord.nvim/commit/503371d)) * schedule cleanup logic if necessary ([](https://github.com/vyfor/cord.nvim/commit/9aa6578)) * schedule the callbacks to maintain compatibility with Neovim 0.6.0 ([](https://github.com/vyfor/cord.nvim/commit/35428c0)) * **server:** fix logging level comparison ([](https://github.com/vyfor/cord.nvim/commit/86f2a70)) * **server:** use panic-free means to write to stdout ([](https://github.com/vyfor/cord.nvim/commit/23ba754)) * **sessions:** retrieve the correct session based on id instead of always returning the first available ([](https://github.com/vyfor/cord.nvim/commit/6493da4)) * set executable permissions on unix systems ([](https://github.com/vyfor/cord.nvim/commit/541a563)) * **spawn:** use an absolute path for server executable's fallback path ([](https://github.com/vyfor/cord.nvim/commit/0ac391a)) * stop the plugin on server errors ([](https://github.com/vyfor/cord.nvim/commit/20d0a48)) * update `last_activity` only if an actual update occurred ([](https://github.com/vyfor/cord.nvim/commit/1dd0e20)) * update server's status to `ready` on receiving the ready event ([](https://github.com/vyfor/cord.nvim/commit/8e57129)) * use `cord --version` to determine the current version of the executable and whether an update is required ([](https://github.com/vyfor/cord.nvim/commit/5c31319)) * **windows:** properly handle overlapped I/O ([](https://github.com/vyfor/cord.nvim/commit/296e4f4)) * **windows:** use overlapped io for named pipes to avoid deadlocks ([](https://github.com/vyfor/cord.nvim/commit/2f73ce8)) ### perf * avoid unnecessary lookups ([](https://github.com/vyfor/cord.nvim/commit/a4bccf4)) * avoid unnecessary lookups ([](https://github.com/vyfor/cord.nvim/commit/b586eec)) * **fs:** switch to async filesystem ops ([](https://github.com/vyfor/cord.nvim/commit/961ec2c)) * handle logic responsible for broadcasting the ready event more efficiently ([](https://github.com/vyfor/cord.nvim/commit/a5c8ca3)) * **json:** optimize deserialization logic ([](https://github.com/vyfor/cord.nvim/commit/02c233f)) * **json:** optimize serialization logic and generalize the serializer ([](https://github.com/vyfor/cord.nvim/commit/3e7ab98)) * **lua:** lazy load some modules ([](https://github.com/vyfor/cord.nvim/commit/0f1ebaa)) * **lua:** lazily load other modules ([](https://github.com/vyfor/cord.nvim/commit/6313f45)) * **mappings:** significant performance improvements ([](https://github.com/vyfor/cord.nvim/commit/8ea0ad8)) * remove unnecessary atomics ([](https://github.com/vyfor/cord.nvim/commit/85499cf)) ### refactor * **`AssetType`:** rename `Lsp` to `LspManager`, allow parsing from a string slice ([](https://github.com/vyfor/cord.nvim/commit/025092d)) * `Config::buttons` should be optional ([](https://github.com/vyfor/cord.nvim/commit/363fbee)) * `Packet` should not own the `Activity` ([](https://github.com/vyfor/cord.nvim/commit/ca936f8)) * **activity manager:** `pause()` and `resume()` should check `is_paused` ([](https://github.com/vyfor/cord.nvim/commit/d884b1d)) * add more logging ([](https://github.com/vyfor/cord.nvim/commit/2e78f24)) * add new message types, rename `ServerMessage` to `LocalMessage`, resolve lifetime issues ([](https://github.com/vyfor/cord.nvim/commit/9a7d0c6)) * apply clippy suggestions ([](https://github.com/vyfor/cord.nvim/commit/071da49)) * call `on_ready` after initializing the activity manager ([](https://github.com/vyfor/cord.nvim/commit/378ade3)) * change `'Connecting'` log level to `DEBUG` ([](https://github.com/vyfor/cord.nvim/commit/f0749be)) * change `Deserialize::deserialize` to return `crate::Result` ([](https://github.com/vyfor/cord.nvim/commit/28e93f0)) * change `killall -9` -> `pkill -15` ([](https://github.com/vyfor/cord.nvim/commit/f993173)) * change `validate_buttons` function to accept a mutable reference ([](https://github.com/vyfor/cord.nvim/commit/29938ed)) * change error messages ([](https://github.com/vyfor/cord.nvim/commit/694fb96)) * change the return type of `OnEvent::on_event` to `crate::Result<()>` ([](https://github.com/vyfor/cord.nvim/commit/54f69dc)) * **cli:** add a new error type for cli-related errors ([](https://github.com/vyfor/cord.nvim/commit/4962a5f)) * **codebase:** ensure proper asynchronous flow and reorganize codebase ([](https://github.com/vyfor/cord.nvim/commit/9f205ac)) * **config:** change default text values ([](https://github.com/vyfor/cord.nvim/commit/15a8f58)) * **config:** change default values ([](https://github.com/vyfor/cord.nvim/commit/3822787)) * **config:** remove `lsp` ([](https://github.com/vyfor/cord.nvim/commit/178631a)) * **config:** rename `advanced.server.build` to `update` ([](https://github.com/vyfor/cord.nvim/commit/8f723a5)) * **config:** rename `enable` -> `enabled` ([](https://github.com/vyfor/cord.nvim/commit/849f7a9)) * **config:** set `cursor_update_mode` to `'on_hold'` by default ([](https://github.com/vyfor/cord.nvim/commit/6b320e9)) * **config:** set `log_level` to `INFO` by default ([](https://github.com/vyfor/cord.nvim/commit/96e9bab)) * **constants:** change assets url to the new repo; reset assets version ([](https://github.com/vyfor/cord.nvim/commit/a61520e)) * **core:** simplify Rust backend by removing internal details ([](https://github.com/vyfor/cord.nvim/commit/266b824)) * correct require path ([](https://github.com/vyfor/cord.nvim/commit/6f6899a)) * **error:** change `CordError` type definition; add missing error types ([](https://github.com/vyfor/cord.nvim/commit/cf1990d)) * **error:** include error kind when converting the error to string ([](https://github.com/vyfor/cord.nvim/commit/ecfd967)) * **events:** update event implementations ([](https://github.com/vyfor/cord.nvim/commit/baaa8fa)) * **events:** use the client `DisconnectEvent` instead of the local `ClientDisconnectedEvent` ([](https://github.com/vyfor/cord.nvim/commit/6535683)) * fallback to `vim.uv` ([](https://github.com/vyfor/cord.nvim/commit/4d7604d)) * fallback to os-specific executable path ([](https://github.com/vyfor/cord.nvim/commit/19d2ef9)) * fix error message ([](https://github.com/vyfor/cord.nvim/commit/7ae5966)) * force constructor initialization ([](https://github.com/vyfor/cord.nvim/commit/cb81ac9)) * handle shutdowns directly ([](https://github.com/vyfor/cord.nvim/commit/4e9748c)) * handle the process handle ([](https://github.com/vyfor/cord.nvim/commit/edf1a1b)) * have the session store `last_activity` ([](https://github.com/vyfor/cord.nvim/commit/ca34808)) * implicitly return result in main function ([](https://github.com/vyfor/cord.nvim/commit/e9667f2)) * improve the way updates are skipped; expose a function in the manager class ([](https://github.com/vyfor/cord.nvim/commit/7032c0d)) * **ipc:** remove `on_error` calls ([](https://github.com/vyfor/cord.nvim/commit/5f3fcfe)) * **ipc:** remove unnecessary scheduling ([](https://github.com/vyfor/cord.nvim/commit/3271a52)) * **ipc:** use full pipe path ([](https://github.com/vyfor/cord.nvim/commit/8090ddf)) * **json:** rename value structs and move them to their own file ([](https://github.com/vyfor/cord.nvim/commit/542f2f8)) * make `EventContext` mutable ([](https://github.com/vyfor/cord.nvim/commit/53bae42)) * **manager:** force an update upon gaining focus ([](https://github.com/vyfor/cord.nvim/commit/4e5778f)) * **mappings:** provide a constant value for default icons ([](https://github.com/vyfor/cord.nvim/commit/5a93c08)) * minor changes ([](https://github.com/vyfor/cord.nvim/commit/f8b7e0b)) * move `args.rs` to its own module ([](https://github.com/vyfor/cord.nvim/commit/26575ef)) * move `AssetType` to `util` ([](https://github.com/vyfor/cord.nvim/commit/cf9605a)) * move `types.rs` to its own module ([](https://github.com/vyfor/cord.nvim/commit/aa09011)) * move autocmd for cleaning up to `plugin/cord.vim` ([](https://github.com/vyfor/cord.nvim/commit/d57d2fc)) * move Discord IPC logic to a separate module ([](https://github.com/vyfor/cord.nvim/commit/5915844)) * move IPC messages to their own module ([](https://github.com/vyfor/cord.nvim/commit/3a70ea6)) * move usercmds to `cord.vim` ([](https://github.com/vyfor/cord.nvim/commit/ca7bb9d)) * **msgpack:** make `deseralize` accept already deserialized `Value` ([](https://github.com/vyfor/cord.nvim/commit/4051fa2)) * override `opts.filename` if it's empty ([](https://github.com/vyfor/cord.nvim/commit/5e5dee3)) * provide debug error messages ([](https://github.com/vyfor/cord.nvim/commit/64a6489)) * reduce code verbosity by using macros ([](https://github.com/vyfor/cord.nvim/commit/bee4aa0)) * reflect codebase changes ([](https://github.com/vyfor/cord.nvim/commit/4b03eb2)) * remove `constants.VERSION` ([](https://github.com/vyfor/cord.nvim/commit/2d43373)) * remove excessive debug logging ([](https://github.com/vyfor/cord.nvim/commit/414b4b2)) * remove lib.rs ([](https://github.com/vyfor/cord.nvim/commit/e01274e)) * remove redundant functions ([](https://github.com/vyfor/cord.nvim/commit/bc814da)) * remove server-scoped `ShutdownEvent` ([](https://github.com/vyfor/cord.nvim/commit/96f3478)) * remove unnecessary events ([](https://github.com/vyfor/cord.nvim/commit/e4522d6)) * rename `Config` to `PluginConfig` ([](https://github.com/vyfor/cord.nvim/commit/e7d3795)) * rename `ResetTimestampEvent` -> `SetTimestampEvent` ([](https://github.com/vyfor/cord.nvim/commit/f280750)) * rename `rpc` to `activity` ([](https://github.com/vyfor/cord.nvim/commit/09ed1af)) * rename `style` -> `theme` ([](https://github.com/vyfor/cord.nvim/commit/b9a7b7e)) * rename `swap_images` -> `swap_icons` ([](https://github.com/vyfor/cord.nvim/commit/c40b7ca)) * rename `take_str` -> `take_string` ([](https://github.com/vyfor/cord.nvim/commit/c5b0a22)) * rename directory to `presence` ([](https://github.com/vyfor/cord.nvim/commit/71034b2)) * replace `SessionManager::new` with `Default` derive ([](https://github.com/vyfor/cord.nvim/commit/a0587fd)) * rewrite the codebase to use msgpack instead of json ([](https://github.com/vyfor/cord.nvim/commit/f2228cf)) * separate process spawning logic ([](https://github.com/vyfor/cord.nvim/commit/b0d46bd)) * **serialization:** move [de]serializers to their own common module; introduce a common error type ([](https://github.com/vyfor/cord.nvim/commit/92102e6)) * set `opts.skip_update` back to `false` after skipping an activity update ([](https://github.com/vyfor/cord.nvim/commit/fe78f7a)) * set executable directory to `nvim-data/cord/bin` ([](https://github.com/vyfor/cord.nvim/commit/4e69b5b)) * split `PluginConfig` into structs with relevant fields ([](https://github.com/vyfor/cord.nvim/commit/3e10a9a)) * store relevant types and constants in a separate file ([](https://github.com/vyfor/cord.nvim/commit/05eb4f4)) * tweak events ([](https://github.com/vyfor/cord.nvim/commit/9dfa106)) * unconditionally fetch and store the git url ([](https://github.com/vyfor/cord.nvim/commit/a786053)) * update event context to include reference to Cord itself ([](https://github.com/vyfor/cord.nvim/commit/30995c6)) * update log message ([](https://github.com/vyfor/cord.nvim/commit/e2d16d2)) * update serialization logic ([](https://github.com/vyfor/cord.nvim/commit/c17fa3e)) * use `crate::Result` type ([](https://github.com/vyfor/cord.nvim/commit/8cf2bc2)) * use `Packet::empty()` ([](https://github.com/vyfor/cord.nvim/commit/d4ff8fa)) * use Cargo to build the server executable ([](https://github.com/vyfor/cord.nvim/commit/233b18b)) * use os-specific defaults ([](https://github.com/vyfor/cord.nvim/commit/c5b9e03)) * **usercmds:** do not include stack traceback when logging on unknown command ([](https://github.com/vyfor/cord.nvim/commit/46164b4)) * wrap `editor_image` in Option type ([](https://github.com/vyfor/cord.nvim/commit/a59eb25)) ### style * correct error message ([](https://github.com/vyfor/cord.nvim/commit/2914451)) * fix warning ([](https://github.com/vyfor/cord.nvim/commit/d55a6b1)) * fix warnings ([](https://github.com/vyfor/cord.nvim/commit/149cb9f)) * fix warnings ([](https://github.com/vyfor/cord.nvim/commit/b5f7cee)) * fix warnings ([](https://github.com/vyfor/cord.nvim/commit/791a83e)) * fix warnings ([](https://github.com/vyfor/cord.nvim/commit/b22e442)) * more logging ([](https://github.com/vyfor/cord.nvim/commit/a776a41)) * move autocmds to the bottom of the file ([](https://github.com/vyfor/cord.nvim/commit/c42f88f)) * reformat code ([](https://github.com/vyfor/cord.nvim/commit/7af31a8)) * reformat codebase ([](https://github.com/vyfor/cord.nvim/commit/8e88a20)) * remove unused import ([](https://github.com/vyfor/cord.nvim/commit/ed3f130)) * remove unused variables ([](https://github.com/vyfor/cord.nvim/commit/d6f7a40)) * remove unused variables ([](https://github.com/vyfor/cord.nvim/commit/dedec5f)) * reorder imports ([](https://github.com/vyfor/cord.nvim/commit/5658ca8)) * resolve unused argument warning ([](https://github.com/vyfor/cord.nvim/commit/85781a2)) ### BREAKING CHANGE * none --- CHANGELOG.md | 453 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 453 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 22de022b..037d2a88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,459 @@ _2025-01-02_ +* feat!: update semantic release's ci ([](https://github.com/vyfor/cord.nvim/commit/573814d)) +* fix!: bugfixes related to opts handling, workspace detection callback, button validation as well as slight changes in configuration ([](https://github.com/vyfor/cord.nvim/commit/277b5b0)) +* merge #147 ([](https://github.com/vyfor/cord.nvim/commit/9423cf3)), closes [#147](https://github.com/vyfor/cord.nvim/issues/147) +* merge #152 ([](https://github.com/vyfor/cord.nvim/commit/2b0fc96)), closes [#152](https://github.com/vyfor/cord.nvim/issues/152) +* merge #155 ([](https://github.com/vyfor/cord.nvim/commit/a490466)), closes [#155](https://github.com/vyfor/cord.nvim/issues/155) +* Merge branch 'client-server' of https://github.com/vyfor/cord.nvim into client-server ([](https://github.com/vyfor/cord.nvim/commit/f253296)) +* Merge branch 'client-server' of https://github.com/vyfor/cord.nvim into client-server ([](https://github.com/vyfor/cord.nvim/commit/ccdd749)) +* refactor!: rename `git_url` -> `repo_url` ([](https://github.com/vyfor/cord.nvim/commit/5d8faf2)) + + +### build + +* bump project version ([](https://github.com/vyfor/cord.nvim/commit/e4f9b71)) +* bump project version ([](https://github.com/vyfor/cord.nvim/commit/a6a33eb)) +* bump project version ([](https://github.com/vyfor/cord.nvim/commit/d56244a)) +* bump project version ([](https://github.com/vyfor/cord.nvim/commit/d1853f4)) +* bump project version ([](https://github.com/vyfor/cord.nvim/commit/6196014)) +* bump project version ([](https://github.com/vyfor/cord.nvim/commit/f43c94d)) +* bump project version ([](https://github.com/vyfor/cord.nvim/commit/9898651)) +* enable incremental compilation ([](https://github.com/vyfor/cord.nvim/commit/7b6bb00)) +* prepare for publishing ([](https://github.com/vyfor/cord.nvim/commit/9bf0821)) +* set project version to `2.0.0-beta.1` ([](https://github.com/vyfor/cord.nvim/commit/52ae36f)) +* specify msrv ([](https://github.com/vyfor/cord.nvim/commit/abaa56e)) + + +### chore + +* add `rustfmt.toml` ([](https://github.com/vyfor/cord.nvim/commit/c53d928)) +* add derives and reformat code ([](https://github.com/vyfor/cord.nvim/commit/3d5096c)) +* add relevant `mod`s ([](https://github.com/vyfor/cord.nvim/commit/c51352c)) +* **assets:** delete the assets directory ([](https://github.com/vyfor/cord.nvim/commit/97ca959)) +* bump assets version ([](https://github.com/vyfor/cord.nvim/commit/14ff704)) +* bump assets version ([](https://github.com/vyfor/cord.nvim/commit/3e5016b)) +* bump assets version ([](https://github.com/vyfor/cord.nvim/commit/d573d6e)) +* bump assets version ([](https://github.com/vyfor/cord.nvim/commit/155638d)) +* bump assets version ([](https://github.com/vyfor/cord.nvim/commit/3092bbc)) +* change semantic release config ([](https://github.com/vyfor/cord.nvim/commit/705f0ac)) +* code cleanup ([](https://github.com/vyfor/cord.nvim/commit/b139bfa)) +* delete redundant file `status.rs` ([](https://github.com/vyfor/cord.nvim/commit/1b133d1)) +* **event:** remove redundant implementations ([](https://github.com/vyfor/cord.nvim/commit/800991f)) +* fix clippy warnings ([](https://github.com/vyfor/cord.nvim/commit/6ed0a5d)) +* fix typo ([](https://github.com/vyfor/cord.nvim/commit/935dce3)) +* fix warnings ([](https://github.com/vyfor/cord.nvim/commit/f7c9e20)) +* fix warnings ([](https://github.com/vyfor/cord.nvim/commit/d27ab6a)) +* ignore clippy warning ([](https://github.com/vyfor/cord.nvim/commit/16fa5b5)) +* **lua:** fix warnings ([](https://github.com/vyfor/cord.nvim/commit/8ef3177)) +* **release:** 1.0.0-beta.1 [skip ci] ([](https://github.com/vyfor/cord.nvim/commit/f166cfc)), closes [#53](https://github.com/vyfor/cord.nvim/issues/53) [#80](https://github.com/vyfor/cord.nvim/issues/80) +* **release:** 2.0.0-beta.1 [skip ci] ([](https://github.com/vyfor/cord.nvim/commit/fb719c6)), closes [#147](https://github.com/vyfor/cord.nvim/issues/147) [#152](https://github.com/vyfor/cord.nvim/issues/152) [#155](https://github.com/vyfor/cord.nvim/issues/155) [#53](https://github.com/vyfor/cord.nvim/issues/53) [#80](https://github.com/vyfor/cord.nvim/issues/80) +* **release:** 2.0.0-beta.1 [skip ci] ([](https://github.com/vyfor/cord.nvim/commit/1c39245)) +* **release:** 2.0.0-beta.2 [skip ci] ([](https://github.com/vyfor/cord.nvim/commit/371b6eb)) +* remove changelog ([](https://github.com/vyfor/cord.nvim/commit/c05af76)) +* remove changelog ([](https://github.com/vyfor/cord.nvim/commit/ca109e5)) +* remove debug statement ([](https://github.com/vyfor/cord.nvim/commit/67d9770)) +* remove redundant code ([](https://github.com/vyfor/cord.nvim/commit/baa8703)) +* remove redundant file ([](https://github.com/vyfor/cord.nvim/commit/755ce40)) +* remove unnecessary explicit lifetimes ([](https://github.com/vyfor/cord.nvim/commit/1088976)) +* remove unnecessary statement ([](https://github.com/vyfor/cord.nvim/commit/c12ad54)) +* remove unused imports ([](https://github.com/vyfor/cord.nvim/commit/0b1d6b9)) +* remove unused variable ([](https://github.com/vyfor/cord.nvim/commit/fef472f)) +* resolve merge conflicts ([](https://github.com/vyfor/cord.nvim/commit/4cd628c)) +* set previous release in `.releaserc.json` ([](https://github.com/vyfor/cord.nvim/commit/f398c02)) +* temporarily comment out code ([](https://github.com/vyfor/cord.nvim/commit/e2e2fd3)) +* update `.gitignore` ([](https://github.com/vyfor/cord.nvim/commit/bb07214)) +* update `.luacheckrc` ([](https://github.com/vyfor/cord.nvim/commit/f59f170)) +* update `.luacheckrc` ([](https://github.com/vyfor/cord.nvim/commit/df2f200)) +* update `.luacheckrc` ([](https://github.com/vyfor/cord.nvim/commit/6ce30ee)) +* update `.releaserc.json` ([](https://github.com/vyfor/cord.nvim/commit/9744462)) +* update `util/mod.rs` ([](https://github.com/vyfor/cord.nvim/commit/5ba79f4)) +* update releaserc ([](https://github.com/vyfor/cord.nvim/commit/5fbdd5d)) +* update semantic release ([](https://github.com/vyfor/cord.nvim/commit/7e9c5b0)) +* update semantic release ([](https://github.com/vyfor/cord.nvim/commit/8149653)) + + +### ci + +* add freebsd target ([](https://github.com/vyfor/cord.nvim/commit/20d27e1)) +* create release.yml ([](https://github.com/vyfor/cord.nvim/commit/1d725d1)) +* integrate semantic release ([](https://github.com/vyfor/cord.nvim/commit/66ca7cd)) +* prepare for publishing to luarocks ([](https://github.com/vyfor/cord.nvim/commit/ac35d97)) +* update `release.yml` ([](https://github.com/vyfor/cord.nvim/commit/30c3177)) +* update `release.yml` ([](https://github.com/vyfor/cord.nvim/commit/9984818)) +* update release workflow ([](https://github.com/vyfor/cord.nvim/commit/5367491)) +* update release workflow ([](https://github.com/vyfor/cord.nvim/commit/f9ddd9f)) +* update release workflow ([](https://github.com/vyfor/cord.nvim/commit/30e98f6)) +* update release.yml ([](https://github.com/vyfor/cord.nvim/commit/a60ac04)) +* update semantic release ([](https://github.com/vyfor/cord.nvim/commit/638dadf)) + + +### docs + +* add configuration examples ([](https://github.com/vyfor/cord.nvim/commit/a15b917)) +* **configration:** add missing backticks ([](https://github.com/vyfor/cord.nvim/commit/7958f89)) +* **configuration:** add default config values ([](https://github.com/vyfor/cord.nvim/commit/1aff02e)) +* **configuration:** center activity options ([](https://github.com/vyfor/cord.nvim/commit/de33741)) +* create a configuration guide ([](https://github.com/vyfor/cord.nvim/commit/e51af26)) +* create a migration guide ([](https://github.com/vyfor/cord.nvim/commit/debee75)) +* document string templating ([](https://github.com/vyfor/cord.nvim/commit/0bfc19d)) +* **lua:** document exposed interfaces ([](https://github.com/vyfor/cord.nvim/commit/7c23fe2)) +* **migration:** fix text highlighting ([](https://github.com/vyfor/cord.nvim/commit/965ee86)) +* prefer `:Cord update` over `:Cord fetch` ([](https://github.com/vyfor/cord.nvim/commit/7774af4)) +* **readme:** add badge icons ([](https://github.com/vyfor/cord.nvim/commit/63c5b08)) +* **readme:** add cord's logo ([](https://github.com/vyfor/cord.nvim/commit/6bd56b5)) +* **readme:** add installation step for `rocks.nvim` ([](https://github.com/vyfor/cord.nvim/commit/3f1dba6)) +* **readme:** include a link for cord's brand new discord server ([](https://github.com/vyfor/cord.nvim/commit/ce8ce56)) +* **readme:** rewrite README ([](https://github.com/vyfor/cord.nvim/commit/24d75e0)) +* **readme:** update README ([](https://github.com/vyfor/cord.nvim/commit/89ccba3)) +* **readme:** update README ([](https://github.com/vyfor/cord.nvim/commit/29f5f74)) +* **readme:** update README ([](https://github.com/vyfor/cord.nvim/commit/12b71d1)) +* **readme:** update README ([](https://github.com/vyfor/cord.nvim/commit/95f8167)) +* **rust:** document crucial parts of the codebase ([](https://github.com/vyfor/cord.nvim/commit/7f217a7)) +* **templates:** remove the icon request issue template ([](https://github.com/vyfor/cord.nvim/commit/2578920)) +* update configuration guide ([](https://github.com/vyfor/cord.nvim/commit/62b0764)) +* update configuration guide ([](https://github.com/vyfor/cord.nvim/commit/5eca57b)) +* update configuration guide ([](https://github.com/vyfor/cord.nvim/commit/cf031ff)) +* update documentation ([](https://github.com/vyfor/cord.nvim/commit/243898a)) +* update examples ([](https://github.com/vyfor/cord.nvim/commit/a1699d1)) +* update examples ([](https://github.com/vyfor/cord.nvim/commit/8abe529)) +* update examples ([](https://github.com/vyfor/cord.nvim/commit/20e02e3)) +* update migration guide ([](https://github.com/vyfor/cord.nvim/commit/01d1d60)) +* update migration guide ([](https://github.com/vyfor/cord.nvim/commit/d527f71)) +* update migration guide ([](https://github.com/vyfor/cord.nvim/commit/c4c6693)) +* update readme ([](https://github.com/vyfor/cord.nvim/commit/653c13d)) +* update readme ([](https://github.com/vyfor/cord.nvim/commit/e4c5621)) +* update readme ([](https://github.com/vyfor/cord.nvim/commit/d13991b)) +* update readme ([](https://github.com/vyfor/cord.nvim/commit/ccdc4dc)) +* update readme ([](https://github.com/vyfor/cord.nvim/commit/69d998b)) +* update the configuration guide ([](https://github.com/vyfor/cord.nvim/commit/cf23961)) +* update the configuration guide ([](https://github.com/vyfor/cord.nvim/commit/78b7ca6)) +* update the configuration guide ([](https://github.com/vyfor/cord.nvim/commit/9ef07b7)) +* update the configuration guide ([](https://github.com/vyfor/cord.nvim/commit/480d74c)) +* update the configuration guide ([](https://github.com/vyfor/cord.nvim/commit/fb6326f)) +* update the configuration guide ([](https://github.com/vyfor/cord.nvim/commit/40ec350)) +* update the configuration guide ([](https://github.com/vyfor/cord.nvim/commit/16b1ec3)) +* update the configuration guide ([](https://github.com/vyfor/cord.nvim/commit/8038675)) +* update the examples ([](https://github.com/vyfor/cord.nvim/commit/cf728c3)) +* update the examples ([](https://github.com/vyfor/cord.nvim/commit/4e67d61)) +* update the examples ([](https://github.com/vyfor/cord.nvim/commit/8209e21)) +* update the migration guide ([](https://github.com/vyfor/cord.nvim/commit/006f3a4)) +* update the migration guide ([](https://github.com/vyfor/cord.nvim/commit/d9ccf2e)) +* update the migration guide ([](https://github.com/vyfor/cord.nvim/commit/048f1d2)) +* update the migration guide ([](https://github.com/vyfor/cord.nvim/commit/7ba64be)) +* update the migration guide ([](https://github.com/vyfor/cord.nvim/commit/c5353fe)) +* update the migration guide ([](https://github.com/vyfor/cord.nvim/commit/7030bad)) +* update the migration guide ([](https://github.com/vyfor/cord.nvim/commit/8013f9b)) + + +### feat + +* **activity:** add additional fields ([](https://github.com/vyfor/cord.nvim/commit/ffec9cd)) +* add `:Cord restart` ([](https://github.com/vyfor/cord.nvim/commit/ff7b7cf)) +* add `json:Error` & `msgpack:Error` ([](https://github.com/vyfor/cord.nvim/commit/0f33af2)) +* add `new` function to `Packet` struct ([](https://github.com/vyfor/cord.nvim/commit/fd4b201)) +* add `notes` field ([](https://github.com/vyfor/cord.nvim/commit/304d171)) +* add `TryFrom` impl to `AssetType` ([](https://github.com/vyfor/cord.nvim/commit/ca4d5d8)) +* add `vim.g.cord_is_updating` to avoid multiple simultaneous updates ([](https://github.com/vyfor/cord.nvim/commit/166be04)) +* add a logger struct ([](https://github.com/vyfor/cord.nvim/commit/d3f4fa0)) +* add a macro that simplifies field deserialization ([](https://github.com/vyfor/cord.nvim/commit/ada22e6)) +* add cleanup logic ([](https://github.com/vyfor/cord.nvim/commit/df96059)) +* add explicit rich presence clearing; can be completely hidden with `force = true` ([](https://github.com/vyfor/cord.nvim/commit/8e99c03)) +* add message deserialization logic ([](https://github.com/vyfor/cord.nvim/commit/3f7fea2)) +* add message handler struct ([](https://github.com/vyfor/cord.nvim/commit/e93d9c8)) +* add program entry point ([](https://github.com/vyfor/cord.nvim/commit/f0e8727)) +* add proper serialization for `LogEvent` ([](https://github.com/vyfor/cord.nvim/commit/340c504)) +* add server-scoped `InitializeEvent` ([](https://github.com/vyfor/cord.nvim/commit/5097ceb)) +* add the `Cord` struct which is used as the entry point ([](https://github.com/vyfor/cord.nvim/commit/c2f67c0)) +* add unix implementation of the IPC server ([](https://github.com/vyfor/cord.nvim/commit/cdc4245)) +* add usercommands ([](https://github.com/vyfor/cord.nvim/commit/8582099)) +* add utility functions for building and fetching the executable ([](https://github.com/vyfor/cord.nvim/commit/b77455b)) +* add windows implementation of the IPC server ([](https://github.com/vyfor/cord.nvim/commit/04192c5)) +* allow parsing `client_id` from client name ([](https://github.com/vyfor/cord.nvim/commit/3e7f1b3)) +* allow the user to skip updates ([](https://github.com/vyfor/cord.nvim/commit/381542d)) +* allow users to set a custom activity ([](https://github.com/vyfor/cord.nvim/commit/e9d388c)) +* always fetch the executable if it's not present ([](https://github.com/vyfor/cord.nvim/commit/7a18740)) +* always perform the file exists check first ([](https://github.com/vyfor/cord.nvim/commit/d94b5b8)) +* **async:** implement Future wrappers for commonly used uv functions ([](https://github.com/vyfor/cord.nvim/commit/62b133c)) +* **async:** implement the concept of futures and handle async operations via coroutines ([](https://github.com/vyfor/cord.nvim/commit/8638d30)) +* capture build errors ([](https://github.com/vyfor/cord.nvim/commit/64b1103)) +* **cli:** add `--version` argument ([](https://github.com/vyfor/cord.nvim/commit/1799242)) +* **cli:** implement argument parsing ([](https://github.com/vyfor/cord.nvim/commit/b3051db)) +* **config:** add `advanced.server.build` ([](https://github.com/vyfor/cord.nvim/commit/bf27f76)) +* **config:** add `advanced.variables_in_functions` ([](https://github.com/vyfor/cord.nvim/commit/6aae137)) +* **config:** add `idle.unidle_on_focus` ([](https://github.com/vyfor/cord.nvim/commit/f4e8c93)) +* **config:** add `on_activity` hook ([](https://github.com/vyfor/cord.nvim/commit/2695288)) +* **config:** add `on_disconnect` hook ([](https://github.com/vyfor/cord.nvim/commit/299882d)) +* **config:** add support for string templates using the new `variables` option ([](https://github.com/vyfor/cord.nvim/commit/d5ec225)) +* **config:** allow users to choose between different icon styles ([](https://github.com/vyfor/cord.nvim/commit/3fef850)) +* **config:** custom assets' options now support function types ([](https://github.com/vyfor/cord.nvim/commit/2a5122c)) +* **config:** introduce `idle.smart_idle` option which lets general activities take precedence over the idle ones ([](https://github.com/vyfor/cord.nvim/commit/99e9e93)) +* create `Config` struct to store internal configuration and refine timeout logic ([](https://github.com/vyfor/cord.nvim/commit/d5c179c)) +* create a separate module for icon-related stuff ([](https://github.com/vyfor/cord.nvim/commit/8b83610)) +* display the most recent activity in case a client disconnects; clear the status if none are connected ([](https://github.com/vyfor/cord.nvim/commit/eedc94a)) +* **events:** add client event implementations ([](https://github.com/vyfor/cord.nvim/commit/fcda103)) +* **events:** add server events ([](https://github.com/vyfor/cord.nvim/commit/52061da)) +* **events:** handle client connection ([](https://github.com/vyfor/cord.nvim/commit/2e7d5d4)) +* **events:** notify the client about errors on their side ([](https://github.com/vyfor/cord.nvim/commit/db9a2ef)) +* handle automatically moving the server executable to nvim's data directory ([](https://github.com/vyfor/cord.nvim/commit/ae0fb6f)) +* handle the activity type ([](https://github.com/vyfor/cord.nvim/commit/0bfa07c)) +* **icon:** expose locals ([](https://github.com/vyfor/cord.nvim/commit/15e83b3)) +* implement `Default` for `Overlapped` struct ([](https://github.com/vyfor/cord.nvim/commit/83d9c4e)) +* implement `OnEvent` trait for all events ([](https://github.com/vyfor/cord.nvim/commit/1675342)) +* implement a wrapper around `curl` ([](https://github.com/vyfor/cord.nvim/commit/4bb65b4)) +* implement caching for workspace and repository entries ([](https://github.com/vyfor/cord.nvim/commit/1dc2def)) +* implement custom error type ([](https://github.com/vyfor/cord.nvim/commit/ff80157)) +* implement iterations - a maximum amount of time the server can idle without active connections ([](https://github.com/vyfor/cord.nvim/commit/b6e8955)) +* implement reconnection mechanism for Discord ([](https://github.com/vyfor/cord.nvim/commit/90ba49a)) +* implement sessions and session manager ([](https://github.com/vyfor/cord.nvim/commit/312b924)) +* improve cleanup logic ([](https://github.com/vyfor/cord.nvim/commit/1b9be0c)) +* introduce `PresenceContext` struct which will be used to build the rich presence ([](https://github.com/vyfor/cord.nvim/commit/59ec145)) +* introduce message communication system ([](https://github.com/vyfor/cord.nvim/commit/19ab5c6)) +* **ipc:** continuously read data from Discord pipe to detect sudden disconnects ([](https://github.com/vyfor/cord.nvim/commit/807291f)) +* **ipc:** use full pipe path ([](https://github.com/vyfor/cord.nvim/commit/55ca5ab)) +* **json:** add robust error handling ([](https://github.com/vyfor/cord.nvim/commit/a6697da)) +* **lockfile:** implement file locking mechanism ([](https://github.com/vyfor/cord.nvim/commit/dd8fe2c)) +* **logger:** handle cases in lua callbacks ([](https://github.com/vyfor/cord.nvim/commit/c3ccb35)) +* **lua:** automatically start the server ([](https://github.com/vyfor/cord.nvim/commit/0364cfb)) +* **lua:** call `on_workspace_change` hook if a workspace change is detected ([](https://github.com/vyfor/cord.nvim/commit/33abe5a)) +* **lua:** initial implementation of the Lua codebase ([](https://github.com/vyfor/cord.nvim/commit/6f72e92)) +* **lua:** switch to event-driven architecture ([](https://github.com/vyfor/cord.nvim/commit/e65f015)) +* make server error messages clean ([](https://github.com/vyfor/cord.nvim/commit/c097bd8)) +* **manager:** expose more functions for interacting with rich presence and its manager ([](https://github.com/vyfor/cord.nvim/commit/c34dea1)) +* **mappings:** add `cuda` filetype ([](https://github.com/vyfor/cord.nvim/commit/9fdd31e)) +* **mappings:** add icon for odin ([](https://github.com/vyfor/cord.nvim/commit/0df0a45)) +* **mappings:** add missing filetypes ([](https://github.com/vyfor/cord.nvim/commit/dbfb1ad)) +* **mappings:** add support for dashboard plugins ([](https://github.com/vyfor/cord.nvim/commit/cd04a8c)) +* **mappings:** add support for docs ([](https://github.com/vyfor/cord.nvim/commit/cfe563f)) +* modularize the event system and add helper macros for creating messages ([](https://github.com/vyfor/cord.nvim/commit/f302fa1)) +* **msgpack:** add msgpack deserialization ([](https://github.com/vyfor/cord.nvim/commit/eb2e10d)) +* **msgpack:** add msgpack serialization ([](https://github.com/vyfor/cord.nvim/commit/1f7c2a6)) +* **msgpack:** add support for STR8 header ([](https://github.com/vyfor/cord.nvim/commit/cd634ea)) +* **msgpack:** allow serialization of Map values ([](https://github.com/vyfor/cord.nvim/commit/9dc26b4)) +* **msgpack:** support owned strings ([](https://github.com/vyfor/cord.nvim/commit/0679c31)) +* notify client when the workspace is found in the blacklist ([](https://github.com/vyfor/cord.nvim/commit/ae660bd)) +* notify the client when server is ready to accept connections ([](https://github.com/vyfor/cord.nvim/commit/b27d763)) +* notify the clients about the server shutdown ([](https://github.com/vyfor/cord.nvim/commit/e987ba0)) +* prepend the messages with a length header in case they get merged ([](https://github.com/vyfor/cord.nvim/commit/264fde3)) +* prioritize general activities over the idle activity ([](https://github.com/vyfor/cord.nvim/commit/b4a837c)) +* **producer:** allow sending a shutdown request ([](https://github.com/vyfor/cord.nvim/commit/354e2a6)) +* provide clear error message for when the connection to Discord IPC fails ([](https://github.com/vyfor/cord.nvim/commit/4828894)) +* provide clearer server error messages ([](https://github.com/vyfor/cord.nvim/commit/34bfe12)) +* provide more data when logging the error ([](https://github.com/vyfor/cord.nvim/commit/22e9ed8)) +* **server:** add local `ShutdownEvent` ([](https://github.com/vyfor/cord.nvim/commit/3f55760)) +* **server:** improve error handling & error messages ([](https://github.com/vyfor/cord.nvim/commit/9aea257)) +* **server:** notify the client whether the provided client id is incorrect ([](https://github.com/vyfor/cord.nvim/commit/edc9f5a)) +* set style-specific default idle icons ([](https://github.com/vyfor/cord.nvim/commit/c17ad89)) +* specify MSRV ([](https://github.com/vyfor/cord.nvim/commit/1b520ca)) +* specify plugin version ([](https://github.com/vyfor/cord.nvim/commit/cd8142f)) +* stop any updates when connection is lost ([](https://github.com/vyfor/cord.nvim/commit/dd1dd43)) +* store os name and architecture ([](https://github.com/vyfor/cord.nvim/commit/3f663db)) +* switch to next available activity on `clear_activity` event ([](https://github.com/vyfor/cord.nvim/commit/f05f126)) +* tie each client to a session ([](https://github.com/vyfor/cord.nvim/commit/edd2141)) +* trim stderr messages ([](https://github.com/vyfor/cord.nvim/commit/4ec5de9)) +* update sessions' last updated time ([](https://github.com/vyfor/cord.nvim/commit/9968d94)) +* use newly added mapping types ([](https://github.com/vyfor/cord.nvim/commit/015f7ed)) +* **usercmds:** add `:Cord status` ([](https://github.com/vyfor/cord.nvim/commit/47c3d6a)) +* **usercmds:** add `:Cord update` ([](https://github.com/vyfor/cord.nvim/commit/eba53d9)) +* **util:** add additional file-related utility functions ([](https://github.com/vyfor/cord.nvim/commit/36d5031)) +* validate and set `editor_image` upon initialization ([](https://github.com/vyfor/cord.nvim/commit/d56416a)) + + +### fix + +* `IPC:is_closing` should return true if the pipe does not exist ([](https://github.com/vyfor/cord.nvim/commit/29170fd)) +* `should_skip_update` should be checked right before the update ([](https://github.com/vyfor/cord.nvim/commit/93636dd)) +* actually update the editor image ([](https://github.com/vyfor/cord.nvim/commit/b1e5deb)) +* allow sending same activity updates ([](https://github.com/vyfor/cord.nvim/commit/1883ba4)) +* an attempt to fix intermittent ui freezes ([](https://github.com/vyfor/cord.nvim/commit/e53bf20)) +* **async:** avoid including debug info on regular errors and fix error propagation ([](https://github.com/vyfor/cord.nvim/commit/618ce39)) +* automatically retry connection on `ECONNREFUSED` & `ETIMEDOUT` ([](https://github.com/vyfor/cord.nvim/commit/55452b3)) +* avoid joining the handles ([](https://github.com/vyfor/cord.nvim/commit/3d478f1)) +* change `cfg-if` attribute ([](https://github.com/vyfor/cord.nvim/commit/76ecb5c)) +* close uv handles before exiting ([](https://github.com/vyfor/cord.nvim/commit/1bd6bb9)) +* **config:** correctly handle custom client ids ([](https://github.com/vyfor/cord.nvim/commit/a4719a2)) +* **config:** correctly replace config values ([](https://github.com/vyfor/cord.nvim/commit/17dd6f3)) +* **config:** do not override the given editor icon ([](https://github.com/vyfor/cord.nvim/commit/25d31ba)) +* correct the logic responsible for falling back to defaults ([](https://github.com/vyfor/cord.nvim/commit/b784a74)) +* correctly handle curl's stdout ([](https://github.com/vyfor/cord.nvim/commit/5b44dff)) +* correctly serialize activity timestamps ([](https://github.com/vyfor/cord.nvim/commit/6362a2c)) +* correctly serialize rich presence packet ([](https://github.com/vyfor/cord.nvim/commit/3e894ee)) +* correctly set `workspace_dir` & `workspace_name` ([](https://github.com/vyfor/cord.nvim/commit/a56a856)) +* do not queue activity updates upon losing focus ([](https://github.com/vyfor/cord.nvim/commit/0b8d609)) +* fallback to default activity type if not provided ([](https://github.com/vyfor/cord.nvim/commit/bebea1f)) +* idle timeout check ([](https://github.com/vyfor/cord.nvim/commit/2e3e961)) +* implement event queuing for handling events registered after the handler is run ([](https://github.com/vyfor/cord.nvim/commit/46b8de4)) +* imports ([](https://github.com/vyfor/cord.nvim/commit/9e8819e)) +* include `vim.log.levels.OFF` when parsing the log level ([](https://github.com/vyfor/cord.nvim/commit/cc9ba64)) +* **ipc:** cleanup the stale pipe if the server process was forcefully terminated ([](https://github.com/vyfor/cord.nvim/commit/a77e86c)) +* **ipc:** handle client disconnection on `ErrorKind::BrokenPipe` ([](https://github.com/vyfor/cord.nvim/commit/a315118)) +* **ipc:** properly cleanup on exit ([](https://github.com/vyfor/cord.nvim/commit/0d5c61b)) +* let the updater alone handle executable spawning, or we might have two threads attempting to spawn it simultaneously ([](https://github.com/vyfor/cord.nvim/commit/44acc10)) +* **log:** correctly write to the client pipe ([](https://github.com/vyfor/cord.nvim/commit/710b83e)) +* **mappings:** ensure that the tooltips have a minimum length of 2 ([](https://github.com/vyfor/cord.nvim/commit/e9368fa)) +* **mappings:** set plugin managers' default icon to `plugin` ([](https://github.com/vyfor/cord.nvim/commit/a2be431)) +* normalize path before workspace lookup ([](https://github.com/vyfor/cord.nvim/commit/c919c94)) +* perform a nil check for usercmds interacting with the activity manager ([](https://github.com/vyfor/cord.nvim/commit/8427bed)) +* properly handle chunked data ([](https://github.com/vyfor/cord.nvim/commit/0b8c655)) +* properly handle server shutdowns ([](https://github.com/vyfor/cord.nvim/commit/281a93b)) +* replace method definition with a function definition ([](https://github.com/vyfor/cord.nvim/commit/8d6bcf9)) +* resolve autocmds errors ([](https://github.com/vyfor/cord.nvim/commit/02340b1)) +* resolve event serialization issues ([](https://github.com/vyfor/cord.nvim/commit/7ec693e)) +* resolve idle timeout related issues ([](https://github.com/vyfor/cord.nvim/commit/21d9a50)) +* resolve workspace issues; handle missing hooks ([](https://github.com/vyfor/cord.nvim/commit/4cff958)) +* return if config validation fails ([](https://github.com/vyfor/cord.nvim/commit/503371d)) +* schedule cleanup logic if necessary ([](https://github.com/vyfor/cord.nvim/commit/9aa6578)) +* schedule the callbacks to maintain compatibility with Neovim 0.6.0 ([](https://github.com/vyfor/cord.nvim/commit/35428c0)) +* **server:** fix logging level comparison ([](https://github.com/vyfor/cord.nvim/commit/86f2a70)) +* **server:** use panic-free means to write to stdout ([](https://github.com/vyfor/cord.nvim/commit/23ba754)) +* **sessions:** retrieve the correct session based on id instead of always returning the first available ([](https://github.com/vyfor/cord.nvim/commit/6493da4)) +* set executable permissions on unix systems ([](https://github.com/vyfor/cord.nvim/commit/541a563)) +* **spawn:** use an absolute path for server executable's fallback path ([](https://github.com/vyfor/cord.nvim/commit/0ac391a)) +* stop the plugin on server errors ([](https://github.com/vyfor/cord.nvim/commit/20d0a48)) +* update `last_activity` only if an actual update occurred ([](https://github.com/vyfor/cord.nvim/commit/1dd0e20)) +* update server's status to `ready` on receiving the ready event ([](https://github.com/vyfor/cord.nvim/commit/8e57129)) +* use `cord --version` to determine the current version of the executable and whether an update is required ([](https://github.com/vyfor/cord.nvim/commit/5c31319)) +* **windows:** properly handle overlapped I/O ([](https://github.com/vyfor/cord.nvim/commit/296e4f4)) +* **windows:** use overlapped io for named pipes to avoid deadlocks ([](https://github.com/vyfor/cord.nvim/commit/2f73ce8)) + + +### perf + +* avoid unnecessary lookups ([](https://github.com/vyfor/cord.nvim/commit/a4bccf4)) +* avoid unnecessary lookups ([](https://github.com/vyfor/cord.nvim/commit/b586eec)) +* **fs:** switch to async filesystem ops ([](https://github.com/vyfor/cord.nvim/commit/961ec2c)) +* handle logic responsible for broadcasting the ready event more efficiently ([](https://github.com/vyfor/cord.nvim/commit/a5c8ca3)) +* **json:** optimize deserialization logic ([](https://github.com/vyfor/cord.nvim/commit/02c233f)) +* **json:** optimize serialization logic and generalize the serializer ([](https://github.com/vyfor/cord.nvim/commit/3e7ab98)) +* **lua:** lazy load some modules ([](https://github.com/vyfor/cord.nvim/commit/0f1ebaa)) +* **lua:** lazily load other modules ([](https://github.com/vyfor/cord.nvim/commit/6313f45)) +* **mappings:** significant performance improvements ([](https://github.com/vyfor/cord.nvim/commit/8ea0ad8)) +* remove unnecessary atomics ([](https://github.com/vyfor/cord.nvim/commit/85499cf)) + + +### refactor + +* **`AssetType`:** rename `Lsp` to `LspManager`, allow parsing from a string slice ([](https://github.com/vyfor/cord.nvim/commit/025092d)) +* `Config::buttons` should be optional ([](https://github.com/vyfor/cord.nvim/commit/363fbee)) +* `Packet` should not own the `Activity` ([](https://github.com/vyfor/cord.nvim/commit/ca936f8)) +* **activity manager:** `pause()` and `resume()` should check `is_paused` ([](https://github.com/vyfor/cord.nvim/commit/d884b1d)) +* add more logging ([](https://github.com/vyfor/cord.nvim/commit/2e78f24)) +* add new message types, rename `ServerMessage` to `LocalMessage`, resolve lifetime issues ([](https://github.com/vyfor/cord.nvim/commit/9a7d0c6)) +* apply clippy suggestions ([](https://github.com/vyfor/cord.nvim/commit/071da49)) +* call `on_ready` after initializing the activity manager ([](https://github.com/vyfor/cord.nvim/commit/378ade3)) +* change `'Connecting'` log level to `DEBUG` ([](https://github.com/vyfor/cord.nvim/commit/f0749be)) +* change `Deserialize::deserialize` to return `crate::Result` ([](https://github.com/vyfor/cord.nvim/commit/28e93f0)) +* change `killall -9` -> `pkill -15` ([](https://github.com/vyfor/cord.nvim/commit/f993173)) +* change `validate_buttons` function to accept a mutable reference ([](https://github.com/vyfor/cord.nvim/commit/29938ed)) +* change error messages ([](https://github.com/vyfor/cord.nvim/commit/694fb96)) +* change the return type of `OnEvent::on_event` to `crate::Result<()>` ([](https://github.com/vyfor/cord.nvim/commit/54f69dc)) +* **cli:** add a new error type for cli-related errors ([](https://github.com/vyfor/cord.nvim/commit/4962a5f)) +* **codebase:** ensure proper asynchronous flow and reorganize codebase ([](https://github.com/vyfor/cord.nvim/commit/9f205ac)) +* **config:** change default text values ([](https://github.com/vyfor/cord.nvim/commit/15a8f58)) +* **config:** change default values ([](https://github.com/vyfor/cord.nvim/commit/3822787)) +* **config:** remove `lsp` ([](https://github.com/vyfor/cord.nvim/commit/178631a)) +* **config:** rename `advanced.server.build` to `update` ([](https://github.com/vyfor/cord.nvim/commit/8f723a5)) +* **config:** rename `enable` -> `enabled` ([](https://github.com/vyfor/cord.nvim/commit/849f7a9)) +* **config:** set `cursor_update_mode` to `'on_hold'` by default ([](https://github.com/vyfor/cord.nvim/commit/6b320e9)) +* **config:** set `log_level` to `INFO` by default ([](https://github.com/vyfor/cord.nvim/commit/96e9bab)) +* **constants:** change assets url to the new repo; reset assets version ([](https://github.com/vyfor/cord.nvim/commit/a61520e)) +* **core:** simplify Rust backend by removing internal details ([](https://github.com/vyfor/cord.nvim/commit/266b824)) +* correct require path ([](https://github.com/vyfor/cord.nvim/commit/6f6899a)) +* **error:** change `CordError` type definition; add missing error types ([](https://github.com/vyfor/cord.nvim/commit/cf1990d)) +* **error:** include error kind when converting the error to string ([](https://github.com/vyfor/cord.nvim/commit/ecfd967)) +* **events:** update event implementations ([](https://github.com/vyfor/cord.nvim/commit/baaa8fa)) +* **events:** use the client `DisconnectEvent` instead of the local `ClientDisconnectedEvent` ([](https://github.com/vyfor/cord.nvim/commit/6535683)) +* fallback to `vim.uv` ([](https://github.com/vyfor/cord.nvim/commit/4d7604d)) +* fallback to os-specific executable path ([](https://github.com/vyfor/cord.nvim/commit/19d2ef9)) +* fix error message ([](https://github.com/vyfor/cord.nvim/commit/7ae5966)) +* force constructor initialization ([](https://github.com/vyfor/cord.nvim/commit/cb81ac9)) +* handle shutdowns directly ([](https://github.com/vyfor/cord.nvim/commit/4e9748c)) +* handle the process handle ([](https://github.com/vyfor/cord.nvim/commit/edf1a1b)) +* have the session store `last_activity` ([](https://github.com/vyfor/cord.nvim/commit/ca34808)) +* implicitly return result in main function ([](https://github.com/vyfor/cord.nvim/commit/e9667f2)) +* improve the way updates are skipped; expose a function in the manager class ([](https://github.com/vyfor/cord.nvim/commit/7032c0d)) +* **ipc:** remove `on_error` calls ([](https://github.com/vyfor/cord.nvim/commit/5f3fcfe)) +* **ipc:** remove unnecessary scheduling ([](https://github.com/vyfor/cord.nvim/commit/3271a52)) +* **ipc:** use full pipe path ([](https://github.com/vyfor/cord.nvim/commit/8090ddf)) +* **json:** rename value structs and move them to their own file ([](https://github.com/vyfor/cord.nvim/commit/542f2f8)) +* make `EventContext` mutable ([](https://github.com/vyfor/cord.nvim/commit/53bae42)) +* **manager:** force an update upon gaining focus ([](https://github.com/vyfor/cord.nvim/commit/4e5778f)) +* **mappings:** provide a constant value for default icons ([](https://github.com/vyfor/cord.nvim/commit/5a93c08)) +* minor changes ([](https://github.com/vyfor/cord.nvim/commit/f8b7e0b)) +* move `args.rs` to its own module ([](https://github.com/vyfor/cord.nvim/commit/26575ef)) +* move `AssetType` to `util` ([](https://github.com/vyfor/cord.nvim/commit/cf9605a)) +* move `types.rs` to its own module ([](https://github.com/vyfor/cord.nvim/commit/aa09011)) +* move autocmd for cleaning up to `plugin/cord.vim` ([](https://github.com/vyfor/cord.nvim/commit/d57d2fc)) +* move Discord IPC logic to a separate module ([](https://github.com/vyfor/cord.nvim/commit/5915844)) +* move IPC messages to their own module ([](https://github.com/vyfor/cord.nvim/commit/3a70ea6)) +* move usercmds to `cord.vim` ([](https://github.com/vyfor/cord.nvim/commit/ca7bb9d)) +* **msgpack:** make `deseralize` accept already deserialized `Value` ([](https://github.com/vyfor/cord.nvim/commit/4051fa2)) +* override `opts.filename` if it's empty ([](https://github.com/vyfor/cord.nvim/commit/5e5dee3)) +* provide debug error messages ([](https://github.com/vyfor/cord.nvim/commit/64a6489)) +* reduce code verbosity by using macros ([](https://github.com/vyfor/cord.nvim/commit/bee4aa0)) +* reflect codebase changes ([](https://github.com/vyfor/cord.nvim/commit/4b03eb2)) +* remove `constants.VERSION` ([](https://github.com/vyfor/cord.nvim/commit/2d43373)) +* remove excessive debug logging ([](https://github.com/vyfor/cord.nvim/commit/414b4b2)) +* remove lib.rs ([](https://github.com/vyfor/cord.nvim/commit/e01274e)) +* remove redundant functions ([](https://github.com/vyfor/cord.nvim/commit/bc814da)) +* remove server-scoped `ShutdownEvent` ([](https://github.com/vyfor/cord.nvim/commit/96f3478)) +* remove unnecessary events ([](https://github.com/vyfor/cord.nvim/commit/e4522d6)) +* rename `Config` to `PluginConfig` ([](https://github.com/vyfor/cord.nvim/commit/e7d3795)) +* rename `ResetTimestampEvent` -> `SetTimestampEvent` ([](https://github.com/vyfor/cord.nvim/commit/f280750)) +* rename `rpc` to `activity` ([](https://github.com/vyfor/cord.nvim/commit/09ed1af)) +* rename `style` -> `theme` ([](https://github.com/vyfor/cord.nvim/commit/b9a7b7e)) +* rename `swap_images` -> `swap_icons` ([](https://github.com/vyfor/cord.nvim/commit/c40b7ca)) +* rename `take_str` -> `take_string` ([](https://github.com/vyfor/cord.nvim/commit/c5b0a22)) +* rename directory to `presence` ([](https://github.com/vyfor/cord.nvim/commit/71034b2)) +* replace `SessionManager::new` with `Default` derive ([](https://github.com/vyfor/cord.nvim/commit/a0587fd)) +* rewrite the codebase to use msgpack instead of json ([](https://github.com/vyfor/cord.nvim/commit/f2228cf)) +* separate process spawning logic ([](https://github.com/vyfor/cord.nvim/commit/b0d46bd)) +* **serialization:** move [de]serializers to their own common module; introduce a common error type ([](https://github.com/vyfor/cord.nvim/commit/92102e6)) +* set `opts.skip_update` back to `false` after skipping an activity update ([](https://github.com/vyfor/cord.nvim/commit/fe78f7a)) +* set executable directory to `nvim-data/cord/bin` ([](https://github.com/vyfor/cord.nvim/commit/4e69b5b)) +* split `PluginConfig` into structs with relevant fields ([](https://github.com/vyfor/cord.nvim/commit/3e10a9a)) +* store relevant types and constants in a separate file ([](https://github.com/vyfor/cord.nvim/commit/05eb4f4)) +* tweak events ([](https://github.com/vyfor/cord.nvim/commit/9dfa106)) +* unconditionally fetch and store the git url ([](https://github.com/vyfor/cord.nvim/commit/a786053)) +* update event context to include reference to Cord itself ([](https://github.com/vyfor/cord.nvim/commit/30995c6)) +* update log message ([](https://github.com/vyfor/cord.nvim/commit/e2d16d2)) +* update serialization logic ([](https://github.com/vyfor/cord.nvim/commit/c17fa3e)) +* use `crate::Result` type ([](https://github.com/vyfor/cord.nvim/commit/8cf2bc2)) +* use `Packet::empty()` ([](https://github.com/vyfor/cord.nvim/commit/d4ff8fa)) +* use Cargo to build the server executable ([](https://github.com/vyfor/cord.nvim/commit/233b18b)) +* use os-specific defaults ([](https://github.com/vyfor/cord.nvim/commit/c5b9e03)) +* **usercmds:** do not include stack traceback when logging on unknown command ([](https://github.com/vyfor/cord.nvim/commit/46164b4)) +* wrap `editor_image` in Option type ([](https://github.com/vyfor/cord.nvim/commit/a59eb25)) + + +### style + +* correct error message ([](https://github.com/vyfor/cord.nvim/commit/2914451)) +* fix warning ([](https://github.com/vyfor/cord.nvim/commit/d55a6b1)) +* fix warnings ([](https://github.com/vyfor/cord.nvim/commit/149cb9f)) +* fix warnings ([](https://github.com/vyfor/cord.nvim/commit/b5f7cee)) +* fix warnings ([](https://github.com/vyfor/cord.nvim/commit/791a83e)) +* fix warnings ([](https://github.com/vyfor/cord.nvim/commit/b22e442)) +* more logging ([](https://github.com/vyfor/cord.nvim/commit/a776a41)) +* move autocmds to the bottom of the file ([](https://github.com/vyfor/cord.nvim/commit/c42f88f)) +* reformat code ([](https://github.com/vyfor/cord.nvim/commit/7af31a8)) +* reformat codebase ([](https://github.com/vyfor/cord.nvim/commit/8e88a20)) +* remove unused import ([](https://github.com/vyfor/cord.nvim/commit/ed3f130)) +* remove unused variables ([](https://github.com/vyfor/cord.nvim/commit/d6f7a40)) +* remove unused variables ([](https://github.com/vyfor/cord.nvim/commit/dedec5f)) +* reorder imports ([](https://github.com/vyfor/cord.nvim/commit/5658ca8)) +* resolve unused argument warning ([](https://github.com/vyfor/cord.nvim/commit/85781a2)) + + +### BREAKING CHANGE + +* none + +# ⚙️ [v2.0.0-beta.1] + +_2025-01-02_ + * feat!: update semantic release's ci ([](https://github.com/vyfor/cord.nvim/commit/573814db641b62a37a9bea2c6f750c6a543f136f)) * fix!: bugfixes related to opts handling, workspace detection callback, button validation as well as slight changes in configuration ([](https://github.com/vyfor/cord.nvim/commit/277b5b0517c9dfcb2a6887820005a8f3df068a14)) * merge #147 ([](https://github.com/vyfor/cord.nvim/commit/9423cf34faca901874a0d3741f867bb0babf24dc)), closes [#147](https://github.com/vyfor/cord.nvim/issues/147)