<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/stop-guessing-why-a-tunneled-connection-failed-v0-18-0-classifies-the-error-by-hop-streams-the-ste-p28q8uprd" -->

---
title: Stop guessing why a tunneled connection failed. v0.18.0...
description: Tabularis v0.18.0 is a substantial release focused on database administration and usability. Key additions include a full Users &amp; Privileges management UI for...
canonical: https://daily.dev/posts/stop-guessing-why-a-tunneled-connection-failed-v0-18-0-classifies-the-error-by-hop-streams-the-ste-p28q8uprd
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Stop guessing why a tunneled connection failed. v0.18.0 classifies the error by hop, streams the steps, and hands you a copyable diagnostics report. | daily.dev
og:description: Tabularis v0.18.0 is a substantial release focused on database administration and usability. Key additions include a full Users &amp; Privileges management UI for...
og:url: https://daily.dev/posts/stop-guessing-why-a-tunneled-connection-failed-v0-18-0-classifies-the-error-by-hop-streams-the-ste-p28q8uprd
og:image: https://api.daily.dev/og/posts/P28Q8uprD.png
og:image:alt: Stop guessing why a tunneled connection failed. v0.18.0 classifies the error by hop, streams the steps, and hands you a copyable diagnostics report.
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Stop guessing why a tunneled connection failed. v0.18.0 classifies the error by hop, streams the steps, and hands you a copyable diagnostics report.

**[Lonely Programmer](https://daily.dev/sources/lonely_programmer)** · [@andreadebernardi](https://daily.dev/andreadebernardi) · 25 upvotes · 4 comments

## Summary

Tabularis v0.18.0 is a substantial release focused on database administration and usability. Key additions include a full Users & Privileges management UI for MySQL and MariaDB (list, create, edit grants), a rebuilt connection test modal that classifies SSH/tunnel/DB errors step-by-step with a copyable diagnostics report, and an all-databases mode that auto-discovers databases without requiring upfront selection. The data grid gains arrow-key navigation, discoverable Cmd+A select-all, explicit copy scopes (page vs. full result), multi-column and cell-range selection. The Run button now labels itself 'Run Statement' vs 'Run Selection' to prevent silent partial execution. ER diagram export to Mermaid and DBML is added, along with layout fixes. PostgreSQL improvements include editable hstore columns, visible expression indexes, pg_catalog-based key detection for read-only users, and reserved identifier quoting in the query builder. SQLite databases can now be created from within the app. A security pass on notebook SQL generation fixes replacement-pattern injection and identifier escaping. DynamoDB plugin is now in the official registry. Fifteen external contributors participated.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://tabularis.dev/blog/v0180-user-privileges-connection-diagnostics-grid-selection>

## Community discussion

Top comments from developers on daily.dev.

**@ahmetozel** · 2 upvotes

> Per-hop classification is much more actionable than a single connection failed result. The copyable report should redact usernames, hostnames, keys, SQL fragments, and private addresses by default, while preserving stable error codes, hop order, elapsed time, and retryability. I would also include a correlation ID so a user can share the sanitized report and an operator can match it to detailed local logs. Diagnostics become most useful when they are safe to paste into an issue without a second security review.

**@agustinbarrientos** · 1 upvotes

> Love the button label changing with the execution scope. Partial runs should never make you guess what the button is about to do.

## Similar posts on daily.dev

- [Don’t just attend KubeCon \+ CloudNativeCon, Merge Forward your experience\!](https://daily.dev/posts/don-t-just-attend-kubecon-cloudnativecon-merge-forward-your-experience--l0rpp73x8) · CNCF · 1 upvotes · 0 comments
- [Announcing H2 2026 KCDs](https://daily.dev/posts/announcing-h2-2026-kcds-m96goajm1) · CNCF · 1 upvotes · 0 comments
- [Two months of Open Community Groups](https://daily.dev/posts/two-months-of-open-community-groups-asf52zhbs) · CNCF · 0 upvotes · 0 comments
- [CNCF Unveils Schedule for KubeCon \+ CloudNativeCon Europe 2026](https://daily.dev/posts/cncf-unveils-schedule-for-kubecon-cloudnativecon-europe-2026-ikhcoa5cb) · CNCF · 2 upvotes · 0 comments
- [CNCF Debuts KubeCon \+ CloudNativeCon Japan 2026 Schedule](https://daily.dev/posts/cncf-debuts-kubecon-cloudnativecon-japan-2026-schedule-xp5pyudub) · CNCF · 1 upvotes · 0 comments

---

Tags: [#backend](https://daily.dev/tags/backend), [#postgresql](https://daily.dev/tags/postgresql), [#mysql](https://daily.dev/tags/mysql)

[View this post on daily.dev](https://daily.dev/posts/stop-guessing-why-a-tunneled-connection-failed-v0-18-0-classifies-the-error-by-hop-streams-the-ste-p28q8uprd)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"DiscussionForumPosting","mainEntityOfPage":"https://daily.dev/posts/stop-guessing-why-a-tunneled-connection-failed-v0-18-0-classifies-the-error-by-hop-streams-the-ste-p28q8uprd","headline":"Stop guessing why a tunneled connection failed. v0.18.0 classifies the error by hop, streams the steps, and hands you a copyable diagnostics report.","text":"Shared: v0.18.0: Users and Privileges, a Connection Test That Tells You Where It Failed, and a Data Grid You Can Actually Select","url":"https://daily.dev/posts/stop-guessing-why-a-tunneled-connection-failed-v0-18-0-classifies-the-error-by-hop-streams-the-ste-p28q8uprd","datePublished":"2026-08-04T08:17:32.449Z","dateModified":"2026-08-04T08:17:32.452Z","author":{"@type":"Person","name":"Andrea Debernardi","url":"https://daily.dev/andreadebernardi","image":"https://avatars.githubusercontent.com/u/3198901?v=4","interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"EndorseAction"},"userInteractionCount":3330}},"image":"https://media.daily.dev/image/upload/s--qPvKM23u--/f_auto/v1722860399/public/Placeholder%2009","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":25},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":4}],"sharedContent":{"@type":"WebPage","url":"https://api.daily.dev/r/sOXUPpX5u"},"comment":[{"@type":"Comment","text":"Per-hop classification is much more actionable than a single connection failed result. The copyable report should redact usernames, hostnames, keys, SQL fragments, and private addresses by default, while preserving stable error codes, hop order, elapsed time, and retryability. I would also include a correlation ID so a user can share the sanitized report and an operator can match it to detailed local logs. Diagnostics become most useful when they are safe to paste into an issue without a second security review.","datePublished":"2026-08-05T17:35:16.121Z","url":"https://daily.dev/posts/P28Q8uprD#c-0nzWibGs2","author":{"@type":"Person","name":"Ahmet Özel","url":"https://daily.dev/ahmetozel","image":"https://avatars.githubusercontent.com/u/70992231?v=4"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2}},{"@type":"Comment","text":"Love the button label changing with the execution scope. Partial runs should never make you guess what the button is about to do.","datePublished":"2026-08-06T17:39:28.572Z","url":"https://daily.dev/posts/P28Q8uprD#c-wUEFydZe9","author":{"@type":"Person","name":"Agustin Barrientos","url":"https://daily.dev/agustinbarrientos","image":"https://media.daily.dev/image/upload/s--5ayxQnqn--/f_auto/v1788281802/avatars/avatar_wQYYVe5Tbj0NJ7C7qPoa8?_a=BAMAMicg0"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1}}],"isPartOf":{"@type":"WebPage","url":"https://daily.dev/squads/lonely_programmer","name":"Lonely Programmer"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Lonely Programmer","item":"https://daily.dev/squads/lonely_programmer"},{"@type":"ListItem","position":3,"name":"Stop guessing why a tunneled connection failed. v0.18.0 classifies the error by hop, streams the steps, and hands you a copyable diagnostics report."}]}
```

