Skip to content

Conversation

haberdashPI
Copy link
Owner

@haberdashPI haberdashPI commented Mar 11, 2025

I wanted to post this for visibility, to get any feedback, and provide an early warning.

This makes the following breaking changes to the keybinding format, planned for the release 0.4 of Master Key (cc @bhainesva and @sanrise, you are the two I know of who have created your own binding file). These changes will not be released until my documentation effort is complete, and more breaking changes may be added below as a part of my effort to write up the documentation.

  • foreach expressions use {{}} instead of {}
  • The path field of [[bind]] has been renamed to defaults
  • The [[path]] element has been renamed to [[default]].
    • Renamed when field for [[default]] to appendWhen to be more explicit about what it does
    • Remove name and description fields for [[default]]
  • Rename resetTransient to finalKey
  • Rename (re)storeNamed command's name field to register
  • Use "{{all_prefixes}}" instead of "<all-prefixes>"
  • Rename header.version = "1.0" to "2.0"

Any fields using an expression make use of a more explicit name that includes the word computed

  • Rename repeat to computedRepeat
  • Rename if to whenComputed
  • Rename replay-related command fields
    • at to whereComputedIndexIs
    • range to whereComputedRangeIs

My goal is to make sure all breaking changes can be relatively easily addressed using simple find/replace commands.

TODO

  • handle outdated keybindings being loaded
  • get ci working

@haberdashPI haberdashPI changed the title Push ryxnorrluuxk Breaking Changes for 0.4 Mar 11, 2025
@haberdashPI haberdashPI self-assigned this Mar 14, 2025
@haberdashPI haberdashPI marked this pull request as ready for review March 14, 2025 17:32
@codecov
Copy link

codecov bot commented May 14, 2025

Codecov Report

Attention: Patch coverage is 23.97661% with 130 lines in your changes missing coverage. Please review.

Project coverage is 52.64%. Comparing base (e61eaee) to head (f48d187).
Report is 4 commits behind head on main.

Files with missing lines Patch % Lines
src/web/keybindings/legacyParsing.ts 4.65% 82 Missing ⚠️
src/web/commands/namedStore.ts 15.00% 17 Missing ⚠️
src/web/keybindings/parsing.ts 40.00% 10 Missing and 2 partials ⚠️
src/web/commands/do.ts 58.82% 5 Missing and 2 partials ⚠️
src/web/keybindings/processing.ts 66.66% 4 Missing and 3 partials ⚠️
src/web/commands/replay.ts 0.00% 5 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##             main      #70       +/-   ##
===========================================
- Coverage   78.67%   52.64%   -26.04%     
===========================================
  Files          25       26        +1     
  Lines        2420     2534      +114     
  Branches      477      516       +39     
===========================================
- Hits         1904     1334      -570     
- Misses        324     1052      +728     
+ Partials      192      148       -44     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@haberdashPI
Copy link
Owner Author

CI is still failing. My plan is to abandon my current end-to-end testing setup: it is too flakey and the package I'm using is poorly maintained. I have tested out a setup that uses playwright and that seems to be working well, so the next major PR will migrate to playwright. Merging to main. I will not be cutting the 0.4 release until the playwright migration is complete.

@haberdashPI haberdashPI merged commit 241ea1b into main Jun 26, 2025
1 check failed
haberdashPI added a commit that referenced this pull request Jun 28, 2025
This re-organizes and reformats a lot of files to fit with the new build and linting system.

The modern build setup uses:
- esbuild
- eslint (no google ts styling)
- pnpm
- mise build tasks

It also lays the ground work for using rust libraries (via WASM and wasm-pack), though no such wasm modules exist yet.

Additional changes:

- Removes `jsep` as a dependency: this was an old library with no recent updates. I could not get it to work with a modern build setup. This changes the behavior for how and when keybindings are treated as identical: there are now fewer equivalent `when` clauses that are considered the same (now we just hash a string of the when clause with all spaces removed). The matching was never perfect, and I don't think this regression should practically impact usage.

- I did a little debugging here that turned out to be another bug in `larkin.toml`'s repeat-motion command caused by the refactoring in #70. Yet another piece of evidence that we really need to move to a more robust testing infrastructure (would been caught by old tests, but we don't have the ability to reliably run it).

Reviewers: 

Pull Request: #73
haberdashPI added a commit that referenced this pull request Jul 7, 2025
This is a complete overhaul of the CI/testing setup for this project. It makes a few small changes to the project as well:

1. Fix various bugs that were missed when merging #70: these were missed due to the flaky tests — which were the reason to revamp the tests here

2. Remove excessive UI features: there is some feature bloat in the config commands that was annoying to add tests for and did not really imporve the user experience, so I have simplified how master and user keybindings are activated.

Reviewers: 

Pull Request: #74
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant