This release focuses on how Pomavo feels every day: the visual system, the writing experience, attachments, layout control, and tags. You can personalize the workspace, write richer ticket content, and keep structured metadata consistent across templates.
A full theme system for every workspace
Themes now go beyond a single accent color. Pomavo supports built-in accent themes, named full themes, plugin themes, and light, dark, or system mode for every theme.
The built-in accent themes are based on a neutral zinc palette and change the primary accent color. They are ideal when you want a familiar interface with a clear team color.
| Accent theme | Personality | Primary use |
|---|---|---|
| Blue | Clean and professional | Default business workspace |
| Green | Fresh and natural | Support, success, or operations |
| Orange | Warm and energetic | Incident and delivery teams |
| Rose | Bold and modern | Product and design teams |
| Violet | Creative and refined | Planning and strategy spaces |
Named themes use full palettes, not just accent overrides. Ayu Mirage and Ayu Dark ship as built-in full themes with warm backgrounds, focused foreground colors, and golden accents.
Every theme supports Light, Dark, and System mode. System mode follows your operating system preference and recomputes the active palette automatically.
Theme families, variants, and plugin themes
Pomavo's theme registry stores a full set of color tokens for each palette. The shared theme model includes 33 color keys covering backgrounds, foregrounds, cards, popovers, secondary surfaces, muted text, accents, destructive states, borders, inputs, primary actions, sidebars, rings, and chart colors.
Plugin themes can register their own dark and light palettes, names, colors, and optional fonts. This creates a theme family model where a marketplace theme can appear in the theme picker beside built-ins.
| Theme family | Source | Notes |
|---|---|---|
| Accent themes | Built in | Blue, Green, Orange, Rose, Violet |
| Ayu Mirage | Built in | Soft warm dark theme with light variant |
| Ayu Dark | Built in | Deep focused dark theme with light variant |
| VS Code | Plugin definition | Familiar editor-inspired palette |
| Catppuccin | Plugin definition | Soft pastel Mocha and Latte style palettes |
| Solarized | Plugin definition | Classic contrast-balanced family |
| Tokyo Night | Plugin definition | Dark editor-style family |
| Nord | Plugin definition | Cool arctic palette |
| GitHub | Plugin definition | GitHub-inspired light and dark palettes |
| Gruvbox | Plugin definition | Warm retro palette |
| Kanagawa | Plugin definition | Painterly editor-inspired palette |
| One Dark | Plugin definition | Dark editor palette |
| Oxocarbon | Plugin definition | High contrast carbon-inspired palette |
Adaptive color utilities and instant application
When you choose a theme or switch mode, Pomavo resolves the palette and writes it as CSS custom properties on the document root. The change applies instantly across the app without a page reload.
This token approach keeps the web app compatible with Tailwind CSS v4 design tokens. Components read variables such as background, foreground, primary, border, sidebar, and chart colors rather than hard-coded one-off values.
The theme registry also encodes shared invariants. For example, card foregrounds follow the main foreground, muted surfaces follow secondary surfaces, inputs follow borders, ring follows primary, and sidebar primary follows primary. Theme authors define the distinctive seed values while Pomavo expands the rest consistently.
| Token group | Examples | Used by |
|---|---|---|
| Surface | background, card, popover, sidebar | Page and panel structure |
| Text | foreground, mutedForeground | Body copy and metadata |
| Action | primary, primaryForeground, ring | Buttons, links, focus states |
| Boundaries | border, input, sidebarBorder | Forms, cards, panels |
| Feedback | destructive, destructiveForeground | Error and danger states |
| Analytics | chart1 through chart5 | Reports and dashboard charts |
Font configurations for theme families
Theme plugins can include font configuration. A theme can provide a sans font for application text and a mono font for code, query editors, and technical content.
Ayu, for example, defines a sans stack based on Fira Sans with system fallbacks, and a mono stack based on Fira Code and JetBrains Mono with standard monospace fallbacks. Pomavo applies those font variables globally so the visual style is not limited to color alone.
Code, preformatted text, keyboard labels, samples, and monospace utility classes use the mono variable. The app also enables programming ligatures when the browser and selected font support them, which improves readability in code blocks and DSL editors.
Rich text editing gets more capable
Tickets already support rich text in textarea fields, descriptions, and comments. This release expands the writing experience so ticket content can carry more context without leaving Pomavo.
Rich text supports headings, bold, italic, lists, code blocks, links, @mentions, ticket references, inline attachments, comments, threaded replies, reactions, and full formatting. Tables make structured notes easier to write, especially for release criteria, incident summaries, test matrices, or comparison data.
| Rich text capability | Where you use it | Why it matters |
|---|---|---|
| Headings and lists | Descriptions and comments | Organize longer explanations |
| Code blocks | Bug reports and technical notes | Preserve formatting for logs and snippets |
| Tables | Test plans, checklists, matrices | Keep structured content readable |
| @mentions | Comments and textareas | Notify the right teammate |
| Ticket references | Descriptions and comments | Link sequence numbers to work items |
| Inline images | Rich text fields and comments | Add visual evidence in context |
| Threaded replies | Comments | Keep discussions focused |
| Reactions | Comments | Signal agreement without extra noise |
The editor toolbar is responsive. It adapts to the available container width, which keeps formatting controls usable in the ticket detail view, split panes, and narrower layouts.
Attachments with thumbnails and reference counting
Ticket attachments now support drag and drop uploads, inline embedding, and a standard upload button. Images automatically generate thumbnails for preview and compact list display.
| Thumbnail size | Dimensions | Used for |
|---|---|---|
| Preview | 256 by 144 | Attachment gallery previews |
| List Icon | 48 by 48 | Compact list and card displays |
Attachments embedded in rich text fields or comments are tracked through reference counting. If an image is used inside a description and later removed from the content, Pomavo can account for that reference instead of treating embedded files as unmanaged blobs.
Uploads and downloads use presigned URLs backed by MinIO object storage. That keeps large file transfer efficient and avoids routing file contents through the API server.
Inline attachments are part of ticket content, not just loose files. Reference tracking helps Pomavo manage files correctly as descriptions and comments change over time.
Code-based screen layouts
Screen layouts still support visual arrangement, but Pomavo also supports code-based layout definitions for advanced screens. Quick actions can add layout code for specialized experiences such as preview modals and compact hover cards.
A code layout can place fields and labels in rows, set widths, control x and y positions, align content, and hide empty fields. That gives advanced administrators a precise way to shape dense ticket displays while keeping the underlying data tied to template fields.
| Layout primitive | What it controls | Example use |
|---|---|---|
| Field | Places a template field | Show Tags or Priority in a compact area |
| Row | Groups fields and labels | Build a small summary strip |
| Label | Renders status or other labels | Put status beside priority |
| Width | Controls horizontal span | Make a field full width or compact |
| x and y | Controls placement | Align fields on a grid |
| showIfEmpty | Controls empty field display | Hide optional fields in previews |
This is especially useful for preview screens where you want high signal in a small space: tags, status, priority, owner, and the most important contextual field.
Dynamic tag fields with shared suggestions
Fields now include tag-style configuration through the Tag Topic setting. A tag field can share suggestions across templates when it points at the same topic.
The standard Tags quick action creates a tag field with dynamic suggestions shared across templates. That means a tag added on one ticket type can become a useful suggestion on another ticket type when both fields use the same topic.
| Tag feature | Behavior | Benefit |
|---|---|---|
| Tag field | Captures flexible labels | Lightweight classification |
| Topic ID | Groups suggestions | Shared vocabulary across templates |
| Dynamic suggestions | Learns reusable values | Faster consistent tagging |
| Multi-template reuse | Same topic across templates | Avoids duplicate tag systems |
Tags work best for metadata that needs to remain flexible: affected component, customer segment, release theme, investigation area, or operational label. More rigid values still belong in dropdowns or multi-select fields with configured options.
This release gives Pomavo a richer daily surface. The next step is deeper planning and reporting on top of the same themed, structured, searchable ticket data.