Skip to content

Add 'Search Bitwarden Vault Items' Extension#67

Merged
PitNikola merged 24 commits intoraycast:mainfrom
pomdtr:bitwarden
Oct 25, 2021
Merged

Add 'Search Bitwarden Vault Items' Extension#67
PitNikola merged 24 commits intoraycast:mainfrom
pomdtr:bitwarden

Conversation

@pomdtr
Copy link
Contributor

@pomdtr pomdtr commented Oct 17, 2021

Description

Add a bitwarden extension allowing to search items from your vault.

Type of change

  • New extension

Screencast

image

Checklist

@PitNikola PitNikola added the new extension Label for PRs with new extensions label Oct 17, 2021
Copy link
Contributor

@PSalant726 PSalant726 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a really nice first pass! Most of my comments are around UX, but one big code-related takeaway is that we should never be calling a bw CLI command inline within one of the extension's commands. It would be much safer and more reusable to instead create a new file containing a legitimate bw SDK, that exports functions wrapping those CLI calls. Let me know if that's unclear, or if you want some help getting started on an implementation for that.

"commands": [
{
"name": "list",
"title": "Search Vault Items",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"title": "Search Vault Items",
"title": "Search Vault",

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree with Phil, "Search Vault" sounds better, items doesn't add much value here.

pomdtr and others added 9 commits October 18, 2021 23:38
Co-authored-by: Phil Salant <PSalant726@users.noreply.github.com>
Co-authored-by: Phil Salant <PSalant726@users.noreply.github.com>
Co-authored-by: Phil Salant <PSalant726@users.noreply.github.com>
Co-authored-by: Phil Salant <PSalant726@users.noreply.github.com>
Co-authored-by: Phil Salant <PSalant726@users.noreply.github.com>
Co-authored-by: Phil Salant <PSalant726@users.noreply.github.com>
@pomdtr pomdtr marked this pull request as ready for review October 19, 2021 10:04
@pomdtr pomdtr changed the title Add Bitwarden Extension Add 'Search Bitwarden Vault Items' Extension Oct 19, 2021
Copy link
Member

@PitNikola PitNikola left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pretty cool! Thanks for building it @pomdtr!
@PSalant726, thanks for reviewing the code and giving helpful suggestions. Highly appreciate it since I'm not Bitwarden user myself.

I suggested some minor nits and we are ready to merge afterwards.

"commands": [
{
"name": "list",
"title": "Search Vault Items",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree with Phil, "Search Vault" sounds better, items doesn't add much value here.

@pomdtr
Copy link
Contributor Author

pomdtr commented Oct 19, 2021

Done! Thanks a lot to both of you for the review.

@pomdtr pomdtr requested a review from PitNikola October 19, 2021 21:36
@PSalant726
Copy link
Contributor

If it's ok with everyone, I would really like to review this again before it gets merged. I should have a chance tomorrow.

@pomdtr
Copy link
Contributor Author

pomdtr commented Oct 19, 2021

If it's ok with everyone, I would really like to review this again before it gets merged. I should have a chance tomorrow.

Go ahead, there is no rush :)

@PitNikola
Copy link
Member

@PSalant726, ping me when you're done. I'm gonna assign this PR to you.

Copy link
Contributor

@PSalant726 PSalant726 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome work!! Thanks again for sticking with this! Most of my comments this time around are related to code style and clarity.

Comment on lines 3 to 4
"title": "Bitwarden Vault",
"description": "Access your Bitwarden vault from Raycast. Requires installing the Bitwarden CLI separately.",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"title": "Bitwarden Vault",
"description": "Access your Bitwarden vault from Raycast. Requires installing the Bitwarden CLI separately.",
"title": "Bitwarden",
"description": "Access a Bitwarden account. Requires installing the Bitwarden CLI.",

Comment on lines 8 to 12
"keywords": [
"bitwarden",
"secrets",
"passwords"
],
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"keywords": [
"bitwarden",
"secrets",
"passwords"
],
"keywords": [
"bitwarden",
"manager",
"password",
"passwords",
"security"
],

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added the security keyword. I am don't think the duplicate password/passwords keywords bring anything (keywords bring additional matches to the root search).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If anything, password should be included, not the plural. I believe both are valuable.

"type": "password",
"required": true,
"title": "Client ID",
"description": "The client_id value seen in the My Account section of a Bitwarden web vault. More info:\nhttps://bitwarden.com/help/article/personal-api-key/",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"description": "The client_id value seen in the My Account section of a Bitwarden web vault. More info:\nhttps://bitwarden.com/help/article/personal-api-key/",
"description": "The client_id value seen in the My Account section of a Bitwarden web vault. More info: https://bitwarden.com/help/article/personal-api-key/",

It's unclear to me if the \n will be rendered as expected. Maybe we just make this one long line of text and let native formatting handle things wherever this appears?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree!

"type": "password",
"required": true,
"title": "Client Secret",
"description": "The client_secret value seen in the My Account section of a Bitwarden web vault. More info:\nhttps://bitwarden.com/help/article/personal-api-key/",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"description": "The client_secret value seen in the My Account section of a Bitwarden web vault. More info:\nhttps://bitwarden.com/help/article/personal-api-key/",
"description": "The client_secret value seen in the My Account section of a Bitwarden web vault. More info: https://bitwarden.com/help/article/personal-api-key/",

Same as above.

pomdtr and others added 2 commits October 21, 2021 21:55
Co-authored-by: Phil Salant <PSalant726@users.noreply.github.com>
@PitNikola
Copy link
Member

All resolved now? Happy to merge?

@pomdtr
Copy link
Contributor Author

pomdtr commented Oct 22, 2021

I still have some comments not resolved. I'll ping you when I'm done (probably during the weekend).

@PSalant726
Copy link
Contributor

@PitNikola Not quite. There are still several comments from my most recent review that should be addressed before this gets merged.

@pomdtr
Copy link
Contributor Author

pomdtr commented Oct 23, 2021

@PitNikola the extension is now ready for release!

@PSalant726 Thanks for the review. I have handle most of your feedback from the second review. There are still some unresolved comments, but I feel like the extension is in a good enough state for a first release.

Copy link
Contributor

@PSalant726 PSalant726 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@PitNikola This is GTM for now. I'll open a PR to address some cleanups and new features later.

@PitNikola
Copy link
Member

Legendary review! 💪

@PitNikola PitNikola merged commit e6724a9 into raycast:main Oct 25, 2021
@qeude
Copy link
Contributor

qeude commented Oct 25, 2021

Hi 👋🏼
Not sure it's the right place to report an issue about the extension, I've been following the evolution of this extension since the release now.
And I'm not able to connect to my account. I've set both my api_key and api_secret but it keeps ask me for my master password then it fails to authenticate. :(
I'm using 2FA authentication which could be the problem ?

@guga4ka
Copy link
Contributor

guga4ka commented Oct 25, 2021

@qeude as a workaround you can authenticate through cli bw login, since command uses cli it should work

@pomdtr
Copy link
Contributor Author

pomdtr commented Oct 25, 2021

Hi 👋🏼
Not sure it's the right place to report an issue about the extension, I've been following the evolution of this extension since the release now.
And I'm not able to connect to my account. I've set both my api_key and api_secret but it keeps ask me for my master password then it fails to authenticate. :(
I'm using 2FA authentication which could be the problem ?

It is probably related to 2FA, I did not test this usecase. We could maybe group all bug reports to a single issue.

@PSalant726
Copy link
Contributor

@qeude @guga4ka The extension is definitely still missing some desired features. This release was meant more to create a canonical location for all Bitwarden-related Raycast API integrations, as opposed to a "1.0.0" release of a stable version. It's still a work in progress, and I like @pomdtr 's idea of opening an issue (and tagging us both) to track bugs, feature requests, etc.

FezVrasta pushed a commit to FezVrasta/extensions that referenced this pull request Nov 24, 2021
* Add Search Vault Items command

* Add generate password command

* Add ability to create a new send

* share env var between commands

* Add installation instructions, and troubleshooting guide on failure

* fix send command

* remove generate and send commands

* update manifest and dependencies

* Update extensions/bitwarden/src/components.tsx

Co-authored-by: Phil Salant <PSalant726@users.noreply.github.com>

* Update extensions/bitwarden/src/list.tsx

Co-authored-by: Phil Salant <PSalant726@users.noreply.github.com>

* Update extensions/bitwarden/src/list.tsx

Co-authored-by: Phil Salant <PSalant726@users.noreply.github.com>

* Update extensions/bitwarden/src/list.tsx

Co-authored-by: Phil Salant <PSalant726@users.noreply.github.com>

* Update extensions/bitwarden/src/utils.ts

Co-authored-by: Phil Salant <PSalant726@users.noreply.github.com>

* Update extensions/bitwarden/src/list.tsx

Co-authored-by: Phil Salant <PSalant726@users.noreply.github.com>

* Implements most of @PSalant726 suggested changes

* Use a tree for json representation

* Add a bitwarden API wrapper

* sync -> syncItems

* Allow to disable favicons fetching (disable by default)

* Update extension and command title

* convert property names to TitleCase

* Update extensions/bitwarden/src/search.tsx

Co-authored-by: Phil Salant <PSalant726@users.noreply.github.com>

* first corrections based on @PSalant726 review

* improve code readibility and favicon fetching

Co-authored-by: Phil Salant <PSalant726@users.noreply.github.com>
@PitNikola
Copy link
Member

@PSalant726, @pomdtr, this question popped up on Twitter. Could you please help me with understanding whether this is an expected behavior, and whether it is potentially an issue?

For instance, it seems that once it has been opened the Vault doesn't automatically locks itself. Can this become a potential security breach?

@PSalant726
Copy link
Contributor

I replied on Twitter. To close the loop here: it's correct that the vault does not auto-lock based on any system event (ex. "sleep" or "screen saver"), but that's because of the nature of Raycast and extensions. Raycast does not support long-lived processes that can monitor/listen for those events, and execute scripts when they occur (nor do I believe it should). Instead, there is a lock-vault.ts script that enables a user to manually lock an unlocked vault. This is undoubtedly less secure than an automatic lock mechanism, but it's no less secure than leaving your entire system unlocked when you walk away from your computer, and it's the best we were able to do within the limitations of Raycast.

@pomdtr
Copy link
Contributor Author

pomdtr commented Jan 20, 2022

The extension use the same logic as the cli. I store the session token, and check if it is still valid when the user launch the extension. If it is not the case, the extension ask the user for a password.

@pomdtr
Copy link
Contributor Author

pomdtr commented Jan 20, 2022

We could add an artificial auto-lock feature by storing when the last session token was generated.

@PSalant726
Copy link
Contributor

@pomdtr

We could add an artificial auto-lock feature by storing when the last session token was generated.

In general I think this would be nice to add, as long as it were adequately configurable. Still I don't think it completely addresses the concern from the tweet. My assumption is that the user is attempting to find feature-parity between the official Bitwarden apps and this Raycast extension. We simply won't be able to expire a CLI token based on system events unless the macOS keychain supported it. Even then, that would only affect the validity of the token with respect to the extension. If a user were to submit CLI commands directly, and include the "expired" token, those commands would still succeed because Bitwarden itself has not deemed the token invalid.

raycastbot added a commit that referenced this pull request Jul 9, 2025
* Update easydict extension

- docs: update changelog (#72)
- chore: add maxchang3 as a contributor (#71)
- Update dependencies and add DeepLX support (#70)
- chore(deps): bump axios from 1.7.4 to 1.8.2 (#69)
- feat: support gemini translate (#68)
- docs: update changelog
- feat: replace api key textfield with password
- fix: set bing retry count to 3, avoid too much retry request
- fix: remove old Youdao translate API
- fix: improve error handling
- fix: do not encode text for Youdao translate
- chore: npm audit fix
- fix: use new Youdao webTranslate API
- chore(deps): bump cross-spawn from 7.0.3 to 7.0.6 (#67)
- docs: update changelog
- Revert "chore: add two issue templates"
- Revert "chore: enable to open new issues"
- fix: bing host is incorrect if check ip failed
- docs: update changelog
- docs: update changelog
- feat: support AR language for DeepL
- docs: update changelog
- perf: set gpt-4o-mini as default OpenAI model
- chore: update star notification action
- chore(deps): bump axios from 1.6.0 to 1.7.4 (#64)
- chore: update star notification action
- refactor: remove support for Youdao API translate
- fix: openai API URL is null will cause crash
- fix: ignore first inputChange event, fix for #62 (#63)
- Update follower-change-notification.yml
- chore(deps-dev): bump braces from 3.0.2 to 3.0.3 (#60)
- chore: add two issue templates
- chore: enable to open new issues
- perf: use Authorization DeepL-Auth-Key instead of auth_key
- perf: improve prompt, add few-shot
- perf: improve OpenAI prompt
- perf: remove unused OpenAI function
- feat: add custom DeepL endpoint, remove wild DeepL keys (#54)
- Merge pull request #55 from HernandoR/fear-api-update
- feat: update raycast api 1.62->1.68
- Merge pull request #53 from izualx/main
- Update README.md
- Merge pull request #52 from tisfeng/dependabot/npm_and_yarn/follow-redirects-1.15.6
- chore(deps): bump follow-redirects from 1.15.5 to 1.15.6
- perf: revert to openAIAPIURL, avoid breaking user config
- Merge pull request #51 from rookiezn/support-openai-http-url
- perf: able to set custom OpenAI model
- fix: support http protocol for custom OpenAI api url
- Merge pull request #50 from tisfeng/dependabot/npm_and_yarn/follow-redirects-1.15.5
- chore(deps): bump follow-redirects from 1.15.1 to 1.15.5
- chore: add @typescript-eslint/eslint-plugin@latest --save-dev
- docs: update changelog
- perf: update release note
- Merge branch \'aidevjoe-main\'
- perf: show error toast if serive has no api key
- perf: remove default API keys
- perf: remove Apple language detect
- feat: add enable Baidu language detect option
- chore: migrate 1.50.0
- chore: migrate 1.48.8, update .eslintrc.json
- chore: npx @raycast/migration@latest
- perf: add Baidu as default detection
- perf: add Dutch and Ukrainian for Apple Translate
- Merge pull request #49 from tisfeng/dependabot/npm_and_yarn/axios-1.6.0
- chore(deps): bump axios from 1.3.4 to 1.6.0
- Merge pull request #48 from tisfeng/dependabot/npm_and_yarn/find-exec-and-play-sound-1.0.3
- chore(deps): bump find-exec and play-sound
- Merge pull request #47 from tisfeng/dependabot/npm_and_yarn/crypto-js-4.2.0
- chore(deps): bump crypto-js from 4.1.1 to 4.2.0
- chore: update follower-change-notification
- chore: update star-fork-notification
- chore: update star-fork-notification
- docs: update README
- Merge pull request #46 from liyaodong/main
- feat: allow to customize OpenAI API URL
- fix: rename issue template
- fix: rename issue template
- chore: update issue templates, remove others template
- chore: update issue templates, remove bug and feature template
- perf: if only enabled one detect service, use it directly
- chore: update issue templates
- perf: remove redundant swift file
- fix: remove redundant Package.swift
- perf: add Package.swift
- fix: use executable file instead of swift source file
- docs: update changelog
- docs: update README and changelog
- perf: add test AES link
- docs: update changelog
- docs: update README
- Merge pull request #41 from aidevjoe/main
- perf: use execa to run swift directly
- perf: add more recognitionLanguages in Swift
- chore: upgrade yaml, npm audit fix
- perf: improve code
- fix: improve OCR Translate
- feat: add OCR recognition
- Merge pull request #40 from hezhizhen/typo
- chore: add spell checker to CI and fix existing typos
- docs: update changelog
- fix: openai cannot work if no agent, so get agent first
- fix: openAI translation may miss first char
- perf: remove default Volcano app key
- docs: update changelog
- Merge pull request #37 from ZhenpengWu/main
- fix: check if OpenAI service is enabled in preference before calling OpenAI API
- docs: update changelog
- chore: update issue templates
- docs: update README
- perf: turn off some translation services by default
- perf: stop loading when OpenAI error
- perf: improve prompt
- perf: disable OpenAI by default
- perf: improve translat prompt
- fix: handle OpenAI error ECONNREFUSED
- docs: update README
- docs: update README
- perf: improve language detect, disable Apple detect
- perf: improve prompt
- perf: improve chat quote handling
- perf: try to remove stream quotes
- perf: improve chat prompt
- perf: improve response error toast
- perf: remove default Caiyun token
- perf: show up to 6 exam tags
- fix: volcano interface property name is wrong
- perf: remove loading toast
- docs: update README
- docs: update README
- docs: update package.json
- fix: rename file
- docs: update release screenshot
- docs: update release screenshot
- docs: update release note
- perf: add searching and finished ✅ emoji
- perf: improve OpenAI error toast
- perf: improve detect language speed
- perf: use proxy for OpenAI by default, remove quote
- feat: support getting OpenAI result by stream
- perf: add DeepL support for Korean and Norwegian
- feat: add support for OpenAI translate
- perf: update axios to 1.3.4
- perf: update Node version to 18.10, update dependencies, update google-translate-api to 9.1
- docs: update README
- perf: add support for fallbackText
- docs: update changelog
- fix: youdao web dict meta may be nil
- perf: remove log
- perf: use user input text instead of selected text when using Fallback Command
- docs: update README
- docs: update README
- docs: update README
- chore: update workflows
- docs: update release note
- chore: update workflows
- chore: update workflows
- fix: get bing web translate token failed
- docs: update release note
- perf: try to get system proxy from env first
- fix: baidu Burmese language code is wrong
- docs: update README
- docs: update README
- docs: update README
- docs: update README
- perf: add disabled console.log flag
- fix: disable console.log in production env
- docs: update README image
- chore: update repo icon
- Revert "chore: improve multiple string"
- chore: improve multiple string
- Revert "chore: improve multiple string"
- chore: improve multiple string
- chore: use <p> instead of <br>
- chore: update workflows
- chore: update workflows
- chore: fix workflows
- chore: fix workflows
- chore: revert
- chore: fix multiple line string error
- Revert "chore: fix multiple line string error"
- chore: fix multiple line string error
- chore(workflows): improve star-fork-notification
- chore(workflows): improve star-fork-notification
- chore(workflows): star-fork-notification
- docs: update changelog
- docs: update metadata
- perf(UI): improve list accessory tag color
- fix: searchText is empty when acivated from arguments
- docs: update Eudic icon
- perf(UI): use list tag accessory to show exam type
- chore: update raycast/api to 1.45.0
- perf(UI): update Eudic icon
- chore: update @types/react to 18.0.25
- chore: update @raycast/api to 1.43
- docs: update changelog
- docs: update release note
- perf: improve release note info
- fix: auto get a new deepL key if quota exceeded
- chore: add Icon for file
- chore: change npm registry to https, npm update some  package
- chore: fix commintlint error
- fix: update French say voice
- docs: update README
- chore: update @raycast/api and @types/react
- docs: update changelog
- fix: arguments no longer empty but its properties empty cause crash
- docs: update changelog and release note
- fix: action list key error
- docs: update README
- docs: update README
- refactor: improve show query webItem action
- docs: update metadata
- docs: update changelog
- docs: update changelog and release note
- perf: improve language detect, mark two identical language as prior
- feat: add support for new 25 languages including Ukrainian, total support for 48 languages
- perf: improve getting Youdao web cookie
- perf: change delay get system proxy time to 3000ms
- feat: support arguments for Easydict
- feat: add open web query in detail page
- docs: update README
- perf: improve translating multi-line text show details markdown
- perf: improve remove self html tag function
- feat: add a `Copy Text` action on show more details page
- docs: update package.json
- perf: change to show `Open in Eudic` first if Eudic is installed by default
- fix: unexpected proxy error, use hpagent instead of https-proxy-agent
- chore: update agent-base to 6.0.2
- style: improve code
- docs: update README
- docs: add use with PopClip
- perf: change to keep two phonetic if word has
- docs: update changelog and release note
- perf: handle no cat and no def case, eg 艾
- perf: improve modern Chinese dict subsense and no cat case
- perf: improve modern Chinese dict dot color
- perf: improve modern Chinese dict markdown, handle subsense
- perf: improve modern Chinese dict details markdown
- perf: improve Youdao Chinese phonetic
- perf: change to always display show more details
- perf: add show Copy Text first option, add shortcut for web query action
- perf: improve modern Chinese dict detail markdown
- feat(UI): add Youdao modern Chinese dict
- fix: linguee unfeatured show more details incorrectly
- feat: use proxy in Linguee by default
- fix: youdao web dictionary guess language may be incorrect
- perf: cancel delayed proxy query if input is cleared
- perf: improve playing word audio, change to use speechUrl first
- fix: improve ts array type
- perf: improve show more details
- perf: improve word phonetic display
- fix: youdao dict miss some word phonetic, eg. record
- docs: change google.cn to google.com
- docs: update README
- docs: update README
- docs: update README
- docs: update changelog
- docs: update package.json
- perf: improve language detect
- perf: improve handling detect API list, remove Google detect
- chore: try to fix greetings.yml
- chore: update greetings.yml
- perf: when enable system proxy, do not delay Google request
- perf: change delay query proxy time to 600ms
- perf: improve getting system proxy agent
- perf: delay query Google and DeepL with proxy
- fix: get system proxy cause slowdown
- fix: json.stringfy httpsAgent and parse can cause error
- perf: change to use Google tld com and proxy by default
- perf: turn on Volcano translate by default
- docs: update README and changelog
- docs: update metadata
- perf: improve Linguee Wikipedia type display
- perf: change to use Volcano https
- perf: improve translation detail display
- perf: improve Linguee check text is word
- fix: linguee wikipedia cannot show more detail
- perf: improve show more detail markdown
- style: rename appleDetectLangChineseName
- perf: add default Volcano access key
- chore: update @raycast/api to 1.40.0
- docs: update package.json
- docs: update README
- docs: add github issue template
- perf: use file-type to check wav audio file
- docs: update README
- chore: update github greetings
- perf: use execa instead of exec
- perf: if downloaded file is wav formate, try covert to m4a
- perf: return is Chinese IP if check IP API throw error
- perf: only use enabled detect API, except Google and Bing
- perf: improve language detect
- fix: volcano detection return youdaoLangCode is wrong
- perf: change to use lowercase word Youdao web audio
- docs: update README
- perf: improve language function names
- perf: use Samantha instead of Alex as English say command
- feat: add show Volcano web translate top  action
- feat: add Volcano language detect
- feat(UI): add Volcano translate display
- refactor: improve Volcano generate sign API
- fix: set defaultMaxListeners to 15
- Merge branch \'baidu-translate\'
- feat: test Volcano translate API
- perf: improve show more detail markdown
- feat: add shortcut for showing more detail
- perf: set Youdao Baike text language to Chinese
- perf: improve Chinese and English language code usage
- feat: add show detail action
- perf: show Youdao dict when has baike or wikipedia
- docs: update release note
- perf: rename LanguageItem language code
- perf: turn off DeepL and Baidu translate by default
- perf: change axios timeout to 15s
- docs: update README extension icon
- docs: update README
- Merge pull request #19 from Jax0rz/main
- Update play audio icon
- 规范图标大小和风格
- Update extension icon with a better look and style with Raycast standard.
- fix: get Youdao web cookie may fail, casue crash
- perf: change axios default timeout from 15s to 10s
- perf: improve language detect
- docs: update README
- docs: update README
- docs: update README
- docs: update README
- perf: improve Youdao dictionary show empty entry condition
- perf: change Apple translate delay time to 1.0s
- docs: update package.json
- docs: update README and changelog
- perf: add token for getting ip info
- fix: when switch proxy, bing translate may encounter error
- docs: update README and changelog
- fix: when deepL get error code 456, return incorrect promise
- fix: hide Youdao translate when use it as dictionary translation
- perf: change default perferred languages
- perf: stop Apple detection temporarily
- chore: upgrade @raycast/api to 1.39.2
- fix: apple translate Chinese-Traditional error
- perf: improve langauge detection accuracy when disable speed first
- docs: update README
- feat: add enable Bing translate preference option
- feat: add Bing language detection
- feat(UI): add Bing translate section
- perf: improve to get bing config when fails
- perf: change bing token expiration from 10 to 5 min
- docs: update package.json
- perf: improve if eles condition in setup()
- perf: if bing translate result is empty, check ip and tld, then request again
- perf: google tld use preferred language check first
- perf: if enabled proxy, wait for getting system proxy and get selected text before request
- refactor: improve get and update ip info, improve bing tld
- perf: improve language detect last fail handing
- feat: add bing web translate API
- perf: add isChina to queryWordInfo
- fix: detect language resovle undefined incrorrect condition
- fix: enabled Youdao translate but not star requesting
- fix: stop Apple translate if has cleared query
- perf: improve word audio, use Youdao web audio first
- perf: improve language detect
- perf: separate Youdao dictionary and translation request
- perf: improve playing audio
- perf: improve Youdao web translate cookie
- perf: improve download word audio, use Youdao type=2 from JSON
- perf: delay auto playing word audio, avoid blocking UI
- style: improve code
- perf: improve language detect
- perf: improve abort Apple script timeout
- fix: enable Youdao API translation
- perf: improve Apple scripts
- refactor: improve language detect, remove local detect timer
- perf: improve run execa apple script
- refactor: use execa improve exec apple scripte
- fix: show error toast may crash
- refactor: improve detect language function, use Promise instead of callback
- feat: add preferences language detection speed first option
- perf: improve language detection
- perf: improve Baidu language detect
- perf: improve Tencent language detect
- perf: improve axios config
- perf: improve extension startup response speed, -0.5s
- perf: improve language detection
- perf: do not use Apple language detect, when preferred languages contain English
- feat: add web Baidu language detect API
- docs: update changelog
- docs: update README and changelog
- fix: linguee auto play word audio
- perf: improve detect three identical valid language
- perf: improve query word info phonetic display
- feat: add Linguee phonetic and exam types
- refactor: improve md5 function
- fix: youdao web translate may return html error
- perf: improve wikipedia dot color
- feat: test Baidu web translate API
- docs: update changelog
- feat: only English word can automatically play audio
- refactor: improve list display type judgement
- feat: add Youdao dict wikipedia digest type
- perf: improve Youdao word audio, change to use type=0
- feat: add Youdao dictionary baike type
- perf: default turn on auto play audio
- fix: change json file format
- docs: update changelog
- perf: do not show error toast when finish or cancel exec command
- perf: return reject(undefined) when cancel request
- perf: if exec already finished, do not kill and throw error
- fix: handle Tencent translate unsupported language error
- perf: kill process if exec shortcut timeout
- docs: update changelog
- perf: move `Open In Eudic` to first action
- fix: youdao web translate may have multiple results
- perf: improve translation from-to section title display
- docs: update Youdao dictionary demo json
- perf: use Youdao dictionary as first sort order
- docs: update README
- docs: update package.json and README
- feat: enable sort dictionary and translation order
- perf: improve api detect language, three api mark as true
- perf: do not request Youdao translate when has enabled Youdao dictionary
- perf: only show Youdao dictionary when has Details section
- refactor: improve check dictionary or translation query type
- perf: check Youdao web translate from-to language
- perf: improve format check if Youdao dictionary has entries
- perf: only query text is word enable play audio automatically
- fix: show Youdao web translation only key is the same
- fix: add check Youdao Chinese --> English isWord
- perf: improve Youdao dictionary explanation display
- fix: filter explanation empty string text display
- perf: improve update Linguee translation
- feat: use Youdao translation result as Youdao dictionary translation
- perf: improve query Youdao dictionary function
- perf: improve request type error toast
- fix: youdao Chinese --> English explanation show incorrectly
- perf: improve format Youdao web dict model
- style: improve code
- perf: improve Youdao dict forms display
- perf: improve one line translation display
- feat: use Youdao dictionary Get api ✨
- fix: handle Youdao web dict invalid result: const
- fix: youdao translation one line break display
- perf: improve Youdao dictionary translation display
- fix: youdao web-translation may be undefined
- perf: change Youdao translation from array to string
- feat: add Youdao Chinese -> English dictionary
- feat: add new Youdao web dictionary api
- feat: use new Youdao web translate
- chore: update github star workflow
- chore: update github star workflow
- feat: test Youdao web translate api
- chore: update @raycast api to ^1.39.0
- perf: change lib to es2021
- perf: improve check text is word
- perf: update check is word for playing word audio
- perf: check queryWordInfo is a word
- perf: add Youdao translated text too long toast handling
- fix: set max trim text length to 1830, for Google web translate
- perf: remove default Youdao appId and appKey
- docs: update README
- docs: update README
- docs: update README
- docs: update README
- perf: only query Youdao dictionary when query text is word
- perf: do not request Linguee if query text is not word
- feat: add Youdao ai demo api
- docs: update README
- docs: update README
- docs: update release note, style code
- perf: only two api detect idential language, and it is preferred, use it
- perf: if Baidu detect language is confirmed and perferred, use it
- perf: update release note web url
- docs: update README
- fix: new version release prompt flicker when changing list focus
- docs: update README and preference
- docs: update release note
- docs: update README
- docs: update README
- docs: update README and changelog
- docs: update README and docs
- docs: update README
- fix: duplicate section key cause section title render incorrectly
- refactor: improve Youdao dictionary display section data
- style: rename file
- docs: update REAMDE
- docs: update REAMDE
- refactor: improve transform error to errorInfo
- docs: migrate docs to blob from wiki
- style: add request cost time
- style: comment debug log
- style: rename enableSelectTargetLanguage
- refactor: slim dataManager, move function to utils
- refactor: slim dataManager
- perf: improve dataManager structure
- perf: change abortController to optional
- refactor: change to use axios default signal
- perf: add 15s timeout for axios default config
- perf: add view long text log for debuging
- docs: add parse reference
- perf: change Portuguese google id to pt
- perf: move check if preferred languages conflict to compenents
- perf: change useEffect searchText to inputText
- style: rename interface
- refactor: add wordInfo propery for RequestTypeResult
- perf: add emoji to translation section title in detail page
- perf: clean code
- perf: handle languages not supported by Apple in advance
- style: rename LanguageItem properies name
- perf: supplement google language id
- perf: improve conversion between detected language id and youdao language id
- perf: use detected language instead of auto source in Linguee
- perf: improve check if preferred languages conflict
- style: remove comments
- perf: preferred to use Google language detect
- refactor: move delay query timer to dataManager
- perf: improve return List structure
- perf: use Hongkong flag as traditional Chinese emoji
- fix: select target language manually casuse cancel query
- perf: stop query if text is cleared during language detection
- refactor: move queryText() to dataManager
- refactor: enable cancel Apple translate
- perf: enable cancel Tencent translate request
- feat: use axios to request Tencent translate, sign manually
- feat: add Baidu translate web action
- refactor: improve eudic web url
- fix: web url is wrong
- feat: use new Youdao dictionary web
- refactor: improve access to web url
- perf: improve language detect, preferred to use API detect
- feat: add Google language detect
- fix: detect language tencent and baidu type are wrong
- perf: improve youdao error handle
- refactor: improve show request error toast
- perf: preferrd to use api language detect
- style: improve code
- perf: enable Google RPC use system proxy
- feat: add Google RPC translate
- fix: get youdao language id of apple detected language
- perf: improve auto select target language
- perf: improve google tld
- refactor: improve detect language, add support for more Apple system language
- fix: linguee web dictionary url is wrong
- feat: apple detect language support English system language
- feat: add Baidu auto detect language
- perf: give priority to franc detect then simple detect language
- perf: improve Linguee language support
- perf: use undefined instead of null
- perf: show the first translation fromTo language title
- perf: only when linguee word item is empty, use query word fromTo language
- fix: linguee word item is empty cause crash
- fix: remove () regex is incorrect
- perf: add example translation pos
- perf: use emoji in section language title
- perf: use country flag emoji as language icon
- perf: move open in web to first
- perf: change language detect type to enum string
- perf: add get system proxy error toast
- perf: clear query record  list when clear query
- perf: improve before querying loading state
- perf: improve request loading state
- fix: handle cancel request
- fix: deepL translation do not display
- perf: use DeepL result as Linguee translation
- refactor: improve query text function structure
- feat: show current query type open in web at the top action
- perf: do not update when linguee result is empty
- perf: query multiple lines of text, display one line
- refactor: use cheerio to parse google translate
- fix: google URIError: URI malformed
- refactor: adjust query word info structure
- perf: improve display section title
- perf: dictionary section title add fromTo language
- fix: get language of two except Chinese
- perf: clear result before new input query
- perf: add Linguee German tag_area
- refactor: improve request params
- feat: add linguee web dictionary action
- perf: improve get linguee web url
- perf: improve cancel request and clear query
- refactor: use AbortController to cancel axios request
- perf: filter null query result
- feat: add linguee audio url, play word audio automatically
- perf: improve French tag forms text
- perf: improve French forms
- perf: use user deepL key first
- perf: improve deepl get a valid key
- perf: improve youdao dictionary and translate display
- feat: automatically get a valid deepL key
- perf: improve code
- fix: handle deepL request 456 error
- fix: resolve merge conflicts
- feat: add enable system proxy switch option
- refactor: improve code structure
- refactor: adjust types structure
- fix: change target language cause crash
- fix: show detail display incrorrently
- refactor: check if need to show detail according to result
- perf: improve linguee request error toast
- perf: improve dictionary separator display
- perf: change to only sort translation order
- perf: change dictionary section title
- perf: improve dictionary section title separator display
- refactor: sort services order
- refactor: separate the translation request
- perf: improve dictionary section title display
- perf: enable linguee switch
- refactor: separate Youdao request
- refactor: improve Youdao data structure
- refactor: swtich to class to optimize data structure
- refactor: improve list item structure, fix Youdao display
- perf: change special forms icon color
- perf: separate the html parsing function
- perf: merge tag and type to frequencyTag
- perf: improve query selector multiple class
- docs: update changelog
- docs: update README
- docs: update changelog
- docs: update changelog
- feat: add show open in eudic option; improve deepL error toast
- fix: open in eudic when downloading from web
- docs: update changelog and package docs
- docs: update package docs
- fix: response data is garbled when querying French word
- perf: add linguee French word translation example
- perf: improve linguee display
- fix: english \'good\' common type inrorrect display
- perf: improve French display, add tag forms
- perf: change default perferred languages
- perf: change linguee source language to auto
- perf: improve related words display
- perf: add linguee example pos
- fix: linguee no dictionary element cause crash
- perf: add linguee wikipedia
- perf: adjust unfeatured type color
- perf: change isWord to required
- fix: linguee display query word info language are wrong
- perf: add linguee almost always used type
- perf: show multiple example translations
- perf: add word item featured property
- perf: add linguee word audio url
- perf: add related word type
- style: clean up comments
- docs: update changelog
- perf: improve linguee display list type
- feat(UI): add colorful list icon for linguee dictionary
- fix: parse html from chinse error
- fix: search linguee from chinese to english
- feat: add http proxy agent
- perf: improve linguee dictionary
- perf: add examples
- feat: test linguee dictionary
- docs: update README
- docs: update changelog
- refactor: optimize web translation item
- fix: get wrong Eudic web url
- docs: upate README and changelog
- docs: update changelog
- docs: update README
- docs: update README and changelog
- perf: use google.cn if user ip is in China
- perf: change the perferred languages to required
- fix: youdao web translate language id is wrong
- feat: use different Goole Translate domain according to preference languages
- feat: add support for Google translation 🎉
- feat: test google crawler translate
- docs: update changelog
- docs: update changelog
- fix: only show release prompt once if need
- fix: handle Youdao reqeust exceptional error
- docs: update changelog
- docs: update README
- docs: update README and changelog
- perf: only query text is a word, show search Eudic and Youdao action
- feat: update raycast api to 1.38.0, use new icon
- refactor: improve web translation action
- feat: add deepL web translate action
- perf: improve input query experience
- perf: optimize code
- fix: action button frequently flick when rendering
- perf: remove action when input is empty
- fix: cancel update translation when deleting all input text
- docs: update README
- Merge pull request #14 from kxxoling/patch-1
- Fix links related to Bob
- chore: update github action
- chore: update github action
- chore: update github action
- docs: update README
- docs: update README
- chore: update star notification action
- chore: add github follower change notification action
- perf: handle tencent translation not supported language
- perf: improve the synergy of api and local language detect
- perf: add more apple detect languages
- perf: improve the sorting of translation results
- chore: update SECURITY
- perf: improve new release prompt
- docs: update README
- docs: update README
- style: clean code
- chore: add npm run build before git commit
- docs: update changelog and release log
- docs: update README
- docs: update README
- perf: change franc detect confirmed confidence from 0.6 to 0.8
- perf: improve translate error prompt
- docs: update README
- perf: support deepL pro key
- perf: improve user type translation order
- feat: support user set translation display order manually
- perf: clean code
- perf: improve deepL request error prompt
- feat: add deepL translate 🎉
- refactor: separate the crypto and default api keys file
- feat: test deepl translate api
- fix: repeatedly read selected text when input text is deleted to empty
- docs: update README
- docs: update README
- chore: use isfeng bot gmail to send email
- feat: add open command preferences action
- docs: update README
- chore: clean code
- chore: update action
- chore: change star link
- chore: fix env event name
- chore: set environment variable
- chore: use env.xxx to use
- chore: change to use env event name
- chore: update echo env use
- chore: try action env
- chore: use markdown link
- chore: update star or fork notification action
- chore: update star or fork notification action
- Revert "chore: update star or fork notification action"
- Revert "chore: update star or fork notification action"
- Revert "chore: update star or fork notification action"
- chore: update star or fork notification action
- chore: update star or fork notification action
- chore: update star or fork notification action
- chore: update star or fork notification action
- chore: update star or fork notification action
- chore: update star or fork notification action
- chore: update manual action
- chore: update manual action
- chore: update email username and password
- chore: change to use gmail
- chore: update actions
- chore: update manual action
- chore: update repo forked notification action
- chore: update repo forked notification action
- chore: add repo forked notification action
- docs: update README
- perf: improve input text query
- fix: when input text is empty, need to cancel previous request
- feat: add an Easter egg for using popclip to open easydict
- docs: update README and changelog
- perf: change assets image name, change git ignore case to false
- perf: improve release info, action icons
- docs: update README
- docs: remove not used images
- docs: update README
- docs: update README and changelog
- perf: clean code
- docs: update changelog
- fix: select target language action hide auto language
- perf: optimize code, add shell exec return child process
- perf: improve ActionRecentUpdate
- perf: improve release markdown display
- perf: improve new release prompt
- refactor: optimize ListActionPanel function
- feat(UI): add new release remind
- perf: improve debug log
- perf: adjust franc detect low confidence to 0.1
- fix: play result text sound alway paly query text bug
- perf: improve local language detect, use local detect when API detect over time
- perf: improve query selected text response speed
- perf: improve language detect
- perf: modify action titles, make more succinct and clear
- perf: improve local language detect
- perf: change franc detect criterion to confidence > 0.5
- fix: return wrong language id when use franc detect unconfirmed language
- fix: correct Arabic franc id typo, ara -> arb
- perf: improve local language detect when all API detect error
- refactor: improve local language detect accuracy with franc
- feat: add franc to detect language type
- docs: update README
- docs: update README
- docs: update README
- feat(UI): add list icons for different types of translations
- perf: improve request error handle and toast
- fix: apple translate error when input contain special char
- fix: handle error of tencent translate not support language
- perf: support apple translate auto detect supported language
- perf: only download word audio when need play sound
- fix: apple script param not allow single quote, replace with double quote
- perf: set max length of text to download youdao tts audio, 20
- perf: improve say command
- fix: when tencent language detect not support, use auto
- perf: improve api detect language accuracy
- perf: improve local chinese language detect
- feat: use apple translate when enabled
- perf: add file header annotaion, improve function comments
- refactor: separate language detect function
- feat: use apple language detect if enabled
- perf: improve play text sound
- perf: change to run shortcuts in background
- perf: if tencet detect language is not preffered language, then try use local detect
- fix: apple script parameter use escaped string
- perf: when afplay audio error, use say command
- perf: improve continuous input query, cancel previous request
- perf: improve youdao translation query failed error prompt
- fix: open youdao code url error
- perf: improve detect languge speed
- perf: improve local english text detect
- feat: add cacluate axios request cost time automaticly
- feat: add shortcuts apple translate
- feat: add shortcuts detect language
- perf: change to lower case query
- refactor: optimize easydict.ts structure
- chore: update workflows
- chore: update workflows
- chore: update workflows
- chore: add test workflows
- chore: update .github/workflows/greetings
- Merge pull request #9 from tisfeng/tisfeng-patch-2
- chore: add manual.yml
- Merge pull request #8 from tisfeng/tisfeng-patch-1-1
- chore: add greetings.yml
- docs: update README
- Create SECURITY.md
- docs: update README
- chore: add commitlint
- style: ignore .DS_Store, Icon/r
- chore: add husky and lint-stage
- doc: update README
- doc: update CHANGELOG
- style: run prettier
- fix: resolve warnings
- chore: add .eslintrc and .prettierc, resolve errors
- doc: update metadata screenshots
- feat: change copy action title to "Copy Text"
- fix: change maxLineLengthOfEnglishTextDisplay from 100 to 95
- style: clean code
- feat: only show word one phonetic
- fix: only English word use youdao web audio
- feat: improve the voice playback mode of query text
- fix: wrong word condition judgment
- feat: improve word pronunciation, give priority to Youdao online pronunciation
- feat: add word translation subtitle
- feat: improve the display of multiple translation results of simultaneous query
- feat: only automatic play audio when query text is word
- refactor: change the request method of query input text
- fix: enable automatic query selected text
- feat: add preferences for automatic pronunciation after querying words
- feat: change to use youdao api speakUrl to play sound
- feat: use crypto-js instead of crypto
- feat: change to use youdao audio
- feat: use iciba pronunciation, remove bing
- feat: add bing paraphrase
- feat: modify phonetic text
- feat: add iciba dictionary api
- feat: add bing phrase
- refactor: bing crawl parse
- feat: use us-phonetic and us speech
- feat: add bing crawl translate
- feat: move open in Eudic to first action
- fix: setTranslateDisplayResult called two times
- refactor: improve update translate display result fuction
- fix: hide list details when deleting input until empty
- style: change function or variable  names
- feat: modify the judgment condition of long text translation
- feat: change query clipboard text to query selected text
- feat: use encrypted appId and key to avoid platform key leak warning
- feat: show multiple translation result on the list detail
- feat: add title for list detail markdown
- feat: improved multi-line text translation display on list detail
- feat: show list detail when transaltion text too long
- feat: allow to turn on/off multiple translate APIs manually
- fix: baidu translation request error handling
- chore: remove @alicloud/alimt20181012
- refactor: optimize request error handling
- fix: tencent detect languagd id may different from its language id
- refactor: optimize multiple translation structure, add Tencent translate result
- feat: add Tencent translate API
- feat: gve priority to the Tencent language detect API to identify the input text language.
- feat: add tencent language detect API
- feat: according to the translation language, generate web translate link
- feat: set maxInputTextLength=2000
- fix: incorrect way to save and query clipboard records
- doc: update README
- doc: update README
- chore: run prettier
- chore: remove react-devtools
- Merge pull request #3 from tisfeng/dependabot/npm_and_yarn/follow-redirects-1.15.1
- chore(deps): bump follow-redirects from 1.14.7 to 1.15.1
- Create codeql-analysis.yml
- Merge pull request #1 from tisfeng/dependabot/npm_and_yarn/minimist-1.2.6
- Merge pull request #2 from tisfeng/dependabot/npm_and_yarn/ansi-regex-3.0.1
- chore(deps): bump ansi-regex from 3.0.0 to 3.0.1
- chore(deps): bump minimist from 1.2.5 to 1.2.6
- doc: update README
- chore: run npm, run prettier
- feat: use new default Youdao app key and secret
- doc: update README
- feat: add README
- feat: add extension screenshots in metadata
- feat: remove translation section title localize
- fix: correct the clipboard query interval from 1 minute to 10 minutes
- doc: update package.json
- refactor: adjust project code structure
- feat: add the judgment that Caiyun token is empty
- feat: add more request error prompts, such as app secret error
- feat: add preferences of Baidu and Caiyun translate app secret or token
- feat: remove preferece languages not supported by Baidu non-authenticated users
- style: clean unused code
- fix: get right request result error code
- style: change languageId to youdaoLanguageId
- feat: improve Details section title UI display
- refactor: optimize request error code handling
- feat: hide tooltip when displaying multiple translation types
- feat: add request error handle
- fix: handle Caiyun API not supported translation types
- feat: supplement the language ID of Baidu translation
- feat: use Use Chinese to display translation section titles when the preferred languages contain Chinese
- feat: improve List.Item tooltip prompt
- refactor: switch to new interface type; improve the UI of multiple translations
- feat: display multiple translation results
- feat: add Caiyun translate API
- style: modify interface names to Youdao prefix
- feat: add Baidu translate API
- feat: automatically display open in Eudic action if installed
- feat: add see educi translate results action
- feat: modify play text sound action icon
- feat: adjust feedback action order
- feat: add see youdao translate results action
- feat: change the default appId and appKey value
- feat: modify request error prompt
- feat: change preference appId and appKey type to password
- feat: change language preferemce to optional, default Chinese-Simplified and English
- feat: adjust the order of actions displayed in the action panel
- feat: add preference to decide to display target translation language
- feat: remove isAutomaticPaste preference
- feat: remove delayFetchTranslateAPITime preference
- feat: remove clipboardQueryInterval preference
- style: alter title and placeholder
- doc: alter preference descriptions
- feat: change Feedback url to Raycast extensions issues
- feat: change google translate from translate.google.com to translate.google.cn
- feat: add prefence for querying clipboard time interval
- style: alter descriptions
- style: change extension names
- feat: add List.Item icon tooltip, update @raycast/api to 1.35.1
- style: clean code
- feat: add tooltips
- feat: distinguish between WebTranslation and WebPhrase types
- feat: modify delay translate time, from 400ms to 1000ms, defalut 600
- feat: optimize copy text when copy web result
- feat: use diferent sound icon for light and dark mode
- feat: optimize input text display and search request
- feat: optimize the target language setting
- feat: optimize fromLanguage type detection of input text
- fix spell errors in some language names
- feat: give priority to use English and Chinese as fromLanguage,and then auto
- feat: use assets image as play sound icon
- refactor: optimize code structure
- feat: add word wfs, eg: goods,better,best
- feat: add word exam types accessory
- fix when text contain special char like "( cannot play sound
- style: clean code
- feat: set time interval for automatic query of the same clipboard word
- feat: modify automatic query clipboard as optional, default true
- style: clean up unused code
- run prettier
- feat: modify the say text truncate length from 16 to 40
- feat: change the default en-US say sound, from Alex to Samantha
- feat: look up clipboard text when first enter
- feat: make it easy to look up words in Eudic, simplify selected copy action
- change names
- feat: improve translation UI
- feat: support to open in Eudic and search the queried text
- change names
- fork: Add Delay Fetch Translate API Time Options
- modify name to Eudic
- fork parrot-translate
- Initial commit

* fix: remove incorrect '|' in Chinese punctuation regex

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* chore: update changelog

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* refactor(DeepLX): remove unnecessary Promise wrapper

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* fix(dataManager): remove unnecessary duplicate error check

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* fix(dataManager): remove unnecessary duplicate error check

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* chore(mock): set `private` to `true`

* fix(languages/DeepL): convert language codes to lowercase

* fix: update package-lock to avoid using third-party registries

* chore(changelog): remove PR references

* fix(eslint): remove personalized rules

* fix(lint): avoid short-circuit expressions

* fix: typo

* fix(eslint): remove `.eslintrc`

* Update CHANGELOG.md and optimise images

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: raycastbot <bot@raycast.com>
egeucak added a commit to egeucak/raycast-dicelab-extension that referenced this pull request Dec 6, 2025
- linted
- Remove dicelab notebook screenshot (raycast#93)
- package-lock and raycast generated
- Implement Raycast extension for Dicelab
- Plan Raycast extension with Rust dice DSL (raycast#91)
- Initialize Raycast extension structure
- Align branding with Dicelab (raycast#89)
- Update AGENTS.md
- Update AGENTS.md
- Move CodeMirror deps to production and drop manual screenshot (raycast#88)
- Fix not operator (!`) support in named roll PMF calculations (raycast#87)
- feat: display node group distributions in single combined chart (raycast#86)
- Add binary operators & (and), | (or) and ! (not) to the language (raycast#85)
- Add comprehensive tests and documentation for dice analysis fix (raycast#84)
- Implement named roll groups feature (raycast#83)
- Add files via upload
- Improve WebAssembly error messages with detailed information (raycast#81)
- Fix variable resolution in critical damage evaluation (raycast#80)
- Add comprehensive implementation plan for multi-line expression support (raycast#79)
- Fix dice variable assignment bug that caused re-evaluation on each reference (raycast#78)
- Complete tech debt migration: remove deprecated modules (raycast#74) (raycast#76)
- Optimize GitHub Actions workflows for faster build times (raycast#73)
- Restructure web folder for better organization and maintainability (raycast#71)
- Add files via upload (raycast#70)
- Implement comprehensive SEO optimization for Dicebook (raycast#69)
- Refactor app.js into modular components for improved maintainability (raycast#68)
- Add simple mode UI with toggle, examples, and PMF chart support (raycast#67)
- Refactor codebase to use only \'let\' keyword for variable assignment (raycast#66)
- Set up JS build pipeline with esbuild (raycast#64)
- Create symlink from CLAUDE.md to AGENTS.md (raycast#65)
- Update AGENTS.md
- Create robots.txt
- fmt
- Update context.rs
- Create cloudflare-pages.yml
- rm pkg
- Add comment support to dicebook language (raycast#63)
- Add wasm-backed CodeMirror highlighting (raycast#62)
- Improve conditional alias rendering (raycast#52)
- Add Elven Accuracy note to guide (raycast#51)
- Implement attack roll crit handling and defaults (raycast#46)
- Remove remaining Polyhedra branding (raycast#43)
- Fix syntax guide collapse styling (raycast#42)
- Add ANALYZE PMF support and visualization (raycast#38)
- Add support for conditional expressions (raycast#37)
- Refactor engine and evaluator to use shared interpreter (raycast#36)
- Refactor dice roll logging format (raycast#35)
- Prevent power operator from rolling extra times (raycast#34)
- Add structured logging controls and UI toggles (raycast#33)
- Ensure code editor disables text correction (raycast#31)
- Show context reset in status bar (raycast#30)
- Add notebook persistence and dicebook import/export (raycast#29)
- Expose proficiency bonus alias in D&D importer (raycast#28)
- Add notebook-style multi-cell web console (raycast#27)
- Enhance web code editor with highlighting and line numbers (raycast#26)
- Support aliasing grouped expressions (raycast#25)
- Support multi-line statement parsing (raycast#24)
- Add include command for preset aliases (raycast#23)
- Add caret group repetition support (raycast#22)
- Format aliases in human-readable notation (raycast#21)
- Handle DDB character value skill overrides (raycast#20)
- Clarify dice keyword spacing and placeholder guidance (raycast#19)
- Add import command support (raycast#18)
- Improve alias layout wrapping (raycast#17)
- Merge pull request raycast#14 from egeucak/codex/update-cors-proxy-for-fetch-requests
- Merge branch \'master\' into codex/update-cors-proxy-for-fetch-requests
- Merge pull request raycast#16 from egeucak/codex/github-mention-improve-ddb-import-resiliency-and-share-link
- Propagate save directory errors
- Improve web DDB input parsing
- Add additional DDB fetch fallbacks
- Enable ResponseType feature for WASM builds
- Merge pull request raycast#15 from egeucak/codex/github-mention-improve-ddb-import-resiliency-and-share-link
- Limit DDB ID fallback to path segments
- Handle opaque fetch responses in WASM importer
- Document wasm-pack setup in README
- Replace Jina proxy fallback with AllOrigins
- Merge pull request raycast#13 from egeucak/codex/update-cors-proxy-for-fetch-requests
- Update WASM proxy fallback
- Merge pull request raycast#12 from egeucak/codex/fix-wasm-pack-build-issue-and-update-agents.md
- Fix wasm fetch helper and update instructions
- Merge pull request raycast#11 from egeucak/codex/fix-webassembly-import-error-from-dndbeyond
- Add CORS-friendly fallback for wasm DDB import
- Merge pull request raycast#10 from egeucak/codex/investigate-missing-set-aliases-on-website
- Fix alias list rendering in web console
- Merge pull request raycast#9 from egeucak/codex/analyze-and-fix-webassembly-loading-issue
- Fix web console wasm bundle path
- Merge pull request raycast#8 from egeucak/codex/fix-wasm-pack-build-failure
- Add CI instructions and format context storage access
- Revert wasm-opt explanation in README
- Merge pull request raycast#7 from egeucak/codex/add-github-actions-workflow-for-wasm
- Add GitHub Pages deployment workflow
- Merge pull request raycast#6 from egeucak/codex/create-web-site-with-wasm-integration
- Add browser console for wasm evaluator
- Merge pull request raycast#5 from egeucak/codex/split-evaluation-logic-for-wasm-compatibility
- Add wasm bindings and split engine module
- Merge pull request raycast#4 from egeucak/codex/add-comprehensive-tests-for-cli-and-context
- Format lexer guard to satisfy rustfmt
- Fix clippy collapsible if warnings
- Format Rust code
- Add tests for CLI, context, and parsing
- Merge pull request raycast#3 from egeucak/codex/add-ci-workflow-for-rust-projects
- Add CI workflow for Rust checks
- Merge pull request raycast#2 from egeucak/codex/refactor-main.rs-into-modules
- Refactor logic into dedicated modules
- Merge pull request raycast#1 from egeucak/codex/setup-rust-project-structure
- Initialize polyhedra CLI
- Add initial README for polyhedra project
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new extension Label for PRs with new extensions

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants