---
id: 0035d
title: Doble click en Group abre tableview filtrado por group_id
status: done
priority: high
created: 2026-05-03
parent: 0035
depends_on: [0035a, 0035b, 0035c]
---

## Objetivo

Que el usuario pueda inspeccionar lo que hay dentro de un grupo. Doble
click sobre un nodo `Group` no abre la nota como un nodo normal, sino
una vista de tabla con sus hijos, busqueda y filtros.

## Cambios

1. **Discriminacion en `on_double_click_cb`**: al recibir el doble
   click sobre un node_idx, leer su `type_ref`. Si es `Group`, en
   lugar de poblar `note_node` y abrir el panel Note, setear los
   triggers para abrir tableview filtrada por `group_id == <ese
   group_id>`.
2. **Modo "filter by group" en tableview**: el panel ya tiene tabs
   por type_ref y filtros por columna. Anadir un modo (flag en
   AppState `table_filter_group_id: string`) que cuando esta seteado
   limita las filas a `WHERE group_id = ?`.
3. **Header con breadcrumb minimo**: al abrir tableview por grupo,
   mostrar arriba `Group: <name>` con el contador y un boton "Clear
   group filter" que vuelve al modo libre.
4. **Persistencia (RAM only)**: el filtro se mantiene mientras el
   panel esta abierto; al cerrar el panel se limpia. No persistir
   en la BD del app.

## Acceptance criteria

- Doble click en un nodo `Url` o `Person` etc.: abre Note como
  siempre (no cambio).
- Doble click en un nodo `Group`: NO abre Note. Abre Table con todos
  los hijos cuyo `group_id` apunta al grupo. La cabecera dice
  "Group: <name> (N)".
- Clear group filter: vuelve al tableview general.
- Busqueda y tabs por tipo dentro del filtro siguen funcionando — el
  filtro por group_id se compone con los demas.
- Tests pytest verdes (no requieren tests especificos de UI; basta
  con que los tests existentes no rompan).

## TBD

Branch `issue/0035d-tableview-drill-in`, merge `--no-ff` con tests
verdes.

## Out of scope

- Promote (sacar nodo del grupo): fase 2.
- Re-agrupar por tipo desde tableview: fase 2.
- Layouts internos del grupo expandido en canvas: fase 3.
