Skip to content

Releases: javiergs/TULIP

Taiga Support - Now retrieve Sprints and User Stories by Sprint

12 Mar 21:42

Choose a tag to compare

This release adds support for working with sprints (milestones) in Taiga

New Features

  • Retrieve project sprints
  • Added a method to obtain all sprints associated with a project.
  • Uses the Taiga API endpoint /api/v1/milestones.
  • Retrieve user stories by sprint
  • Added a method to obtain all user stories belonging to a specific sprint.
  • Uses the Taiga API endpoint /api/v1/userstories?milestone=.

API Additions

New methods in TaigaClient:

List<TaigaSprint> getSprints(long projectId)
List<TaigaUserStory> getStoriesBySprint(long sprintId)

Purpose

These additions enable applications using TULIP to:
• Navigate the project → sprint → story hierarchy
• Retrieve sprint planning information
• Build sprint dashboards or progress views
• Integrate Taiga sprint data into external tools

Example Usage

TaigaClient client = new TaigaClient(token);

List<TaigaSprint> sprints = client.getSprints(projectId);

for (TaigaSprint sprint : sprints) {
    List<TaigaUserStory> stories = client.getStoriesBySprint(sprint.getId());
}

Notes

In Taiga, sprints are represented as milestones, and the new functionality exposes this concept directly through the TULIP API.

A Lexer Module for Compiler Construction

10 Mar 02:42

Choose a tag to compare

This release introduces a Lexical Analyzer (Lexer) component, designed to support projects in compiler construction
and programming language processing
.

The lexer module provides functionality to scan input source code and convert it into a stream of tokens, which can then be consumed by a parser or other language processing tools.

New Package

tulip.compiler

The new lexer module allows applications to:

  • Read source code from text input
  • Identify lexical elements such as:
    • identifiers
    • keywords
    • numbers
    • operators
    • delimiters
  • Produce a structured stream of tokens for use in parsing stages
  • Support experimentation with language design and compiler
    construction

Example Usage

    Lexer lexer = new Lexer(sourceCode);
    lexer.run();
    Vector<Token> tokens = lexer.getTokens();
    for (Token token : tokens) {
       System.out.println(token);
    }

Adding RTDE Support for Universal Robots e-Series

07 Mar 03:19

Choose a tag to compare

New Feature: Universal Robots RTDE Client

This release introduces Real-Time Data Exchange (RTDE) support in the TULIP library, enabling applications to access real-time data from Universal Robots e-Series collaborative robots.

The RTDE client allows developers to connect to a robot controller and retrieve streaming data such as:

  • Joint positions
  • TCP position and orientation
  • Robot state variables
  • Digital and analog I/O
  • Runtime information from the robot controller

New Package

tulip.ur.rtde

This package provides classes responsible for:

  • RTDE protocol negotiation
  • Output variable configuration
  • Binary data parsing
  • Continuous robot telemetry streaming

Capabilities

The RTDE integration enables applications built with TULIP to:

  • Connect to a Universal Robots e-Series controller
  • Subscribe to real-time robot telemetry
  • Retrieve robot state information at runtime
  • Support robotics experimentation and teaching scenarios

Example Usage

RTDEClient rtde = new RTDEClient("192.168.0.10");
rtde.connect();

RobotState state = rtde.read();

System.out.println("Joint 1 position: " + state.getJointPosition(0));
System.out.println("TCP X position: " + state.getTcpX());

Purpose

This addition expands TULIP beyond software project management and AI integrations by introducing robotics connectivity capabilities.

With this update, TULIP now supports applications that combine:

  • GitHub repositories
  • Taiga project management
  • AI services (Groq)
  • Real-time robotic systems (Universal Robots RTDE)

These capabilities make TULIP a versatile framework for software engineering education, robotics experimentation, and research prototypes involving intelligent systems and human-robot interaction.

Adding Groq API client

05 Mar 08:23

Choose a tag to compare

New Features

  • Added Groq API client support to the TULIP library.
  • New package: tulip.groq

Includes:

  • GroqClient – main interface for interacting with the Groq API
  • GroqConfig – configuration class for API key, base URL, and model
  • GroqMessage – simple message object used for chat interactions

Capabilities

The Groq client supports:

  • Chat completions using Groq LLMs
  • Single prompt requests
  • Multi-message conversations
  • Configurable parameters (model, temperature, max tokens)

Example Usage

GroqConfig cfg = new GroqConfig(apiKey, baseUrl, model);
GroqClient groq = new GroqClient(cfg);

String answer = groq.chat("Explain the pipeline pattern in software engineering.");

Configuration

GROQ_API_KEY
GROQ_BASE_URL=https://api.groq.com/openai/v1
GROQ_MODEL=llama-3.3-70b-versatile

Purpose

This release extends TULIP to support AI-assisted features via Groq,
complementing the existing integrations with GitHub and Taiga.

Adding Taiga Client Integration

05 Mar 06:57

Choose a tag to compare

This update introduces support for Taiga.IO integration.

Previously, TULIP provided functionality only for interacting with the GitHub API. The library now includes a Taiga client module that allows applications to retrieve and interact with project data stored in Taiga. The new Taiga client provides methods to authenticate with the Taiga REST API and retrieve core project management entities, including:

Projects
Sprints (Milestones)
User Stories
Tasks
This addition enables TULIP to interact with both code repositories (GitHub) and project management platforms (Taiga).

v3.0

29 Nov 11:42
d12ff3b

Choose a tag to compare

This release introduces a major upgrades

🚀 Highlights

Unified GitHub URL Parser

A single method now correctly handles:

  • Plain repo URLs
  • /tree/{branch}/{path}
  • /blob/{branch}/{path}
  • URLs missing branch/path (defaults to main)

Enhanced URLObject

  • New isBlob() and isDirectory() helpers
  • Cleaner structure for owner, repository, revision, path, and kind
  • Improved debugging output

GitHub Token Auto-Loading

GitHubHandler now loads a GitHub token from: src/main/resources/tulip.properties
Falls back to anonymous mode with clear error messages if missing.

Better API Error Handling

User-friendly messages for:

  • Missing tokens
  • Rate limits
  • Invalid file/directory URLs
  • Blob/tree misuse

v2.5

04 Nov 08:47

Choose a tag to compare

Fixing listFilesRecursive

v2.4

04 Nov 08:15

Choose a tag to compare

Fixing getFileContentFromUrl

v2.3

04 Nov 08:08

Choose a tag to compare

Fix debug message

v2.2

04 Nov 08:02

Choose a tag to compare

Fix debug message