| 2026-09-17 |
Add BugTrail logo: extension icons, favicons and popup/options branding
...
SVG mark (brand/bugtrail.svg): a bug at the head of the trail of steps
it walked, Tokyo Night palette. PNG icons 16/32/48/128 are rendered
from it (verify-logo.mjs) and shipped in the extension manifest;
web panel gets an SVG favicon; popup and options headers show the mark
instead of the generic bug glyph.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
20 hours ago
|
Rename the service to BugTrail
...
Bug + trail: the recorded trail of actions leading to the bug.
User-facing rename in the web panel shell, extension manifest/popup/
options, API title, i18n locales and README; Firefox id is now
bugtrail@gnexus.space. Internal @ltt/* package scopes unchanged.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
20 hours ago
|
Report page: replace nonexistent ph-cursor-click timeline icon
...
The bundled Phosphor set has no cursor-click glyph, so click steps in
the steps timeline rendered an empty marker. Use ph-mouse-simple, and
audit all other icon names against the bundled icons.css (all valid).
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
22 hours ago
|
Extension: popup UI, panel URL, icon fix, GIF tracks and track replay
...
- Popup replaces the auto-start picker: mode choice (element note /
record steps), latest report card with open / replay / delete, web
panel link; share links open at panelUrl (default :5173)
- Register the Phosphor font via the FontFace API — constructable
stylesheets ignore @font-face, which left overlay icons empty
- Recorder tracks upload as one animated GIF (gifenc) instead of per-
step screenshots; frames follow event pacing, UI hidden on capture
- Replay a recorded track from the popup: background opens the start
page, re-executes click/input/url_change steps with original pacing
and flashes the result in the overlay
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
22 hours ago
|
Extension popup: mode choice, latest report, panel link; auto-copied share links
...
- Toolbar click now opens a popup instead of jumping straight into the
picker: two mode buttons (element note / record steps with live step
count), the latest report of the default project with open and
two-step delete, and an "Open web panel" shortcut to the project page.
- New background messages (start_picker, toggle_recorder, latest_report,
delete_report, open_panel) resolve the active tab themselves; the
action.onClicked path stays for keyboard-driven flows.
- Settings gain panelUrl (falls back to serverUrl); options page gets a
"Web panel URL" input.
- After a note is submitted its share link is copied to the clipboard
automatically (with an execCommand fallback) and a brief toast
confirms it; e2e asserts the clipboard content.
- Build: new popup entry (own CSS chunk), manifest default_popup.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
23 hours ago
|
Bigger editor canvas, larger annotation text, plugin UI hidden in captures
...
- Fullscreen editor: toolbar and Save/Cancel now float above the canvas,
which takes the entire window (1344x896 vs 1147x765 at 1440x900).
- Extension composer widened to 1100px, drawing area raised to 62vh.
- Text tool renders ~2.4x larger (strokeWidth * 12, min 24px); size
slider now goes up to 20.
- Screenshots never contain the plugin's own UI: the background hides the
overlay host around every captureVisibleTab (covers region capture,
full-page tiles and recorder step screenshots); the region selector
keeps it hidden for the whole stitch via a refcounted module.
- e2e saves a step screenshot for inspection; fixed its file download to
resolve attachment id -> file id.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
23 hours ago
|
Make the annotation editor comfortable to draw in
...
- AnnotationEditor gains a fit="contain" mode: the canvas scales to fit
its box entirely instead of being cropped to container width.
- Report page: "Edit annotations" now opens a fullscreen editor overlay
(toolbar + large canvas + Save/Cancel, Escape cancels) instead of the
small inline editor.
- Extension composer: widened to 920px and the screenshot area now takes
55vh with the canvas contain-fit, so there is actual room to draw.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
23 hours ago
|

Annotated screenshots in lightbox; region/whole-page capture in extension
...
- Extract shared shapeDraw.ts (pen/arrow/rect/text) used by both the
annotation editor and the viewer.
- ScreenshotViewer lightbox now renders a canvas with the screenshot plus
annotation shapes baked in, so opening a screenshot fullscreen shows the
drawn version instead of the raw image.
- New RegionSelector step in the extension: after picking an element, the
page is captured pristine (before any overlay renders) and the user can
either drag a region on the page (cropped at devicePixelRatio) or take
the whole page via the button / Enter.
- Whole-page capture scrolls and stitches viewport tiles, hiding the
overlay and fixed/sticky elements; per-tile captures retry with backoff
because captureVisibleTab is throttled.
- NoteComposer receives the screenshot from the region selector instead of
capturing on its own; e2e updated (Enter = whole page).
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
1 day ago
|
Web: drop avatars, show navigation on shared project/report pages
...
- remove GnAvatar from the shell footer and the settings profile card
- AppShell falls back to a plain centered body when nobody is logged in, so
ProjectPage and ReportPage can wrap it too: logged-in users get the nav
shell on share-token pages, anonymous visitors keep the bare layout
- pages no longer carry their own max-width/padding (the shell body owns it)
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
1 day ago
|
Report page: full-width status select, icon-only edit button
...
- CompactSelect accepts "100%" width; the status select now fills its card
- kit cards wrap content in .card-content (padding:15px) on top of the card's
own padding — move report-card padding there so controls reach the edges
- description edit is a GnIconButton (pencil, sm) instead of a labeled button
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
1 day ago
|
Report page: full-width layout, attachment previews, screenshot lightbox
...
- stretch the kit's GnTabs (.tabs-panels shrink-wraps as a flex item) so the
details grid and panels span the whole shell
- attachments tab: image thumbnails with filename/size tiles instead of a
bare file list
- ScreenshotViewer: fullscreen lightbox with wheel/toolbar zoom capped at the
image's natural resolution, drag-to-pan, Esc/backdrop close (a drag that
ends off the image no longer closes it)
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
1 day ago
|
UI: redesign extension options page, panel tweaks from review
...
- options page: was losing its styles — the content pass overwrote
assets/style.css (cssCodeSplit:false, shared asset name); options now
emits assets/options.css and the page uses kit components (GnCard/
GnInput/GnButton/GnSelect/GnAvatar) for the same look as the panel
- panel: hide the kit topbar "current section" chip entirely (page
headers already carry context)
- ProjectsPage: vertical rhythm via a 20px column gap; project cards
redesigned (name + compact copy icon, clamped description, footer
link "Open →" instead of the clunky boxed button); gap between the
create-modal action buttons
- e2e: options-page assert follows the new profile markup
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
1 day ago
|

UI polish: fix black-on-dark leftovers, spacing, unstyled elements
...
- theme.css: design tokens mirroring kit's hardcoded Tokyo Night palette
(--ltt-* + --color-* aliases used by @ltt/ui and the overlay)
- CompactSelect: kit GnSelect is a 54px/600px form control — compact
variant for toolbar filters and the report status select
- ProjectPage: filters were blank (null modelValue matches no <option>)
and huge; drop the floating GnTable caption chip
- AppShell: empty topbar chip is now a user identity + logout; remove
unused props
- ReportPage/ProjectsPage/SettingsPage: kit .card is width:max-content/
max-width:340px — cards fill their grid now; toolbar shows localized
project count; PageHeader on settings
- ElementContext/EnvironmentInfo: row separators, dim labels, formatted
CAPTURED date, selector rendered as a code chip
- ScreenshotViewer: optional labels prop (panel passes i18n strings)
- i18n: ru plural rules ("1 проект"), no hardcoded EN strings on
auth pages; hide kit's "Forgot password?" stub link
- extension overlay: define --color-* vars on the shadow mount point
- Makefile: ext:watch/ext:test targets never parsed (colon in
.PHONY/rules) — renamed to ext-watch/ext-test
- shot.mjs: screenshot harness for visual review of all pages
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
1 day ago
|
Extension onboarding: warn when signed out, first-run click opens settings
...
- NoteComposer shows a warning banner with an "Open settings" button when
there is no session or no default project (background: open_options)
- Toolbar click opens the options page instead of the picker until the
user is signed in with a default project
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
1 day ago
|

Extension: picker, note composer, recorder + infra (Makefile, prod compose, README)
...
- MV3 extension for Chrome and Firefox: single codebase, per-entry IIFE
builds (background / content / options), manifests generated per target
- Background service worker owns all networking (Bearer token from
storage.local), captureVisibleTab (windowId!), recorder event buffer
with offset_ms and auto-screenshots on clicks
- Content overlay in a closed shadow root (constructable stylesheets,
kit CSS fetched from assets/style.css with /assets URL rewrite);
PickerLayer, NoteComposer (autofocus, Ctrl+Enter submit),
RecorderBar (step counter, note, stop)
- Options page: server URL, login, default project
- Recorder steps link screenshots by uploaded file id (server accepts
attachment id or file id); environment/element JSONB serialized with
mode="json" (datetime captured_at broke inserts)
- e2e harness: headless Chromium + extension, note + recording flows
- Makefile, docker-compose.prod.yml (caddy :8081 + static panel),
deploy/Caddyfile, README (ru) with extension install and /assets notes
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
1 day ago
|
Web panel: Vue 3 + gnexus-ui-kit, auth, projects, reports, i18n
...
- Monorepo packages: @ltt/shared (types+client), @ltt/ui (AnnotationEditor,
ScreenshotViewer, ElementContext, EnvironmentInfo), @ltt/web (panel)
- Kit assets served at /assets in dev and build (absolute font URL workaround)
- Pages: login/register, projects, public project+report pages (token=auth),
settings with en/ru switcher
- Annotation editor: pen/arrow/rect/text, Tokyo Night palette, undo,
fraction coordinates, vector shapes persisted via attachment PATCH
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
1 day ago
|