tabby icon indicating copy to clipboard operation
tabby copied to clipboard

TabbyML Code Browser GitHub repo with special characters in folder name

Open Wolfsauge opened this issue 9 months ago • 2 comments

Describe the bug When adding the repo https://github.com/ArjanCodes/betterpython, waiting for the scheduler to add the repo, I will see the folder structure in the code browser's left pane. However, the right pane remains empty on any Python files I'm trying to browse. While repos without folders with & in their names seem to work fine.

Please note the presence of the folder https://github.com/ArjanCodes/betterpython/tree/main/6%20-%20template%20method%20%26%20bridge in the repo.

When inspecting the tabbyml docker container logs, I find the following error message:

$ podman logs -tf tabbyml
...
2024-05-09T14:01:03.519535000+02:00 2024-05-09T12:01:03.519448Z  WARN HTTP request{otel.name=GET /repositories/:name/resolve/*path http.client_ip=192.168.0.1:42606 http.flavor=1.1 http.host=mnemosyne.local:8080 http.method=GET http.route=/repositories/:name/resolve/*path http.scheme=HTTP http.target=/repositories/arjancodesbetterpython/resolve/6%20-%20template%20method%20&%20bridge/with-bridge.py http.user_agent=Mozilla/5.0 (X11; Linux x86_64; rv:125.0) Gecko/20100101 Firefox/125.0 otel.kind=server trace_id=7b91622919764b4ddaedf464f2b34582}:resolve_path{repo=ResolveParams { name: "arjancodesbetterpython", path: Some("6 - template method & bridge/with-bridge.py") }}: tabby_webserver::repositories: ee/tabby-webserver/src/repositories/mod.rs:70: failed to resolve_file <"/data/repositories/arjancodesbetterpython/6 - template method & bridge/with-bridge.py">: invalid uri character
...

Same line, word wrapped:

2024-05-09T14:01:03.519535000+02:00 2024-05-09T12:01:03.519448Z  WARN HTTP
request
{otel.name=GET /repositories/:name/resolve/*path
http.client_ip=192.168.0.1:42606 http.flavor=1.1
http.host=mnemosyne.local:8080 http.method=GET
http.route=/repositories/:name/resolve/*path http.scheme=HTTP
http.target=/repositories/arjancodesbetterpython/resolve/6%20-%20template%20method%20&%20bridge/with-bridge.py
http.user_agent=Mozilla/5.0 (X11; Linux x86_64; rv:125.0) Gecko/20100101
Firefox/125.0 otel.kind=server
trace_id=7b91622919764b4ddaedf464f2b34582}:resolve_path{repo=ResolveParams
{ name: "arjancodesbetterpython", path: Some("6 - template method &
bridge/with-bridge.py") }}: tabby_webserver::repositories:
ee/tabby-webserver/src/repositories/mod.rs:70: failed to resolve_file
<"/data/repositories/arjancodesbetterpython/6 - template method &
bridge/with-bridge.py">: invalid uri character

The expected behavior would be to be able to browse the files.

Information about your version Please provide output of tabby --version

Entering the container yields this output:

root@d77059856d61:/# tabby --version
tabby 0.10.0

I retried with tabbyml latest official image:

$ podman ps
CONTAINER ID  IMAGE                           COMMAND               CREATED         STATUS         PORTS                   NAMES
d77059856d61  docker.io/tabbyml/tabby:latest  serve --device cu...  44 minutes ago  Up 44 minutes  0.0.0.0:8080->8080/tcp  tabbyml

$ podman image list tabby
REPOSITORY               TAG         IMAGE ID      CREATED      SIZE
docker.io/tabbyml/tabby  latest      ca9238815b16  2 weeks ago  2.29 GB

Information about your GPU Please provide output of nvidia-smi

$ nvidia-smi
Thu May  9 14:58:24 2024       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.78                 Driver Version: 550.78         CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 3090        Off |   00000000:01:00.0 Off |                  N/A |
|  0%   39C    P8             35W /  420W |   16642MiB /  24576MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
                                                                                         
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A       818      G   /usr/lib/Xorg                                   4MiB |
|    0   N/A  N/A     63028      C   /opt/tabby/bin/tabby                        16628MiB |
+-----------------------------------------------------------------------------------------+

Additional context Add any other context about the problem here.

I've noticed the many rc versions of 0.11.0 in the docker.io/tabbyml repo.

As I currently believe this is a bug in tabbyml, I probably should retry the actual latest rc versions of 0.11.0 to validate the behavior of the latest versions.

Wolfsauge avatar May 09 '24 13:05 Wolfsauge

Okay, so I've just tried the currently available tabbyml nightly build docker image and can confirm the error to be still present in that.

How to reproduce:

  • add repo with & in folder name (example link in first comment) to repository providers in tabbyml settings
  • try to open a *.py file in the code browser, after it has been indexed
  • notice the right pane remains empty, where the code would normally appear

Container log line:

2024-05-09T15:08:42.658376000+02:00 2024-05-09T13:08:42.657888Z  WARN resolve_path{repo=ResolveParams { kind: Git, id: ID("V1xYGx"), path: Some("6 - template method & bridge/trading-before.py") }}: tabby_webserver::routes::repositories: ee/tabby-webserver/src/routes/repositories/mod.rs:65: failed to resolve_file <"/data/repositories/https_github.com_ArjanCodes_betterpython/6 - template method & bridge/trading-before.py">: invalid uri character

The same log line word wrapped for legibility:

2024-05-09T15:08:42.658376000+02:00 2024-05-09T13:08:42.657888Z  WARN
resolve_path{repo=ResolveParams { kind: Git, id: ID("V1xYGx"), path: Some
("6 - template method & bridge/trading-before.py") }}:
tabby_webserver::routes::repositories:
ee/tabby-webserver/src/routes/repositories/mod.rs:65: failed to resolve_file
<"/data/repositories/https_github.com_ArjanCodes_betterpython/6 - template
method & bridge/trading-before.py">: invalid uri character
$ podman image list tabby
REPOSITORY               TAG         IMAGE ID      CREATED       SIZE
docker.io/tabbyml/tabby  nightly     ce51a71aaafa  17 hours ago  2.32 GB
docker.io/tabbyml/tabby  latest      ca9238815b16  2 weeks ago   2.29 GB

If you have any suggestions, please don't hesitate to comment.

Wolfsauge avatar May 09 '24 13:05 Wolfsauge

Thanks for the bug fix and this happens to be fixed yesterday in https://github.com/TabbyML/tabby/pull/2079

It shall be released as part of 0.11

wsxiaoys avatar May 09 '24 20:05 wsxiaoys

@wsxiaoys I'm afraid the fix has not been completely successful: I am currently seeing exactly the same behavior as described by @Wolfsauge when attempting to open a file with a # in its name. (Specifically, I'm seeing this behavior described in the top comment of this thread: "the right pane remains empty on any files I'm trying to browse.")

Renaming the file so that it doesn't contain a # serves as a workaround.

I am currently running version 0.11.0.

joaodinissf avatar May 14 '24 11:05 joaodinissf

released in https://github.com/TabbyML/tabby/releases/tag/v0.11.1

wsxiaoys avatar May 15 '24 06:05 wsxiaoys