Workspace administra la organización activa. Ábrelo desde Workspace en la cabecera (por defecto Miembros).
Barra lateral de Workspace
La barra Workspace a la izquierda lista Miembros, Invitaciones, Grupos de usuarios, tokens API, Campos personalizados y Actividad. En escritorio puedes contraerla a una mini-barra solo con iconos; el avatar o la inicial de la organización sigue visible en la cabecera. Pasa el cursor o enfoca un icono para leer su etiqueta en un tooltip. El estado de contracción se guarda por navegador y es independiente de las barras de proyecto o usuario.
Miembros (/workspace/members)
La pantalla comparte el sistema visual de Invitaciones: breadcrumb mono workspace / miembros, título, subtítulo que explica los roles, y la acción Invitar miembros que abre el diálogo de invitación en la misma pantalla (sin exportar CSV).
Propietarios y administradores pueden:
- Buscar por nombre o email desde el slot de búsqueda de la barra de filtros compartida (lado del servidor, sin distinguir mayúsculas, con debounce)
- Agregar un filtro Rol desde Agregar filtro: un chip de selección múltiple sobre Propietario, Administrador, Miembro y Lector. Los roles seleccionados se combinan con OR (
role=admin,owner); la búsqueda y el chip de rol se combinan con AND en el servidor; el contador N de N muestra cuántas filas coinciden. El estado del filtro vive en la URL y cualquier cambio reinicia a la página 1 - Revisar columnas Miembro (foto de perfil si existe; si no, avatar con iniciales; nombre del perfil o derivado del email; email completo; badge TÚ en tu fila), Rol (chip), En la organización desde (fecha absoluta y sublínea relativa), Acciones
- Cambiar el rol con el control inline por fila (
PATCH /api/orgs/:orgUlid/members/:userUlid) — no se puede promover a propietario desde esta pantalla - Quitar miembros con el icono de papelera (
DELETE) tras confirmación
En una pantalla angosta (ancho de teléfono) la tabla se convierte en una lista de tarjetas: cada miembro se presenta como su propia tarjeta, mostrando el mismo chip de rol y la fecha de ingreso, con el control de cambio de rol y la acción de eliminar disponibles en la tarjeta. Todos los filtros, la búsqueda y las acciones que tienes en una pantalla más ancha siguen ahí — solo cambia la disposición. En ancho de tableta y superior la lista es la tabla descrita arriba.
No puedes quitarte ni degradarte a ti mismo, y el único propietario no puede ser eliminado ni degradado (la API responde 409 last_owner si se viola). Ascender a un viewer a un rol de pago se rechaza con 409 seat_limit_exceeded cuando la organización está en su límite de puestos; un viewer nunca consume un puesto, y degradar a un miembro libera uno para la próxima invitación o ascenso.
Invitaciones (/workspace/invitations)
La pantalla sigue el mock del producto: breadcrumb mono workspace / invitaciones (sin título h1 aparte), una acción Nueva invitación que abre un modal (en lugar de un formulario dentro de la página), y la sección Historial de invitaciones. La barra de filtros del historial ofrece un campo de búsqueda (correo del invitado, lado del servidor y con debounce) más chips Estado y Rol desde Agregar filtro: cada uno de selección múltiple que escribe parámetros separados por coma (status=pending,expired). Los valores se combinan con OR dentro de un chip y con AND entre la búsqueda y ambos chips; cualquier cambio reinicia a la página 1. Los filtros del historial no afectan el modal de invitación.
El modal Nueva invitación tiene dos pestañas, Individual y Masiva, cada una con su propia casilla Acceso:
- Individual envía una sola invitación: indica correo y rol del invitado (
admin,memberoviewer— no owner) y selecciona Invitar. El invitado recibe un correo con un enlace/invite/:token. - Masiva envía hasta 50 invitaciones de una vez bajo un solo rol compartido: pega direcciones separadas por saltos de línea, comas o punto y coma, y un contador debajo del campo indica cuántas direcciones distintas se enviarán realmente (las líneas en blanco y los repetidos que solo difieren en mayúsculas no cuentan dos veces). Si se crean todas las direcciones, el modal se cierra; si alguna dirección es rechazada, el modal permanece abierto, lista cada dirección rechazada junto a su propio motivo (ya invitada, ya es miembro, o no es un correo válido), y conserva en el campo solo las direcciones rechazadas para que un reenvío corregido no pueda duplicar una invitación ya creada. Un rechazo que aplica a toda la lista (por ejemplo, alcanzar el límite de puestos de tu organización) se indica una sola vez y nunca se atribuye a una sola dirección.
- Acceso: márcala para otorgar al invitado — o, en la pestaña Masiva, a cada dirección de la lista — acceso a todos los proyectos privados en cuanto acepten la invitación; la concesión se reproduce al aceptar, no es inmediata. Para los roles
owneryadminla casilla aparece deshabilitada, con una nota que explica que ese rol ya alcanza todos los proyectos, así que marcarla no otorgaría nada.
Owners y admins también pueden:
- Revisar columnas Email · estado (icono de correo por fila, texto de estado, chip de rol), Invitado por (avatar con iniciales, nombre visible y correo del invitador), Enviada y Expira (fecha absoluta y sublínea relativa cuando aplica).
- En filas Pendiente, usar iconos Reenviar (
POST .../invitations/:ulid/resend, rota el token y reenvía el correo) o Revocar (DELETE).
Una fila Pendiente cuyo correo no se pudo entregar muestra un indicador de advertencia junto a su estado: No entregable — invita otra dirección significa que el proveedor de correo del destinatario rechazó la dirección de forma permanente (un rebote o un reporte de spam) — invitar a otra dirección es la única salida. No se pudo entregar — puedes reenviarla significa que la entrega se reintentó y no tuvo éxito por otro motivo — reenviarla puede funcionar. En ambos casos la invitación sigue Pendiente; no se revoca automáticamente. El indicador puede tardar un momento en aparecer después de enviar o reenviar la invitación (la entrega ocurre después de que la solicitud termina) y persiste tras recargar la página.
En una pantalla angosta (ancho de teléfono) el historial de invitaciones se convierte en una lista de tarjetas: cada invitación se presenta como su propia tarjeta, mostrando los mismos valores de correo, estado, rol, invitador, envío y vencimiento, con reenviar/revocar disponibles en las tarjetas Pendiente. En ancho de tableta y superior la lista es la tabla descrita arriba.
Etiquetas de estado cortas (Pendiente, Vencida, etc.). Los avatares del invitador usan iniciales del correo (sin foto de perfil en v1).
Límites: una invitación pendiente por correo y org; máximo 50 pendientes; vencen a los siete días.
Grupos de usuarios (/workspace/groups)
Los grupos permiten a propietarios y administradores organizar a los miembros en colecciones que pueden gestionar en conjunto: un nombre, una descripción opcional y un listado de miembros. El acceso a proyectos por grupo aún no existe: la columna PROYECTOS de la lista y la pestaña Proyectos del detalle se ven inertes, mostrando lo que vendrá sin dar a entender que ya funciona.
La lista sigue el sistema visual del workspace: una columna TÍTULO con el nombre del grupo y su descripción en una segunda línea subordinada (omitida por completo cuando el grupo no tiene descripción), los conteos USUARIOS y PROYECTOS, y la acción de cabecera Nuevo grupo. Un único campo de búsqueda de texto libre (sin chips de filtro — un grupo no tiene ningún campo categórico que filtrar todavía) busca por nombre y por descripción, del lado del servidor, y viaja en la URL.
Propietarios y administradores pueden:
- Crear un grupo desde Nuevo grupo: un nombre (obligatorio, único en la organización), una descripción opcional y un campo de miembros opcional — un multiselect con buscador que muestra el avatar de cada miembro de la organización, para dejar el listado inicial del grupo listo en el mismo paso en lugar de agregar miembros de uno en uno después. Este campo solo aparece al crear; editar el nombre o la descripción de un grupo más adelante no lo ofrece — usa las acciones Agregar miembro/Quitar del grupo de la pantalla de detalle para gestionar la membresía después de crear el grupo.
- Renombrar un grupo o editar su descripción desde la acción Renombrar del menú de la fila — un solo diálogo, el mismo formulario usado para crear.
- Eliminar un grupo desde la acción Eliminar del menú de la fila. Un grupo con miembros se elimina junto con sus filas de membresía en un solo paso; no es necesario vaciarlo primero.
- Abrir un grupo para llegar a su pantalla de detalle en
/workspace/groups/{groupUlid}, direccionada por el ULID del grupo (no un slug), así que renombrarlo nunca rompe un enlace guardado.
La pantalla de detalle muestra el nombre y la descripción del grupo con las mismas acciones de renombrar/eliminar, y dos pestañas:
- Miembros — el listado del grupo: avatar, nombre y correo, chip de rol, cargo, y una acción Quitar del grupo por fila con una confirmación que nombra a la persona. La acción Agregar miembro ofrece solo a los miembros de la organización que aún no están en el grupo.
- Proyectos — un marcador de posición inerte, con apariencia terminada, para el acceso a proyectos por grupo que esta versión aún no incluye.
En una pantalla angosta (ancho de teléfono) tanto la lista como el listado de Miembros se convierten en listas de tarjetas, con cada acción siempre visible (nunca solo al pasar el cursor). En ancho de tableta las acciones de fila se consolidan en un solo menú; en escritorio y superior se ve la fila completa.
Los miembros con rol member o viewer ven un mensaje de permiso en lugar del listado en ambas pantallas; la entrada de la barra lateral sigue visible para cualquier miembro sin importar su rol.
Tokens de API (/workspace/api-tokens)
La pantalla comparte el sistema visual de Invitaciones y Miembros: breadcrumb mono workspace / tokens de API (segmento actual en acento), título y descripción.
Propietarios y administradores pueden:
- Crear un token desde la tarjeta Nuevo token: campo Nombre (estilo
bg-input) y botón de acento Crear token con icono de llave. No hay selector de organización: el token siempre se crea para la organización que tiene el foco. - Copiar el secreto en texto claro del panel ámbar de revelación única justo después de crear (cerrar con Cerrar); el secreto no vuelve a mostrarse.
- Buscar tokens por nombre y acotarlos con el chip Último uso (Usado / Nunca) desde la barra de filtros compartida. La lista está paginada; el estado del filtro vive en la URL y cualquier cambio reinicia a la página 1. La petición siempre se acota a la organización activa en el servidor.
- Revisar tokens activos en una tabla con columnas Nombre, Creado (fecha absoluta y sublínea relativa), Último uso (fecha dual o Nunca si no se usó) y Acciones.
- Revocar con el icono de papelera (
DELETE /api/v1/me/api-tokens/:ulid) tras confirmación.
En una pantalla angosta (ancho de teléfono) la lista de tokens se convierte en una lista de tarjetas: cada token se presenta como su propia tarjeta, mostrando los mismos valores de creación y último uso, con la opción de revocar disponible. En ancho de tableta y superior la lista es la tabla descrita arriba.
No hay columna de organización por fila (la pantalla está acotada a la organización activa). La lista muestra estados distintos de carga, vacío, error y vacío-filtrado.
Campos personalizados (/workspace/custom-fields)
Propietarios y administradores definen campos de metadatos (sistema y personalizados) y a qué proyectos aplica cada uno. Guía detallada: Campos personalizados (Workspace).
Adjuntos (/workspace/attachments)
Cualquier miembro puede monitorear el uso de almacenamiento y explorar todos los archivos que la organización ha subido, en todas las superficies de adjuntos. Propietarios y administradores además pueden seleccionar archivos y eliminarlos en lote. Guía detallada: Adjuntos (Workspace).
Actividad (/workspace/activity)
Propietarios y administradores pueden revisar un feed append-only de cambios de dominio (proyectos, casos, miembros, invitaciones, tokens de API, etc.). Más detalle en Actividad del workspace en la documentación del producto.