Back to releases

Theming and Rich Text

Pomavo adds a deeper theme system, richer editing, smarter attachments, code-based layouts, and shared tag suggestions for more expressive workspaces.

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.

Image placeholderA Pomavo ticket detail page using a warm Ayu theme, a rich text editor with a responsive toolbar, image attachments, a code-based screen layout, and dynamic tag suggestions.
Theming, rich text, attachments, layouts, and tags.

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 themePersonalityPrimary use
BlueClean and professionalDefault business workspace
GreenFresh and naturalSupport, success, or operations
OrangeWarm and energeticIncident and delivery teams
RoseBold and modernProduct and design teams
VioletCreative and refinedPlanning 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 familySourceNotes
Accent themesBuilt inBlue, Green, Orange, Rose, Violet
Ayu MirageBuilt inSoft warm dark theme with light variant
Ayu DarkBuilt inDeep focused dark theme with light variant
VS CodePlugin definitionFamiliar editor-inspired palette
CatppuccinPlugin definitionSoft pastel Mocha and Latte style palettes
SolarizedPlugin definitionClassic contrast-balanced family
Tokyo NightPlugin definitionDark editor-style family
NordPlugin definitionCool arctic palette
GitHubPlugin definitionGitHub-inspired light and dark palettes
GruvboxPlugin definitionWarm retro palette
KanagawaPlugin definitionPainterly editor-inspired palette
One DarkPlugin definitionDark editor palette
OxocarbonPlugin definitionHigh 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 groupExamplesUsed by
Surfacebackground, card, popover, sidebarPage and panel structure
Textforeground, mutedForegroundBody copy and metadata
Actionprimary, primaryForeground, ringButtons, links, focus states
Boundariesborder, input, sidebarBorderForms, cards, panels
Feedbackdestructive, destructiveForegroundError and danger states
Analyticschart1 through chart5Reports 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 capabilityWhere you use itWhy it matters
Headings and listsDescriptions and commentsOrganize longer explanations
Code blocksBug reports and technical notesPreserve formatting for logs and snippets
TablesTest plans, checklists, matricesKeep structured content readable
@mentionsComments and textareasNotify the right teammate
Ticket referencesDescriptions and commentsLink sequence numbers to work items
Inline imagesRich text fields and commentsAdd visual evidence in context
Threaded repliesCommentsKeep discussions focused
ReactionsCommentsSignal 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 sizeDimensionsUsed for
Preview256 by 144Attachment gallery previews
List Icon48 by 48Compact 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 primitiveWhat it controlsExample use
FieldPlaces a template fieldShow Tags or Priority in a compact area
RowGroups fields and labelsBuild a small summary strip
LabelRenders status or other labelsPut status beside priority
WidthControls horizontal spanMake a field full width or compact
x and yControls placementAlign fields on a grid
showIfEmptyControls empty field displayHide 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 featureBehaviorBenefit
Tag fieldCaptures flexible labelsLightweight classification
Topic IDGroups suggestionsShared vocabulary across templates
Dynamic suggestionsLearns reusable valuesFaster consistent tagging
Multi-template reuseSame topic across templatesAvoids 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.