Commit graph

5,160 commits

Author SHA1 Message Date
anovazzi1
ca3367d8e5
fix: Refactor messages API and session view (#2577)
* feat: create boilerplate code for messages api

* centering functionality on one component

* refactor useGetMessages

* update to new type format

* refactor Session view and get messages logic

* update to session view to useGetMessageQuery

* remove old api call

* feat: create boilerplate code for messages api

* centering functionality on one component

* refactor useGetMessages

* update to new type format

* refactor Session view and get messages logic

* update to session view to useGetMessageQuery

* remove old api call

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Cristhian Zanforlin Lousa <72977554+Cristhianzl@users.noreply.github.com>
2024-07-08 14:05:31 -07:00
Gabriel Luiz Freitas Almeida
7e222187e4
fix: remove redundant superuser only if it has never logged in (#2582)
fix: Remove redundant superuser only if it has never logged in

The code changes in `utils.py` check if the superuser exists and if it has never logged in. If both conditions are true, the superuser is deleted from the database. This improves the efficiency and security of the application.
2024-07-08 16:37:03 +00:00
Lucas Oliveira
74433bf023
fix: outdated code conditions and global variable (#2581)
* Fixed Check Code Validity to set outdated as false when type does not exist

* feat: Refactor update_template_values function

Refactor the `update_template_values` function to improve code readability and maintainability. Rename the parameters `frontend_template` to `new_template` and `raw_template` to `previous_template` for clarity. Update the variable names within the function accordingly.

* feat(update_template_field): update load_from_db in case field value is not the default

* refactor: update template values in PromptComponent

Update the `update_template_values` function in the `PromptComponent` class to improve code readability and maintainability. Rename the parameters `frontend_template` to `new_template` and `raw_template` to `previous_template` for clarity. Update the variable names within the function accordingly.

---------

Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
2024-07-08 15:23:03 +00:00
Gabriel Luiz Freitas Almeida
7abf697b7b
fix: update run_manager on state changes (#2560)
* feat: update RunnableVerticesManager to include an update_run_state method

* feat: refactor build_run_map method in RunnableVerticesManager

This commit refactors the `build_run_map` method in the `RunnableVerticesManager` class. Instead of directly accessing the `graph` object, it now takes `predecessor_map` and `vertices_to_run` as parameters. This improves code readability and maintainability.

* fix(state): set vertices_to_run and predecessor_map correctly when updating a state

* fix: set inactive vertices to active when updating graph

* fix: add conditions to avoid duplicated vertices in maps

This commit fixes a bug in the Graph class where the predecessor and successor maps were not being updated correctly. The bug caused incorrect mapping of edges in the graph. This fix ensures that the maps are updated properly when adding edges to the graph.

* refactor: fix vertex build response in chat.py

This commit fixes the `build_vertex` function in `chat.py` to correctly handle the `VertexBuildResponse` object. The `inactivated_vertices`, `next_vertices_ids`, and `top_level_vertices` attributes are now converted to lists to remove any duplicate values. This ensures that the response object contains unique values for these attributes. The fix improves the accuracy and reliability of the vertex build process.

* style(graph/base.py): update type annotations for predecessor_map and successor_map variables to improve code readability and maintain consistency

* fix: uncomment code for stopping build in MenuBar component
2024-07-06 22:54:25 -04:00
Cristhian Zanforlin Lousa
e63479556c
fix: add click event on button to retry check connection to backend (#2558)
♻️ (App.tsx): remove console.log statement from setRetry function
🐛 (fetchErrorComponent): add onClick handler to Retry button to ensure retry logic is executed
2024-07-05 16:57:20 +00:00
Nicolò Boschi
eb3420523e
feat: migrate chains and memories to Component syntax (#2528)
* feat: migrate chains and memories to Component syntax

* use base class

* add classes

* [autofix.ci] apply automated fixes

* fix tests

* fix tests

*  (filterSidebar.spec.ts): increase waitForTimeout from 1000ms to 2000ms to ensure elements are fully loaded before interaction

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
Co-authored-by: Cristhian Zanforlin Lousa <72977554+Cristhianzl@users.noreply.github.com>
2024-07-05 16:30:23 +00:00
Igor Carvalho
6f827ca3dd
fix: pasting files not working (#2548)
* fix: pasting files not working

* [autofix.ci] apply automated fixes

* refactor: change new import

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
2024-07-05 13:57:48 +00:00
anovazzi1
eed5a6390a
fix: version display (#2555)
* fix version

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-07-05 13:38:58 +00:00
anovazzi1
46f82a6af4
fix: update use-get-health.ts (#2553)
* update getHealth function to use options param

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-07-05 13:18:38 +00:00
Lucas Oliveira
6b3f34da77
fix: refactor of api structure (#2544)
* Refactored mutation and query types and callables

* Refactored version and other queries to new way of calling function

* update type declaration to support options

* update getVersionQuery

* [autofix.ci] apply automated fixes

* update type declaration to remove on Fetch options

* remove onFetch from version

* update transactions query

* [autofix.ci] apply automated fixes

---------

Co-authored-by: anovazzi1 <otavio2204@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
2024-07-05 12:44:10 +00:00
Igor Carvalho
6443354720
refactor: change node to component on FE constants (#2545) 2024-07-05 09:34:24 -03:00
anovazzi1
6160f70011
feat: improve getHealth logic (#2537)
* create get health custom hook

* refactor getHealth to use useQuery get

* fix: getHealth in App.tsx

* [autofix.ci] apply automated fixes

* refactor: update API endpoint in useGetHealthQuery

* chore: use new get_helth body

* [autofix.ci] apply automated fixes

* update interfaces names

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Cristhian Zanforlin Lousa <72977554+Cristhianzl@users.noreply.github.com>
2024-07-05 12:03:52 +00:00
Cristhian Zanforlin Lousa
bfaac8b4ba
refactor: add new use-query endpoint of upload files (#2533)
* refactor: add new use-query endpoint of upload files

* extend type for payload callbackSuccess

* [autofix.ci] apply automated fixes

* bugfix: drag and drop image on chat not working

* Refactored query function to use Options

* Used dedicated function as queryFn

*  (API): export use-post-upload-file in files index
♻️ (FileInput): refactor file upload mutation to use onSuccess and onError
♻️ (chatInput): refactor file upload mutation to use onSuccess and onError
♻️ (chatView): refactor file upload mutation to use onSuccess and onError

* ♻️ (use-get-download-images.ts): simplify getDownloadImagesFn function
♻️ (use-get-transactions.ts): simplify getTransactionsFn function
 (use-handle-file-change.tsx): add hook to handle file input changes
 (use-upload.tsx): add hook to handle file paste events

* Added type on Request Processor

---------

Co-authored-by: anovazzi1 <otavio2204@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Lucas Oliveira <lucas.edu.oli@hotmail.com>
2024-07-04 20:25:57 +00:00
Cristhian Zanforlin Lousa
4f586adf0a
fix: remove uneceessary logic to disable button on search components/flows (#2540)
♻️ (index.tsx): simplify disableInputSearch logic by removing redundant conditions
2024-07-04 17:10:26 -03:00
Cristhian Zanforlin Lousa
2b8d314e30
test: fix test after changes on LLMs components (#2538)
*  (tests): remove redundant test assertions in filterEdge-shard-0.spec.ts
 (tests): add new test assertions and remove redundant ones in filterEdge-shard-1.spec.ts

*  (filterSidebar.spec.ts): add test for visibility of helpersID Generator
♻️ (filterSidebar.spec.ts): remove redundant visibility test for textsplittersCharacterTextSplitter

---------

Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
2024-07-04 18:54:01 +00:00
Cristhian Zanforlin Lousa
cb8185237a
refactor: add types to constant on IO (#2536) 2024-07-04 17:00:52 +00:00
Igor Carvalho
911035cdd3
feat: refactor version api (#2534)
* feat: create useGetVersionQuery function

* [autofix.ci] apply automated fixes

* fix: extend useQuery type to accpet functions with no parameters

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
2024-07-04 16:37:21 +00:00
Cristhian Zanforlin Lousa
fb21fdda5e
fix: spec files cant find .env variable on CI (#2514)
* bugfix: add env import to spec files correctly

* 🔧 (ci.yml): fix indentation for consistency and readability in CI workflow

* ci: add inputs to workflow

* bugfix: improve flaky test general bugs to run smoothier on CI

* ci: add more shards to improve tests on CI
2024-07-04 01:36:07 +00:00
596050
be21f2f95a
fix: fixes react key error in browser on flow page for extra sidebar disclosure components (#2295)
Fixes key error in browser on flow page for extra sidebar disclosure components

Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
2024-07-04 00:42:41 +00:00
Cristhian Zanforlin Lousa
9af47895f9
feat: POC of useQuery -> mutation and query (#2512) 2024-07-03 19:16:23 -03:00
Igor Carvalho
d03a7fd5a3
feat: show why group button is disabled (#2507)
* Refactor: Show why group button is disabled

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>
2024-07-03 22:55:42 +02:00
Lucas Oliveira
17b730b6cf
fix: update node logic (#2515)
* Fixed bug where updating the node does not remove edited status

* Fixed order of edited override

* Made all node-changing functions to alter type the right way

* Update StoreMessageComponent for enhanced message handling

- Changed base class from CustomComponent to Component
- Added multiple input fields: message, sender, sender_name, session_id
- Included output field for stored messages
- Improved logic to handle both string and Message types
- Enhanced error handling and validation for message storage

* Apply Ruff formatting

* Update StoreMessageComponent for enhanced message handling

* Apply Ruff formatting

* Feat: add more types

* Format code

* feat: Add CreateListComponent for creating a list of texts

This commit adds a new component called CreateListComponent, which is responsible for creating a list of texts. The component takes in one or more texts as input and outputs a list of Data objects. This component is useful for scenarios where a list of texts needs to be processed or manipulated.

The CreateListComponent class is added to the helpers module in the langflow.components package. It includes the necessary inputs and outputs, as well as a create_list method that generates the list of Data objects based on the input texts.

This commit also includes some minor changes to other files, such as renaming the UUIDGeneratorComponent to IDGeneratorComponent and updating import statements.

* [autofix.ci] apply automated fixes

* Changed native categories to use the keys of the style utils categories, which is updated

* change component name

* chore: add the name attribute to the CustomComponent

* chore: assign the value of name to the components

* chore: change the logic of the type value returned

* chore: extract code to new func

* chore: change component_name value

* [autofix.ci] apply automated fixes

* Formatted files

---------

Co-authored-by: Rodrigo <rodrigosilvanader@gmail.com>
Co-authored-by: rodrigosnader <rodrigosnader@users.noreply.github.com>
Co-authored-by: igorrCarvalho <igorsilvabhz6@gmail.com>
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: italojohnny <italojohnnydosanjos@gmail.com>
2024-07-03 17:55:01 -03:00
anovazzi1
8017122d29
chore: update langflow-embedded-chat script URL to v1.0.3 (#2482)
Co-authored-by: Cristhian Zanforlin Lousa <72977554+Cristhianzl@users.noreply.github.com>
2024-07-03 22:33:18 +02:00
Lucas Oliveira
fe21f90aec
fix: prompt template not being saved on advanced modal (#2488)
* Fixed dbvalue on table node cell renderer

* Added Change Advanced hook

* Added Handle New Value hook

* Added Handle Node Class hook

* Added Node Class handler to TableNodeCellRender

* Removed internal state of EditNode, added internal state for NodeClass and made the rows and columns be updated when NodeClass changes

* Added NodeClass as dependencies on useMemo to update columns when NodeClass changes

* Fixed advanced not changing the node

* feat: updating tests without save btn

* Added Close button on editNode

---------

Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
2024-07-03 17:55:52 +00:00
Cristhian Zanforlin Lousa
74845ffae9
fix: memory chat bot name (#2509)
* chore: refresh starter projects components

* format

* bugfix: change memory chatbot to correct name

* bugfix: change memory chatbot to correct name

---------

Co-authored-by: Nicolò Boschi <boschi1997@gmail.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
2024-07-03 10:34:13 -07:00
Nicolò Boschi
f3a33c9426
fix: restore button for all native components (#2505)
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
2024-07-03 17:49:09 +02:00
Gabriel Luiz Freitas Almeida
a3bf1c4502
ci: update CI workflows and add CI workflow (#2498)
* chore(workflows): update lint-js.yml and lint-py.yml workflows to include support for workflow_call and workflow_dispatch events with optional branch input for checkout

* chore(docs_test.yml): update workflow triggers to include workflow_call and workflow_dispatch events

* ci(python_test.yml): update workflow to trigger on workflow_dispatch event and add support for optional branch input parameter to checkout specific branch for testing

* chore(typescript_test.yml): remove unnecessary pull_request event types to streamline workflow configuration

* feat(ci.yml): add CI workflow for automated testing and linting of backend, frontend, and documentation code

* chore: update release.yml to include CI workflow for automated testing and linting

* chore(typescript_test.yml): remove unnecessary 'if: always()' condition from merge-reports job

* chore(ci): add typescript_test.yml to the list of files included in the frontend job for CI workflow

* chore(ci.yml): fix typo in file path for typescript_test.yml in the frontend job of CI workflow

* chore(ci.yml): update path-filter job in CI workflow to include frontend tests and fix typo in file path for typescript_test.yml

* chore(ci.yml): add concurrency configuration to improve workflow efficiency

fix(ci.yml): include tests output in the filter paths job to run frontend tests when needed

* chore(ci.yml): update CI workflow to remove lint-frontend job

* chore(ci.yml): restructure CI workflow to improve readability and maintainability
feat(ci.yml): add separate jobs for frontend tests, backend linting, and docs build to enhance testing coverage
feat(ci.yml): introduce a final job 'CI Success' to check the status of all previous jobs and provide a summary of the CI pipeline execution

* ci(ci.yml): add dependencies between jobs to ensure proper execution order and avoid unnecessary runs

* chore(ci.yml): reformat YAML file for better readability and consistency in indentation
feat(ci.yml): add support for running backend tests, frontend tests, linting backend code, and testing docs build in CI workflow
feat(ci.yml): introduce a final step 'CI Success' to check the status of all previous jobs and exit with appropriate code based on their results

* chore(ci.yml): Remove concurrency configuration and cancel-in-progress option from lint-js, lint-py, python_test, and style-check-py workflows

* chore(ci.yml): Update pull_request event types in js_autofix.yml workflow to remove auto_merge_enabled

* chore: Remove concurrency configuration and cancel-in-progress option from typescript_test.yml workflow

* refactor: change add store key inside test

* ♻️ (tests): remove hardcoded API key and use environment variable
 (tests): add environment variable check to skip tests if not set

*  (store-shard-2.spec.ts): add test skip condition for STORE_API_KEY
 (store-shard-2.spec.ts): implement test for sharing component with API key

*  (store-shard-2.spec.ts): update navigation step in end-to-end test to click "My Collection" instead of going to home page

---------

Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
2024-07-03 08:24:35 -07:00
Cristhian Zanforlin Lousa
871271e69e
fix: update tests FE (#2493)
* bugfix: update tests FE

*  (tests): add end-to-end tests for deleting components and flows
 (tsconfig.json): update tsconfig to include new deleteFlows.spec.ts test file

* ♻️ (dropdownComponent.spec.ts): remove redundant test cases for showendpoint_url to streamline test suite

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
2024-07-02 18:39:17 -07:00
Nicolò Boschi
2787bec4fb
ci: skip tests with openai key required (#2477)
* ci: skip tests with openai key required

* ci: skip tests with openai key required

* ci: skip tests with openai key required

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-02 06:20:13 -07:00
Nicolò Boschi
b44e43a5b6
fix(frontend): do not use backend url in <img> (#2424)
* fronted: do not use backend url in <img>

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-02 15:19:20 +02:00
Lucas Oliveira
c1947a0192
Fix Global Components bug (#2478)
* removed unused console.logs

* Fixed load_from_db not being updated
2024-07-02 13:10:48 +00:00
Igor Carvalho
7653b5e2f0
fix: ctrl f overriding browser ctrl f when editing node (#2358)
* Fix: Ctrl F overriding browser ctrl f when editing node

* Refactor: use noflow class instead of isThereModal function

* [autofix.ci] apply automated fixes

---------

Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Lucas Oliveira <lucas.edu.oli@hotmail.com>
2024-07-02 12:26:21 +00:00
Cristhian Zanforlin Lousa
f70106aaec
bugfix: fix crashing langflow when keypairlistcomponent advanced opens (#2462) 2024-07-01 20:30:32 +00:00
Cristhian Zanforlin Lousa
e8517e067a
removing duplicate tests from frontend (#2459)
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
2024-07-01 20:24:28 +00:00
Gabriel Luiz Freitas Almeida
f06657d985 Merge branch 'dev' into dev_to_main 2024-07-01 15:04:56 -03:00
Cristhian Zanforlin Lousa
b0fcb91d35 add a new test for a huge flow -> decisionFlow (#2456)
* add test to decision flow

* add test to decision flow

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-01 13:53:55 -03:00
Lucas Oliveira
b31c5e6b4a Fix Global Variables (#2430)
* chore: update linting workflows to include dev branch in merge_group

* Update README.md

Add 1.0 banner

* Update README.md

* chore: update package versions in pyproject.toml files

* Added db value to every onChange on parameters

* Refactored global variables to find variables on the first render, and to execute just one onChange to update both values and db

* Changed group recursion function to include check for global variables already applied or outdated

* Removed already inserted component check for default fields on global variables

* Fixed import error

* Added required parameters to update node on drop

* Removed check for unused hardcoded name

* Added global variables handling on nodes when adding a flow

* Fixed maximum update depth when deleting used global variable

* Fixed type error on addNewVariableButton modal

* Fixed openai api key on starter flows

* Fixed values to get the .env values by default on the starter projects

* Formatted flows

* fix erros reported by mypy

* [autofix.ci] apply automated fixes

* 🐛 (prototypes/__init__.py): fix missing comma in the list of imported components to prevent syntax error

* chore: Fix type hinting in ConditionalRouterComponent

* [autofix.ci] apply automated fixes

---------

Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: Rodrigo Nader <rodrigosilvanader@gmail.com>
Co-authored-by: italojohnny <italojohnnydosanjos@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-01 13:53:55 -03:00
anovazzi1
607e167cc3 fix playground button on store (#2417)
* fix playground on store

* [autofix.ci] apply automated fixes

* Format code

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-01 13:53:55 -03:00
anovazzi1
896c66813f fix name on EditNodeModal (#2434)
* fix name on EditNodeModal

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-01 13:53:55 -03:00
anovazzi1
cc53ce4380 format code 2024-07-01 13:53:55 -03:00
anovazzi1
71f3bfcf51 feat: convert non-object rows to array of objects in DataOutputComponent 2024-07-01 13:53:55 -03:00
anovazzi1
69a843aa66 code format 2024-07-01 13:53:55 -03:00
anovazzi1
ee9212e8ee chore: Update proxy IDs on group node outputs to ensure consistency 2024-07-01 13:53:55 -03:00
autofix-ci[bot]
e5b7477a90 [autofix.ci] apply automated fixes 2024-07-01 13:53:55 -03:00
igorrCarvalho
ad3c47b8fd fix: Tweaks tab dissapearing with hook component 2024-07-01 13:53:55 -03:00
anovazzi1
a008f8a3de format code 2024-07-01 13:53:55 -03:00
anovazzi1
5cbe19934e fix edit method on messages 2024-07-01 13:53:55 -03:00
autofix-ci[bot]
6def02d3d1 [autofix.ci] apply automated fixes 2024-07-01 13:53:55 -03:00
igorrCarvalho
87cf28e158 Refactor: enable node copy for multiple selection 2024-07-01 13:53:55 -03:00
igorrCarvalho
363ea8895e Fix: Ctrl + C not working on tooltips 2024-07-01 13:53:55 -03:00