Skip to content

v2.1.2 — Resume detection robust for arbitrary user projects

Choose a tag to compare

@M-Pineapple M-Pineapple released this 25 Apr 09:50
· 7 commits to main since this release

Patch on top of v2.1.1

Worth shipping because new users won't all phrase their projects the same way. v2.1.1 covered "continue with my weather app" cleanly, but two real phrasings still slipped through:

continue with my Python project called cat on a mat
continue with the work I was doing on the auth refactor

Both kept their noisy preamble ("Python project called", "the work I was doing on") through cleanup, so the fuzzy matcher saw a long unrecognisable phrase.

Fix

fish-side cleanup (__nl_enter): strip everything up to and including the called / named / labelled / labeled connector. Now handles:

Input Becomes
my Python project called cat on a mat cat on a mat → matches cat-on-a-mat
my JavaScript app named weather-tracker weather-tracker
my Rust crate called serde-helpers serde-helpers

Python-side fuzzy match (seashell-sessions): add the inverse substring rule — when the project label is a substring of the (normalized) query. Catches verbose phrasings where the label is buried inside surrounding prose:

Input Match Reason
the work I was doing on the auth refactor auth-refactor label_norm \"authrefactor\" ⊂ query_norm
my new awesome dashboard project dashboard label_norm \"dashboard\" ⊂ query_norm

Score for the inverse rule is 70 (vs 95 for direct match), so direct matches always win when both apply. A 4-character minimum on label_norm prevents tiny labels like ai or cv from matching half of all queries.

Synthetic 8-project test passes

weather app                              → weather-app          (95)
dotfiles                                 → dotfiles             (100)
cat on a mat                             → cat-on-a-mat         (95)
auth refactor                            → auth-refactor        (95)
work I was doing on the auth refactor    → auth-refactor        (70)
MyAwesomeDashboard                       → MyAwesomeDashboard   (100)
api gateway                              → api-gateway          (95)
project x  (after \`project\` strip)        → project-x            (75)

🍍 — full diff: v2.1.1...v2.1.2