{"id":30825943,"url":"https://github.com/canadaluke888/ttb2","last_synced_at":"2026-04-06T05:03:30.849Z","repository":{"id":298981929,"uuid":"977405352","full_name":"canadaluke888/ttb2","owner":"canadaluke888","description":"TerminalTableBuilder 2","archived":false,"fork":false,"pushed_at":"2026-04-06T03:21:23.000Z","size":2000,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-06T03:24:08.694Z","etag":null,"topics":["c17","csv","data","database","datasets","datautils","json","ncurses","ods","spreadsheet","sqlite3","tables","terminal","terminaltablebuilder","terminaltablebuilder2","ttb","ttb2","ttbx","xlsx"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/canadaluke888.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-04T06:06:22.000Z","updated_at":"2026-04-06T03:21:31.000Z","dependencies_parsed_at":"2025-08-24T03:52:46.868Z","dependency_job_id":"28374d18-c950-4e75-ac7b-eb578545e35d","html_url":"https://github.com/canadaluke888/ttb2","commit_stats":null,"previous_names":["canadaluke888/tablecraft-c","canadaluke888/ttb2"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/canadaluke888/ttb2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canadaluke888%2Fttb2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canadaluke888%2Fttb2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canadaluke888%2Fttb2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canadaluke888%2Fttb2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/canadaluke888","download_url":"https://codeload.github.com/canadaluke888/ttb2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canadaluke888%2Fttb2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31460106,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"online","status_checked_at":"2026-04-06T02:00:07.287Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c17","csv","data","database","datasets","datautils","json","ncurses","ods","spreadsheet","sqlite3","tables","terminal","terminaltablebuilder","terminaltablebuilder2","ttb","ttb2","ttbx","xlsx"],"created_at":"2025-09-06T12:14:07.763Z","updated_at":"2026-04-06T05:03:30.844Z","avatar_url":"https://github.com/canadaluke888.png","language":"C","readme":"# TTB2 — Terminal Table Builder 2.0\n\n![logo](assets/ttb2_img.png)\n\nTTB2 is the new and improved 2.0 version of the terminal table builder. It features a clean ncurses UI that displays table data live, list-based menus, an integrated SQLite database manager, autosave, paging for wide and tall tables, an inline search mode, interactive row/column deletion, and a simple JSON-backed settings system. CSV and XLSX import/export support is built in.\n\nAll of the features you're used to, just improved.\n\n## Install\n\nDependencies (Debian/Ubuntu packages):\n- GCC/Clang (`build-essential`) \n  `sudo apt install build-essential`\n- ncurses (wide-char) (`libncursesw5-dev`) \n  `sudo apt install libncursesw5-dev`\n- SQLite3 (`libsqlite3-dev`) \n  `sudo apt install libsqlite3-dev`\n- JSON-C (`libjson-c-dev`) \n  `sudo apt install libjson-c-dev`\n- zlib (`zlib1g-dev`)\n  `sudo apt install zlib1g-dev`\n\nBuild the native binary:\n```\nmake\n```\nThis produces `./build/ttb2`.\n\nInstall to your `PATH`:\n```\nsudo make install\n```\n\nOverride the install prefix if needed:\n```\nmake install PREFIX=/usr\nmake install DESTDIR=/tmp/package-root\n```\n\nClean:\n```\nmake clean\n```\n\n## Usage\n\n```bash\nttb2\nttb2 path/to/data.csv\nttb2 path/to/data.xlsx\nttb2 path/to/table.ttbl\nttb2 path/to/book.ttbx\n```\n\nSupported startup inputs:\n- `.csv`\n- `.xlsx`\n- `.ttbl`\n- `.ttbx` directory books\n\n## Highlights\n- Interactive table editing (add columns/rows; rename columns; change types; edit cells)\n- Fast load and render times; smooth scrolling even on large tables\n- Low‑RAM seek paging (SQLite-backed, streaming windows; no OFFSET) — toggle in Settings\n- Row‑number gutter (centered, toggle in Settings)\n- Data types: int, float, str, bool (color‑coded)\n- Column paging with ←/→ and footer hints\n- Row paging with ↑/↓\n- Search mode: press F to search; navigate matches with ←/→/↑/↓; Esc exits; exact substring highlight inside the selected cell\n- Edit mode tools: [x] Delete Row, [Shift+X] Delete Column (guarded), [Backspace] Clear Cell\n- DB Manager: Connect/Create/Delete DB, Load Table, Delete Table, Close\n- Smart sync prompts when connecting/creating DB or loading CSV with a conflicting table name\n- Workspace auto-save to `.ttbx` projects (toggle via Settings, manual save with `S`)\n- Settings modal (saved to `settings/settings.json`; includes type inference, Low‑RAM seek paging, row gutter)\n- Exports: native CSV and XLSX save options (no external runtime required)\n\n## Screenshots\n\n### Main UI\n\n![main_table](assets/main_ui.png)\n\n### Table Menu\n\n![table_menu](assets/menu.png)\n\n\n## Keybindings\n- `c` Add column\n- `r` Add row\n- `e` Edit mode (arrows to navigate, Enter to edit, Esc to exit)\n- `f` Search mode (arrows to jump matches, Esc to exit)\n- `S` Save workspace project\n- `Ctrl+H` Jump to top‑left (Home)\n- `m` Table menu (Rename, Save, Load, New Table, DB Manager, Settings)\n- In Edit mode:\n  - `x` Delete row (interactive; Enter confirms)\n  - `Shift+X` Delete column (interactive; Enter confirms)\n  - `Backspace` Clear cell (with confirmation)\n  - `Ctrl+H` Jump to top‑left (Home)\n- `q` Quit\n\nNotes:\n- Terminals often report Home as `Ctrl+H`; both are shown as “Home” in the footer.\n\n## Performance / Low‑RAM Mode\n- Enable “Low‑RAM seek paging” in Settings to browse large datasets without loading everything into memory.\n- Rows are fetched in small windows and rendered incrementally to keep memory and latency stable.\n- On Windows terminals, flicker is minimized by double‑buffered updates and scanning only visible rows for column widths.\n\n## Workspace \u0026 Exports\n- A project workspace lives in `workspace/session.ttbx` by default. The file is created automatically and updated whenever autosave triggers or you press `S`.\n- Use the Export menu to write the current data as:\n  - `.ttbl` – a single-table snapshot\n  - `.ttbx` – a project/workbook bundle\n  - `.csv` or `.xlsx`\n- Export now lets you browse to a destination directory in-app before entering the output filename.\n\n## Runtime Files\n- Settings are stored in `settings/settings.json`.\n- The active workspace session book is stored in `workspace/session.ttbx` while the app is running.\n\n## CI\nGitHub Actions installs build deps and runs a simple `make`; build logs are visible in the job output.\n\n## Author\nLuke Canada (\u003ccanadaluke888@gmail.com\u003e)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcanadaluke888%2Fttb2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcanadaluke888%2Fttb2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcanadaluke888%2Fttb2/lists"}