Skip to content

Releases: hide-org/hide

v0.5.0

12 Nov 12:09
cfe7bc5

Choose a tag to compare

Release v0.5.0

We're excited to announce the latest release of our project. This update brings several significant improvements and bug fixes.

✨ What's New

📂 Local Project Support

Hide now supports working with codebases directly from your filesystem. This is particularly useful for local development, private codebases, and huge repositories, allowing you to use Hide without requiring to pull a remote repository.

cURL

curl --location 'http://localhost:8080/projects' \
--header 'Content-Type: application/json' \
--data '{
    "repository": {
        "url": "file:///Code/django"
    },
    "languages": [
        "Python"
    ]
}'

Python

import hide
from hide import model

hc = hide.Client()

# Create project with specific language support
project = hc.create_project(
    repository=model.Repository(url="file:///Code/django"),
    languages=[model.Language.PYTHON]
)

📑 Document Outline

The new document outline feature provides a structured view of your code, making it easier for agents to navigate through large files and understand code structure at a glance.

cURL

curl --location 'http://localhost:8080/projects/{project_id}/outline/path/to/file.py'

Python

import hide
from hide import model

hc = hide.Client()

project = hc.create_project(
    repository=model.Repository(url="file:///Code/django")
)

outline = hc.document_outline(
   project_id=project.id,
   file="path/to/file.py"
)

⏱️ Task Management

We've implemented client-side timeouts for running tasks to prevent indefinitely hanging operations and provide better control over long-running processes.

Thank you @wistuba for proposing this feature 🙏

cURL

curl --location 'http://localhost:8080/projects/{project_id}/tasks' \
--header 'X-Timeout-Seconds: 10' \
--data '  {
    "command": "sleep 50"
}'

Python

import hide
from hide import model

hc = hide.Client()

project = hc.create_project(
    repository=model.Repository(url="file:///Code/django")
)

result = hc.run_task(
    project_id=project.id,
    command="sleep 50",
    timeout=10, #time out and release resources after 10 second.
)

🛠️ Developer Experience

This release includes several improvements to make Hide more developer-friendly.

  • Added OpenAPI specification for better API documentation
  • Introduced Bruno API collection for easier API testing
  • Improved LSP server management with separate process groups and concurrent diagnostics handling
  • Fixed issues with diagnostics on closed channels

🔮 What's Next?

We're actively working on expanding Hide's capabilities in several exciting directions:

  • Adding support for Java and Scala development environments
  • Exploring new options for hosting devcontainers
  • Evaluating Hide's performance on swe-bench – if you're interested in driving this benchmarking effort, please reach out to us by [email protected] or join our discord channel https://discord.gg/8aemdtxNF8

👏 Changelog

Full Changelog: v0.4.1...v0.5.0

v0.4.1

09 Oct 12:11
38764ac

Choose a tag to compare

Release v0.4.1

We're excited to announce the latest release of our project. This update brings several improvements and bug fixes to enhance your development experience.

✨ What's New

📁 File Handling and Project Management

  • Improved file listing with relative paths (thanks @prabhuteja12 for reporting)
  • Added support for .gitignore when listing files
  • Implemented a tree-like formatter for listed files (details below)
  • New languages parameter for project creation (details below)

🐳 Devcontainer and LSP Enhancements

  • Added support for local images (thanks @prabhuteja12 for reporting)
  • Improved language detection using go-enry
  • Implemented graceful shutdown of LSP servers

🚀 Performance and Bug Fixes

  • Fixed an issue where LSP wasn't stopping when deleting a project (thanks @wistuba for reporting)
  • Fixed a bug related to missing Close() call in the gitignore reader (thanks @wistuba for reporting)

We hope you enjoy this new release! As always, we welcome your feedback and contributions.

🔦 New languages parameter

We've introduced a new languages parameter to give you more control over LSP server initialization when creating a project. Here's what you need to know:

🧠 Background

When hide receives a request to create a new project, it attempts to detect the main programming language(s) to launch relevant LSP servers. While we've significantly improved the accuracy of language detection using go-enry, we understand that sometimes you may want more explicit control.

⚙️ How It Works

The new languages parameter allows you to specify which LSP servers to start when creating a project. This ensures that you have the exact language support you need, regardless of automatic detection results.

🗣️ Supported Languages

The languages parameter currently supports the following values:

  • Go
  • JavaScript
  • Python
  • TypeScript

💡 Usage Examples

cURL

