Skip to content

Releases: Yiling-J/tablepilot

v0.5.1

12 Jun 12:53

Choose a tag to compare

  • Add new dataset type: image. Dataset files now support updating and reordering.
image-dataset.mp4
  • Add search box to tables/models/datasets/providers page

v0.5.0

10 Jun 02:17

Choose a tag to compare

v0.5.0 is a major refactor and rewrite that introduces significant changes, including several breaking changes:

  • New Datasets Page: You can now create public CSV or list datasets and use them as sources for table columns.

  • Redesigned Column Sources: The old "Sources" section in columns has been removed. Instead, a new source_type field is added:

    • Set it to table to use another table as the source.
    • Set it to dataset to use a shared dataset.
    • Set it to options to define a list of options directly within the column (private to that column).
  • TOML Config is Now Optional: Tablepilot can run without a config file by falling back to sensible defaults.

  • Docker Support Added: You can now run Tablepilot easily via Docker.

  • UI Improvements: Various enhancements have been made to the user interface for a smoother experience.

v0.4.1

28 May 09:51

Choose a tag to compare

Provider and Model Management in the UI

The provider and model management experience has been redesigned. Previously, you could only add providers and models through the model selector dropdown. In this release, I’ve introduced a dedicated Models Management page accessible from homepage.

Special thanks to Firebase Studio for the UI redesign, and to Jules for helping refactor and write tests. (Jules tried really hard, even though the tests didn’t pass and I had to fix them manually, the effort still saved a lot of time.)

2025-05-28.13-59-47.mov

Provider Type and Base URL Improvements

Previously, there were only two provider types: "openai" for all OpenAI-compatible APIs, and "gemini" for Gemini’s native image generation.

Now Tablepilot support five provider types:

  • "OpenAI"
  • "Gemini"
  • "Anthropic"
  • "OpenRouter"
  • "OpenAI-Compatible"

For the first four types, you no longer need to specify a base URL—it’s handled automatically. You only need to set a custom base URL when using the "OpenAI-Compatible" type.

Example

Before:

[[providers]]
name = "gemini"
type = "openai"
key = "your_api_key"
base_url = "https://generativelanguage.googleapis.com/v1beta/openai/"

Now:

[[providers]]
name = "gemini"
type = "Gemini"
key = "your_api_key"

v0.4.0

26 May 02:56

Choose a tag to compare

Workflow Automation

Automate tasks effortlessly using the new Workflow feature, available in both the CLI and UI. Workflows support predefined variables and make it easy to chain together complex operations.

Watch the demo video:

workflow.mp4

For details on CLI usage and the workflow JSON schema, refer to Workflow.md. Example workflows are also available under the examples/workflows/ folder.


Improved Autofill Mode

You can now select the same column for both autofill and context. This enables powerful inline editing—for example, translating column content into another language, without needing to create a separate column.

Since Tablepilot uses the column description as a generation hint, and in this case the description remains the same, we've added an optional prompt field to the Autofill options. This is especially useful for same-column autofill but can also provide additional context in other scenarios.


Explicit Import Control

The import command now includes explicit controls to determine whether data should be imported into an existing table or used to create a new one:

  • Use the table field to import into an existing table. If the specified table does not exist, the import will fail.
  • Use the new name field to create a new table. If table is not set, Tablepilot will create a table using the name. If both table and name are unset, the file name will be used as the table name.

Smart Image Import

This change introduces a powerful side effect: you can now import images into existing tables. Since Tablepilot uses AI to extract and generate data, it can intelligently fill in missing columns. For example, if you import a menu image into a table that includes a cuisine column (not present in the image), Tablepilot will automatically generate the missing data based on context when importing.

v0.3.2

12 May 02:57

Choose a tag to compare

[CLI/UI] Import Images as Tables

You can now extract data from images and import it directly into Tablepilot as a table. Then you can easily add or update columns based on your needs. This unlocks a wide range of powerful use cases. See a example below:

menu.mp4

CLI Example

tablepilot import menu.png -p 'Create a table with 3 columns: name, price, and description' -m gemini-flash

v0.3.1

09 May 04:34

Choose a tag to compare

Regenerate specific columns in selected rows.

CLI
Regenerate Ingredients and Instructions columns for row id 8DR0I7 and 3dx9y6.

tablepilot regenerate recipes -r 8DR0I7 -r 3dx9y6 -c Ingredients -c Instructions -b 5 -p 'Add pasta and egg to the list of ingredients.'

WebUI/App

regen.mp4

v0.3.0

07 May 10:38

Choose a tag to compare

Backward Incompatible Changes

  • The client/clients fields has been renamed to provider/providers to align with the new "Create/Edit Provider" UI in both the WebUI and the app.
  • The image_models section has been removed. Instead, models now include a new boolean field image to indicate image generation capability.

If you're upgrading from an older version of Tablepilot, please update your TOML configuration to match the new format.

Old:

[[clients]]
name = "gemini"
type = "openai"
key = ""
base_url = "https://generativelanguage.googleapis.com/v1beta/openai/"

[[clients]]
name = "gemini-image"
type = "gemini"
key = ""

[[models]]
model = "gemini-2.0-flash-001"
client = "gemini"
rpm = 10

[[image_models]]
model = "gemini-2.0-flash-exp-image-generation"
client = "gemini-image"
rpm = 10

New:

