Conversation
Add the initial repository layout, docs and developer tooling. Introduces two Go modules under src/cli and src/tools (with sources, tests and generated ANTLR parsers), AGENTS/CONTRIBUTING/CHANGELOG/CODE_OF_CONDUCT, dual-license files (LICENSE-APACHE, LICENSE-MIT and SPDX in LICENSE), VERSION and .env.example. Adds CI and quality automation: GitHub workflows (ci, codeql, release, vulnerabilities), dependabot, golangci-lint config, CODEOWNERS and issue/PR templates. Also add .editorconfig, updated .gitignore and various tooling/coverage helpers and scripts to run the repository gates and release checks.
Introduce an activity/dashboard panel and session control: adds src/cli/internal/app/activity.go plus session stop handling and ticks; fakeConn in tests now supports Sessions and Stop. Add UI pieces (explorer, modal, picker, markdown renderer) and updates to layout, keymap, palette and theme to support new behaviors (schema sidebar, zooming results, workbench focus traversal). Render the help as markdown (goldmark/glamour) and update README/CHANGELOG to document new keys and UX. Update go.mod/go.sum with markdown and rendering dependencies and other indirect modules. Adjust numerous tests to reflect changed UI flows (quit confirmation, editor/workbench focus, table/column sizing, help rendering) and add utilities to drive tea.Cmd batches in tests.
Adds a new screens command to render the TUI without a terminal (src/cli/cmd/screens) including a small sqlite fixture and catalog output for comparing bar styles in-font. Introduces catalogue page support for table/index details (src/cli/internal/app/catalogue.go) and multiple new finding docs. Refactors activity list rendering: adds focus/resize/rebuild, shows session counts in the heading, and changes stop/terminate dialogs to warn on read-only profiles (mayChange). Updates README with bar style configuration and key changes. Adds and updates many tests to cover activity, catalogue, scrolling, editor, and UI behaviors, and tweaks various supporting code and UI tests.
Add periodic 'beat' logic for dashboard refreshes (sessions every beat, health every 5 beats, catalogue not polled) and refactor refreshed/tick behavior. Implement browse/list filtering, sorting and typing input (new src/cli/internal/app/browse.go) and related test helpers (settle, counted) and tests to validate beats, filtering, sorting and safety dialog flows. Overhaul README to reflect PostgreSQL/SQLite support, commands, safety model and UX; add many findings docs under src/cli/internal/app/findings. Misc: update key/theme rendering, small test/import fixes, add .screens to .gitignore, and various driver/ui/test adjustments.
Introduce a complete AI subsystem and UI: new internal/ai package (agent orchestration, client/transport, SSE/streaming, tools, errors) plus provider implementations and testdata for Anthropic, OpenAI, Gemini, Ollama and a local/llama backend. Add CLI integration (assistant/ask UI, picker, settings, keybindings) and related tests. Update docs (README, CHANGELOG, AGENTS.md) to describe the assistant, local model behaviour and libffi exception. Bump module dependencies and go.sum entries for the new providers and native bindings, add dev.toml exemption for the local llama package, and tweak .golangci.yml to relax bodyclose checks for AI tests/transports. Many tests and fixtures were added alongside the implementation.
Introduce a dialect parser for local AI models (JSON and Gemma dialects) with comprehensive tests and utilities to read/write tool calls. Add many prebuilt native inference libraries for macOS, Linux and Windows under src/cli/internal/ai/providers/local/embedded and update .gitignore to allow these binaries in the repo. Adjust golangci config to allow gosec on the provider log file, and update README/CHANGELOG and several CLI/app files to support the local provider and crash logging.
Introduce editor tabs and UI improvements, copy/export support, and stronger query lifecycle handling. Changes include: update user-facing docs (CHANGELOG/README) describing tabs, history, export formats, mouse behavior and keybindings; add clipboard support and text export helpers; add a new internal export package (CSV/JSON/Markdown/XLSX/XML) and SQL UI helpers; make query execution streamable and cancellable (spinner, server-side cancel); defer assistant model loading until first question and preserve pending questions; adjust table column width calculation to use natural widths; numerous tests added/updated to cover running statements, assistant loading, clipboard/export and UI behavior; bump and add indirect dependencies in go.mod/go.sum; minor refactor to initialize model as Settled() in screens command. These changes improve editor UX, result exporting and robustness of long-running queries.
Add conversation (chats) persistence and UI flows, plus related tests and CI/workspace fixes. Introduces go.work and ensures workflows pin the Go version via src/cli/go.mod (also removes go.work from .gitignore) to fix CI failures. Add chats storage and UI: list, open, forget, start new chats, transcript/replay logic, and resume capability for agents so saved conversations can be continued. Improve activity/dashboard behavior: always render an empty table (keep column headers), hide this program's own sessions by default with a visible hidden count and a setting to show them. Add Agent.Resume, conversation saving/keeping logic, many tests, and documentation/CHANGELOG updates describing the new features and settings.
Treat a model's internal deliberation as reasoning instead of printed output: add thinkOpen/thinkClose to dialects, expose Thinking markers, and update the local provider stream reader to emit reasoning chunks (start/delta/end) while hiding deliberation from the user-facing text. Add tests covering split-byte streaming, channel names, and edge cases. Unify UI grounds by introducing Palette.Surface (replacing Selection/Empty usages) and adjust Keycap/Toast/Tab styles and related views to use the new surface color. Update numerous UI components and tests to reflect the surface/keycap semantics and replace the in-row dot marker with the explicit "in use" label in pickers. Fix CI build by anchoring coverage ignore patterns in .gitignore (preventing accidental ignore of source files) and add a coverage table renderer at src/tools/internal/render/coverage.go. Misc: small layout and hint rendering improvements across details, picker, toast, and other components.
|
You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool. What Enabling Code Scanning Means:
For more information about GitHub Code Scanning, check out the documentation. |
Introduce ARCHITECTURE.md to centralize repository layout, safety and component responsibilities. Update AGENTS.md to reference the new architecture doc and tidy rules/phrasing; remove CHANGELOG.md and the changelog checklist entries from the PR template and CONTRIBUTING. Refresh README badges and Go version. Add new sqlfiles package and app files (files.go/tests) and apply widespread updates and tests across internal app, AI providers, drivers and tooling to align with the new documentation and refactored layout.
Rebrand the repository and codebase from "tui4db" to "opendba": update docs, templates and config (.env.example, README, CONTRIBUTING, ARCHITECTURE, SECURITY, CODE_OF_CONDUCT, LICENSE, .github/*) and adjust .gitignore. Rename CLI entrypoint cmd/tui4db -> cmd/opendba and update goreleaser config and binary name. Change module path in src/cli/go.mod and update import paths across the codebase (internal packages, AI providers, drivers, tools, tests, etc.). This is a mechanical rename/rebrand; no functional logic changes intended. Tests and tooling references were updated accordingly.
Big changes to CI and release automation: - Modernize GitHub Actions usage: bump checkout/setup-go/cache/upload/deploy actions, switch to go.work for Go versioning, and tighten permissions/concurrency across workflows. - Split and extend CI: refactor ci.yml into multiple jobs (gates, tests, cross, workflows), add cross-compilation and workflow auditing, and upload artifacts with newer actions. - Add new workflows: nightly (rolling/nightly builds and snapshots), release-prep (prepare release PRs), tag (create tags and dispatch release), scorecard (OpenSSF scorecard), and improvements to vulnerabilities and release workflows. - Add top-level goreleaser.yml and move/clean up old per-module goreleaser; add SBOM generation and attestations in release/nightly flows. - Dependabot: add cooldown to reduce churn for all update groups. - Add .github/zizmor.yml to enforce pinned action usage and ignore release-prep. - Product code and tests updates: add version/commit/date build info (main.go), refactor terminal prompt for testability and add tests, adjust UI footer key layout and tests, and improve keys rendering tests. - Tooling checks: add Race and Workflows checks to tools internal checks and wire race option; add semver package and tests. - Documentation and packaging: update README, AGENTS.md and CONTRIBUTING to document release/nightly process, .gitignore tweak to keep dist directory, and add goreleaser config. Overall this changeset modernizes CI, automates release/nightly processes, improves testability, and tightens tooling and security checks.
Reword various user-facing notification/toast messages to a consistent present-tense style across the CLI UI. Updates include changes like "was removed" -> "is gone", "wrote X to Y" -> "Y holds X", "saved NAME" -> "NAME is saved", "was released" -> "is unloaded", and phrasing for paste feedback (e.g. "there was nothing to paste" / "X went into Y"). Corresponding tests were updated to match the new messages. Files changed: activity.go (+test), ask.go, connections.go (+test), export.go, files.go, picker4ai.go, settings.go, setup.go (+test).
Multiple changes: introduce a catalog UI with picker and dialog (catalog.go + catalog_test.go) to inspect databases/schemas without reconnecting; add per-session handling for AI ask messages and avoid stale answers (ask.go, ask_test.go) and propagate session IDs through activity/session reads. Add Windows-specific DLL search path and non-Windows stub for the local llama provider and wire searchPath into Engine.Ready (searchpath_windows.go, searchpath_other.go, engine.go). Update screens to create a second fixture DB, keep long-lived resources, and adjust fixedStore/fixture logic (cmd/screens/main.go). Revise tests and fakes to record run contexts and surface close/commit failures (app_test.go). Improve docs and README to describe read-only vs read/write behavior and key changes, and refine CI/nightly workflows to cache Go build/module caches via actions/cache instead of setup-go dependency cache. Misc: several UI and behavior tweaks across the app and many updated tests to match the new session-aware and long-running-statement behavior.
Add an overwrite-confirmation flow and change single-click behavior for results. - Introduce sqlfiles.ErrThere sentinel and wrap it in Create so callers can detect an existing file without parsing text. - Handle ErrThere in wroteFile: show a modal asking to overwrite (overwriteFileMsg) and only write if confirmed (overwritten). - Add helper body4Sheet, confirmOverwrite, and overwriteFileMsg; wire into Model.Update. - Change save notification text from "is written" to "is saved". - Update help.md to mention asking before overwriting existing names. - Change mouse.dropped to open a record page when a single row is clicked (instead of copying the value); dragging across multiple rows still copies to clipboard. - Update tests to reflect the new overwrite prompt and click-to-open behavior. These changes let the UI ask the user before replacing an existing .sql file and make single-row clicks open the full record for easier reading.
Introduce a SQL Server (mssql) driver and related tooling: add internal/driver/mssql implementation and tests, T-SQL ANTLR grammars and generated parser, and many new findings/docs for SQL Server (access_mode, file_space, last_backup, log_reuse_wait, log_space, memory_grants_pending, missing_indexes, page_life_expectancy, server_memory, statistics_age, top_wait). Update CLI and UI: add TOP to completion keywords, adjust connection list badges and tests, and tweak model/picker/setup code. Update project metadata and dependencies (go.mod/go.sum) to include go-mssqldb, sqlmock and other required modules. Minor docs updates (README, AGENTS, ARCHITECTURE) and golangci config adjustments.
Introduce libraryRoot helper in test files and replace t.TempDir() with it so tests on Windows use a stable directory (MkdirTemp) for unpacking the inference library. This avoids failures caused by Windows preventing unlinking of open library files; the helper registers a best-effort Cleanup. Also import os/runtime where needed and skip the file-permission assertion on Windows in crash_test.
Add Windows-specific implementation for free() using golang.org/x/sys/windows and tighten build tags to exclude Windows in the other platform file. Improve List() to validate root exists and is a directory and return better errors. Document ResultSet.Duration() behavior and relax duration test assertions to allow zero-time results. Make various test fixes for cross-platform portability: adjust timing in settings_test, fix temp-dir ordering in keep_test, add connection cleanup in sqlite tests, skip permission checks on Windows and add helpers (rooted/fullPath) to build platform-appropriate absolute paths. Also update secretref tests to avoid permission assertions on Windows.
Replace an OS-name check with a runtime capability probe: measured() now calls free(os.TempDir()) >= 0 to determine if the system can report available space. Added an explanatory comment and the os import. This avoids hardcoding platform names and prevents the test from becoming stale as platforms gain support.
Replace platform-specific rooted/fullPath helpers with implementations that build from os.TempDir to avoid OS separator/drive logic. Remove the Windows-only skip in TestEnsureTightensLoosePermissions and guard the permission assertion on Windows instead. Add tests: TestWriteSecureFileFailsWhenTheTemporaryNameIsTaken and TestLoadingReportsAFileItCannotRead (with profiles/settings subtests) to cover failure modes where a temporary name is taken or a config file cannot be read. Minor comment cleanups to reflect the new behavior.
Move verifyMode and enforceDirMode into new build-tagged files (mode_unix.go and mode_windows.go) so permission checks are implemented only on Unix and are no-ops on Windows. Remove the old verifyMode and enforceDirMode implementations from file.go and paths.go and drop the unused runtime import. This isolates platform-specific behavior for file/directory permission enforcement and keeps Windows builds free of POSIX mode logic.
Import fmt and update enforceDirMode to stat the target directory and return a wrapped error if it does not exist or is inaccessible. verifyMode remains a no-op for Windows; comments adjusted to clarify that we still report a missing directory so Ensure's behavior doesn't vary by OS.
Introduce an e2e harness that walks the full UI through a real pseudo-terminal and scaffolds CI for it. A new GitHub Actions job uploads .e2e artifacts; many tests, scenarios, seed data and golden screen outputs were added under tests/e2e and a tuitest package was introduced to drive terminal runs. The dev tooling command was renamed from "screens" to "e2e" and src/cli/cmd/screens was simplified to only print the bar catalogue. go.mod was updated with terminal/pty-related dependencies and .e2e was added to .gitignore. Documentation (ARCHITECTURE, AGENTS, README) updated to describe the new e2e flow.
Add a KeyStyle build-time override so the program can be pinned to render keys in a consistent (mac/plain) style across machines. Keystroke now consults macKeyboard(KeyStyle) and a new plainKeys ldflag is passed when building the e2e test binary so screenshots are comparable between platforms. Update: add unit test for macKeyboard behavior; skip profile permission assertion on Windows in tuitest sandbox test; refresh many e2e golden screen files to use the pinned plain key labels (e.g. replacing mac symbols with "ctrl+...") and adjust related CLI help text to mention the pinned-build binary. This prevents platform-specific key glyph width differences from breaking visual comparisons.
Refine end-to-end tests: replace 'shot' steps with explicit wait/expect steps in ai.toml and chooser.toml, and add checks to ensure errors/panic messages are absent. Remove outdated ai/chooser screen fixtures for both 120x36 and 80x24. Minor whitespace fixes in catalog screen fixtures. Tighten and clarify masking patterns in suite.toml: path mask now accounts for leading spaces and replaces with " <path>", and size mask requires a space before the unit; comments added to explain the changes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What and why
Project initialization
Checklist
go run ./src/tools/cmd/dev check --cipasses