curl --location 'http://localhost:8080/projects' \
--header 'Content-Type: application/json' \
--data '{
    "repository": {
        "url": "https://github.com/sphinx-doc/sphinx.git"
    },
    "devcontainer": {
        "image": "mcr.microsoft.com/devcontainers/python:3.12",
        "onCreateCommand": "pip install -e ."
    },
    "languages": [
        "Python"
    ]
}'

Python

import hide
from hide import model

hc = hide.Client()

# Create project with specific language support
project = hc.create_project(
    repository=model.Repository(url="https://github.com/your-username/your-repo"),
    languages=[model.Language.PYTHON]
)

📝 Note

If the languages parameter is not provided, hide will fall back to its automatic language detection using go-enry.

🌳 Tree-like formatter

We've introduced a new tree-like format for listing files in your projects. This feature aims to provide a more intuitive and familiar representation of your project structure.

🧠 Background

JSON has been our foundation for representing file structures due to its flexibility and widespread use in data transport. It's an excellent base format that allows building various representations on top of it using SDK. However, we recognized the value in providing some common, ready-to-use formats directly from the API. This approach saves development time and offers immediate utility for many use cases, including AI agents that benefit from familiar, hierarchical representations.

⚙️ How It Works

The new tree-like formatter presents your project's file structure in a format similar to what you'd see when using the tree utility in a shell. This hierarchical representation makes it easier to visualize the structure of your project at a glance.

💡 Usage Example

To use the new tree-like format, you can specify in your API request. Here's an example using cURL:

curl --location 'http://localhost:8080/projects/{project_id}/files' \
--header 'Accept: text/plain'

The response will look something like this:

.
├── src/
│   ├── main.py
│   └── utils/
│       ├── helper.py
│       └── config.py
├── tests/
│   ├── test_main.py
│   └── test_utils.py
├── README.md
└── requirements.txt

Here's an example in Python:

import hide
from hide import model

hc = hide.Client()

# Create project with specific language support
project = hc.create_project(
    repository=model.Repository(url="https://github.com/your-username/your-repo")
)

files = hc.list_files(
   project_id=project.id,
   format=model.ListFilesFormat.TREE
)

👏 Changelog

Full Changelog: v0.4.0...v0.4.1

Hide v0.4.0

18 Sep 13:28
c9afaa5

Choose a tag to compare

Search API

Hide now provides search API to help agents navigate and explore projects efficiently. There are three main types of search available:

  • Content Search
  • File Search
  • Symbol Search.

To start using search:

  1. (if you use brew) Update Hide Runtime
    1. uninstall hide brew uninstall hide
    2. remove the old tap brew untap artmoskvin/hide
    3. add the new tap brew tap hide-org/formulae
    4. install hide brew install hide
  2. (if you build from sources) pull the latest git pull and install go install .
  3. Update Hide SDK for Python by running pip install -U hide-py.
  4. Check out the documentation: https://hide.sh/usage/search/.
  5. (Optionally) Join our new Discord community to chat about agents, tools, and dev environments https://discord.gg/8aemdtxNF8

Examples

cURL

# Exclude 'node_modules'
curl -X GET "http://localhost:8080/projects/{projectId}/search?type=content&query=your_search_query&exclude=**/node_modules"

# Search for files containing the word "test" in their path
curl -X GET "http://localhost:8080/projects/{projectId}/files?include=test"

# Search for symbol
curl -X GET "http://localhost:8080/projects/{projectId}/symbols?type=symbol&query=your_symbol_name"

python

import hide
from hide import model

hc = hide.Client()
project = hc.create_project(
    repository=model.Repository(url="https://github.com/your-username/your-repo")
)

# Exclude 'node_modules'
files = hc.search_files(
    project_id=project.id, 
    query="your_query", 
    exclude=["/node_modules"]
)

# Search for files containing the word "test" in their path
files = hc.list_files(
    project_id=project.id, 
    include=["test"]
)

# Search for symbol
symbols = hc.search_symbols(
    project_id=project.id, 
    query="your_symbol_name"
)

What's Changed

Full Changelog: v0.3.0...v0.4.0

Welcome to our Discord community

https://discord.gg/8aemdtxNF8

Hide v0.3.0

20 Aug 19:58
9594929

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.2.0...v0.3.0

Hide v0.2.0

30 Jul 12:02
f5e4bcf

Choose a tag to compare

What's Changed

Full Changelog: v0.1.0...v0.2.0

Hide v0.1.0

26 Jun 13:17
7ad512e

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: https://github.com/artmoskvin/hide/commits/v0.1.0