[[providers]]
name = "gemini"
type = "openai"
key = ""
base_url = "https://generativelanguage.googleapis.com/v1beta/openai/"

[[providers]]
name = "gemini-image"
type = "gemini"
key = ""

[[models]]
model = "gemini-2.0-flash-001"
provider = "gemini"
rpm = 10

[[models]]
model = "gemini-2.0-flash-exp-image-generation"
provider = "gemini-image"
rpm = 10
image = true

New Features

  • [App] The desktop app is now in testing! You can download it from the Releases page. If you encounter any bugs, please report them.

  • [WebUI / App] You can now add and update providers and models directly through the UI.

    • Providers created in the UI are stored in the database and will persist across restarts and upgrades.
    • Important: If you're using the WebUI, providers and models defined in your config file are read-only, only those stored in the database can be edited.
    • Note: Models with the same name will be overwritten, so please use unique names to avoid unintentional overrides.
demo.mp4

v0.2.1

05 May 04:14

Choose a tag to compare

  • Fix model rate limiter not working
  • Test Tauri app release CI

v0.2.0

23 Apr 08:44
fc8f3b4

Choose a tag to compare

JSON output for describe command

Added a new -o/--output option to the describe command, allowing you to display the table schema in JSON format:

tablepilot describe recipes -o=json

Introduces new CLI command: builder

The builder command allows you to create tables interactively using natural language. You start by describing to Tablepilot what you want to build, and it will draft the initial tables for your system. Then, it will try generating detailed schemas for each table one by one.

After each table schema is generated, you’ll have the opportunity to review and modify it. Simply tell Tablepilot what you’d like to change or improve, and it will update the schema accordingly.

Note: The builder command only helps you design and create tables. To generate the actual rows for your tables, you’ll still need to use the generate command via the CLI or Web UI.

Example:

tablepilot % go run main.go builder
This command will create a set of tables based on your requirement.
Please describe what you want to build, press Enter to finish
> cyberpunk story

Generated Tables:
- Location: Locations in the cyberpunk world, including cities, districts, and specific establishments.
----------
- Character: Characters in the cyberpunk story, including their background, skills, and motivations.
depends on: Location
----------
- Cybernetic: Cybernetics and augmentations available in the setting, including their effects and potential drawbacks.
----------
- Faction: Factions and organizations operating in the cyberpunk world, including their goals and influence.
depends on: Location
----------
- Technology: Cyberpunk technologies, including weapons, vehicles, and hacking tools.
----------
- Storyline: Cyberpunk storylines, including quests, missions, and plots.
depends on: Character, Location, Faction, Technology
----------

Is this table list acceptable? Type any suggestions for improvements, or leave blank if it's good enough. Press Enter when you're done:
Final table list accepted. Start creating tables...
Start generating table schema

Table Name: Cybernetic
Table Description: Cybernetics and augmentations available in the setting, including their effects and potential drawbacks.

Here is the columns of the table in JSON format:
{"name":"Cybernetic Name","description":"Name of the cybernetic augmentation","type":"string","fill_mode":"ai","source":"","random":false,"replacement":false,"repeat":0,"context_length":3,"linked_column":"","linked_context_columns":null}
{"name":"Description","description":"Detailed description of the cybernetic and its function","type":"string","fill_mode":"ai","source":"","random":false,"replacement":false,"repeat":0,"context_length":5,"linked_column":"","linked_context_columns":null}
{"name":"Effects","description":"The effects of the cybernetic augmentation, both positive and negative","type":"string","fill_mode":"ai","source":"","random":false,"replacement":false,"repeat":0,"context_length":3,"linked_column":"","linked_context_columns":null}
{"name":"Drawbacks","description":"Potential drawbacks or side effects of the cybernetic","type":"string","fill_mode":"ai","source":"","random":false,"replacement":false,"repeat":0,"context_length":3,"linked_column":"","linked_context_columns":null}

Is this table acceptable? Type any suggestions for improvements, or leave blank if it's good enough. Press Enter when you're done:

What's Changed

Full Changelog: v0.1.9...v0.2.0

v0.1.9

16 Apr 09:15
124f6c7

Choose a tag to compare

You can now edit the table schema in the webUI. Clicking any column will open the "Update Table" dialog, which is similar to the "Create Table" dialog.

415.mp4

Add a new source type files, which is similar to list type but the values are file paths match the paths field. This is designed to use together with image type column for vision tasks. Example(from icon_jokes):

Before, the images.csv contains all png file paths in examples/icon_jokes/images dir:

...
  "sources": [
    {
      "name": "images",
      "type": "csv",
      "paths": ["examples/icon_jokes/images.csv"]
    }
  ],
  "columns": [
    {
      "name": "Image 1",
      "description": "The first icon image file",
      "type": "image",
      "fill_mode": "pick",
      "linked_column": "image",
      "source": "images",
      "random": true
    }
...

After, the images.csv file is not required anymore, same as the linked_column field in column def:

...
  "sources": [
    {
      "name": "images",
      "type": "files",
      "paths": ["examples/icon_jokes/images/*.png"]
    }
  ],
  "columns": [
    {
      "name": "Image 1",
      "description": "The first icon image file",
      "type": "image",
      "fill_mode": "pick",
      "source": "images",
      "random": true
    },
...

What's Changed

Full Changelog: v0.1.8...v0.1.9