Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
255 commits
Select commit Hold shift + click to select a range
8c43dc3
feat: phase 7+8 create-copy + canvas annotations
eweren May 11, 2026
774d3d3
feat: phase 9+10 inspect polish + tests + bundle audit
eweren May 11, 2026
2ff1fd4
fix: strip module/crossorigin from figma plugin html
eweren May 11, 2026
1fd3577
fix: cjs format for main.js, minimal manifest
eweren May 11, 2026
f5ca86a
fix: target es2017 for plugin sandbox
eweren May 11, 2026
ed971bd
fix: keep type=\"module\" on ui scripts, only strip crossorigin
eweren May 11, 2026
43e7558
feat: restore full manifest after loader debugging
eweren May 11, 2026
b0c94b4
fix: read ui html from __uiFiles__ when manifest.ui is an object
eweren May 11, 2026
871a9bb
fix: drop documentchange handler to avoid loadAllPagesAsync cost
eweren May 11, 2026
6ae4003
fix: auto-validate stored credentials on app start
eweren May 11, 2026
f50633e
fix: toggle/refresh annotations as quick actions, no UI shown
eweren May 11, 2026
c7f4fca
chore: remove refresh-annotations menu entry
eweren May 11, 2026
1829d92
feat: restore icu syntax highlighting via codemirror
eweren May 11, 2026
ef74cf9
feat: inline key input in node list for unconnected nodes
eweren May 12, 2026
09e8af9
fix: don't send branch when branching is disabled
eweren May 12, 2026
ae84a4d
fix: target the correct placeholder widget class names
eweren May 12, 2026
1f749dd
fix: highlight plurals and use concrete tag class names
eweren May 12, 2026
714a71c
fix: strip svelte state proxies before postMessage; fix icu prefill
eweren May 12, 2026
f2368ad
fix: stringdetails save writes textnode + icueditor prefill
eweren May 12, 2026
6cf3884
fix: don't crash annotation sync when node has foreign annotations
eweren May 12, 2026
7e7ea80
fix: don't clone foreign annotations when removing tolgee tag
eweren May 12, 2026
b2dcf45
fix: screenshot scale 1x; suppress spurious plural diffs
eweren May 12, 2026
7438d48
fix: persist pushed translation to plugin-data after push
eweren May 12, 2026
4de6a7e
chore: drop bold styling from canvas annotation label
eweren May 12, 2026
b04dc2c
fix: after push, persist tolgee's canonical translation
eweren May 12, 2026
f5404cf
fix: also persist tolgee's isPlural after push
eweren May 12, 2026
447825d
fix: hydrate language and namespace selectors in header
eweren May 12, 2026
a584c2a
feat: language switch in header opens pull as preview
eweren May 12, 2026
aba6ac6
fix: pull fetches all namespaces when none is pinned
eweren May 12, 2026
c529b67
fix: pull surfaces empty remote translations as missing
eweren May 12, 2026
ad612ad
fix: pull is page-wide and ok commits language
eweren May 12, 2026
41b983a
feat: pull view warns when user has a selection (still page-wide)
eweren May 12, 2026
398e093
feat: dedicated per-variant editor for plural messages
eweren May 12, 2026
b29525c
chore: move "create page copy" out of the action bar
eweren May 12, 2026
590c790
feat: bits-ui tooltips for header icon buttons
eweren May 12, 2026
8d277be
feat: cursor pointer on interactive elements, text on editable
eweren May 12, 2026
551d696
refactor: clean up type definitions and formatting across multiple files
eweren May 12, 2026
47637be
chore: update dependencies and enhance UI components
eweren May 12, 2026
7a31467
chore: remove deprecated configuration files and clean up Cypress setup
eweren May 12, 2026
e652e28
refactor: migrate project structure from src-v2 to src
eweren May 18, 2026
8f50a90
fix: settings
eweren May 18, 2026
bfd89cc
feat: enhance ICU preview and settings sections
eweren May 18, 2026
8c232b7
feat: add Playwright e2e suite running against a containerized Tolgee
claude May 25, 2026
9f73a19
test: add comprehensive unit and E2E test coverage
eweren May 25, 2026
1668f98
test: expand E2E suite to 57 tests with full happy/unhappy path coverage
May 25, 2026
74e2f8b
fix: resolve pre-existing biome lint errors blocking CI
May 25, 2026
47780c1
refactor: reorganize imports and clean up code formatting
eweren May 25, 2026
15d8972
test: enhance E2E tests for Connect and Pull views
eweren May 26, 2026
4f15a6a
test: improve E2E test reliability and coverage
eweren May 26, 2026
ba90c02
perf: eliminate write-rescan loop, virtualize list, batch saves
ZuzanaOdstrcilova Jul 13, 2026
afb266b
perf: abort superseded selection scans; immediate loader on re-selection
ZuzanaOdstrcilova Jul 13, 2026
ef3ebec
perf: chunk giant-root selection scans; flush pending before heavy work
ZuzanaOdstrcilova Jul 13, 2026
faae68e
perf: stream selection scans in batches of 100
ZuzanaOdstrcilova Jul 13, 2026
96333a8
refactor: remove annotations feature
ZuzanaOdstrcilova Jul 13, 2026
7e7db35
copy: empty-state hint on the selection screen
ZuzanaOdstrcilova Jul 13, 2026
b755ebb
fix(icu): generate valid ICU plurals — force `other`, escape literal …
ZuzanaOdstrcilova Jul 15, 2026
aaa5f42
fix(security): sanitize ICU preview HTML to prevent stored XSS
ZuzanaOdstrcilova Jul 15, 2026
1607fd8
fix(ui): add timeout watchdog to bus round-trips that could hang forever
ZuzanaOdstrcilova Jul 15, 2026
c796631
fix(ui): raise streamed-request idle timeout to 5 minutes
ZuzanaOdstrcilova Jul 15, 2026
d0176ee
fix: raise Pull's page-scan/apply-translations timeouts to 5 min
ZuzanaOdstrcilova Jul 15, 2026
a3ffe6b
feat(pull): real progress + idle timeout for page scan and apply-tran…
ZuzanaOdstrcilova Jul 15, 2026
38cc4c3
fix(settings): write documentInfo/pageInfo on every settings save (H3)
ZuzanaOdstrcilova Jul 15, 2026
6600259
fix(manifest): restore vscode capability (H4)
ZuzanaOdstrcilova Jul 15, 2026
7e4ab39
fix(push): batch fetchRemoteKeys by key-name and stop swallowing errors
ZuzanaOdstrcilova Jul 15, 2026
a4b2492
fix(push): batch fetchRemoteKeys by cumulative name length, not fixed…
ZuzanaOdstrcilova Jul 16, 2026
faa3ff4
perf(screenshots): resolve node ids sequentially with periodic yields
ZuzanaOdstrcilova Jul 16, 2026
58b317b
feat(progress): bulk-write progress bar + Push diff progress (task 7 …
ZuzanaOdstrcilova Jul 16, 2026
aa9016e
refactor(ui): unify progress bar into single progressBar.svelte
ZuzanaOdstrcilova Jul 16, 2026
96dbc9f
style(ui): replace header border with subtle gradient, tighten Index …
ZuzanaOdstrcilova Jul 16, 2026
fe3f653
chore(gallery,tests): fill gallery gaps, delete dead KeySearch, extra…
ZuzanaOdstrcilova Jul 16, 2026
6db311c
style(ui): merge Index header/search/count rows into one gradient wra…
ZuzanaOdstrcilova Jul 16, 2026
cb85650
style(ui): merge Settings ViewHeader/tabs into one gradient wrapper
ZuzanaOdstrcilova Jul 16, 2026
779122a
fix(ui): Tabs.List spans full width instead of shrinking to content
ZuzanaOdstrcilova Jul 16, 2026
f7de5dd
style(ui): lighten dark header gradient, restore border, unify 8px ga…
ZuzanaOdstrcilova Jul 16, 2026
fcb782a
style(ui): add --sem-warning token, unify error/warning message colors
ZuzanaOdstrcilova Jul 16, 2026
754bb7d
fix(ui): apply header gradient to CopyView, fix Index border on empty…
ZuzanaOdstrcilova Jul 16, 2026
3e543fd
fix(ui): revert Settings tabs to independent gradient, fix CopyView h…
ZuzanaOdstrcilova Jul 16, 2026
7624c58
fix(ui): restore Settings shared gradient, keep tabs compact instead …
ZuzanaOdstrcilova Jul 16, 2026
8d4a1cb
fix(ui): CopyView header height was actually shorter than intended (b…
ZuzanaOdstrcilova Jul 16, 2026
d4303a5
fix(inspect): stop dev-mode panel from freezing after first selection
ZuzanaOdstrcilova Jul 16, 2026
67ffde3
fix(icu): stop writing raw ICU-escaped text to canvas on Pull (H10)
ZuzanaOdstrcilova Jul 17, 2026
b36ae04
fix(create-copy): match production's page naming exactly (H-dash, low…
ZuzanaOdstrcilova Jul 17, 2026
84cab1a
fix(ui): hide namespace display everywhere when namespaces aren't ena…
ZuzanaOdstrcilova Jul 17, 2026
c045270
CopyView: full production parity (Pull/Pull all, read-only selection …
ZuzanaOdstrcilova Jul 17, 2026
a103e9b
Index filter dropdown: internal scroll + pinned Clear filters footer
ZuzanaOdstrcilova Jul 17, 2026
eecefe1
Trim two confusing/verbose microcopy strings in Settings
ZuzanaOdstrcilova Jul 17, 2026
9a40e38
CopyView: redesign status/feedback area, fix missing Tooltip.Provider
ZuzanaOdstrcilova Jul 17, 2026
39a55fb
CopyView: consolidate the pre-download instruction into one EmptyState
ZuzanaOdstrcilova Jul 17, 2026
57a6ecb
CopyView: position the download EmptyState like Index, tighten copy
ZuzanaOdstrcilova Jul 17, 2026
9eb2358
CopyView: show the current string under each key in the selection list
ZuzanaOdstrcilova Jul 17, 2026
8ac1797
CopyView: drop the (i) info icon, stop claiming staleness we can't know
ZuzanaOdstrcilova Jul 17, 2026
c052ca8
CopyView: only list genuinely connected keys, drop the string preview
ZuzanaOdstrcilova Jul 17, 2026
972e83c
Fix create-copy: render ICU/plurals and apply rich text, not raw dumps
ZuzanaOdstrcilova Jul 17, 2026
d0a1ac0
CopyView: mirror Index's NodeListItem row style for the connected list
ZuzanaOdstrcilova Jul 17, 2026
9eb181d
CopyView: list unconnected nodes too, with a count row like Index
ZuzanaOdstrcilova Jul 17, 2026
ac5b714
CopyView: detect stale copies and let the user recreate them
ZuzanaOdstrcilova Jul 17, 2026
c732d1f
CopyView: mute the key row, merge the redundant status line into the …
ZuzanaOdstrcilova Jul 17, 2026
59f0c22
CopyView: show the page-wide count before "Download all" too
ZuzanaOdstrcilova Jul 17, 2026
8fd6a66
Fix: plural rendering trusted the isPlural flag over the ICU's own shape
ZuzanaOdstrcilova Jul 17, 2026
c76f4ad
Fix copy staleness: compare per-key node COUNTS, not the key set
ZuzanaOdstrcilova Jul 17, 2026
aa92f4f
Harden plural rendering: numeric-guard the sample, never write raw ICU
ZuzanaOdstrcilova Jul 17, 2026
e1553f8
Fix Recreate copy under dynamic-page; detect source-side deletions too
ZuzanaOdstrcilova Jul 17, 2026
bd44b89
CopyView: count only CONNECTED strings in both "to update" figures
ZuzanaOdstrcilova Jul 17, 2026
6e14d89
CopyView: replace "N to update" with "N strings (M not connected)"
ZuzanaOdstrcilova Jul 17, 2026
5909b11
Page-wide "Download all" scan now respects ignore rules (deliberate d…
ZuzanaOdstrcilova Jul 17, 2026
3bad7c2
CopyView: download result is now a dismissable success message that c…
ZuzanaOdstrcilova Jul 17, 2026
f9d4b7d
CopyView: stop double-scanning the page on Download all, disable Down…
ZuzanaOdstrcilova Jul 17, 2026
44ed47c
pullDiff: formatted strings no longer re-download forever ("Downloade…
ZuzanaOdstrcilova Jul 17, 2026
ab3049b
Language copies: render translations in the UI, not the Intl-less mai…
ZuzanaOdstrcilova Jul 17, 2026
a7a4469
CopyView: move the Recreate copy button inside the staleness info banner
ZuzanaOdstrcilova Jul 19, 2026
8a9af39
CopyView: give Recreate copy the outlined solid-surface button style
ZuzanaOdstrcilova Jul 19, 2026
52f22e7
CopyView: drop the eager page-wide count on Download all's empty state
ZuzanaOdstrcilova Jul 19, 2026
ac3415e
CopyView: give the keys-copy empty state the same weight as language …
ZuzanaOdstrcilova Jul 19, 2026
2283bed
CopyView: move the keys-copy explanation into an (i) header tooltip
ZuzanaOdstrcilova Jul 19, 2026
4c6d5f8
CopyView: match empty-state copy style to Index's 'Select strings for X'
ZuzanaOdstrcilova Jul 19, 2026
cb35817
CopyView: simplify the keys-copy empty state, drop redundant wording
ZuzanaOdstrcilova Jul 19, 2026
02bc4a6
CopyView: restore the download-scope explanation on the language empt…
ZuzanaOdstrcilova Jul 19, 2026
7e6655b
CopyView: drop counts from the staleness banner, flip selection count…
ZuzanaOdstrcilova Jul 19, 2026
737ec57
Index: parallelize auto-connect key search (up to 5 in flight)
ZuzanaOdstrcilova Jul 19, 2026
24f0548
Index: add a tooltip to the filter icon button
ZuzanaOdstrcilova Jul 19, 2026
0be101e
fix(ui): filter dropdown didn't open -- Tooltip+DropdownMenu trigger …
ZuzanaOdstrcilova Jul 19, 2026
bfe1e8d
Index: show counts on Connect to key / Auto-connect by exact match too
ZuzanaOdstrcilova Jul 19, 2026
eb42516
createCopy: respect ignore settings, matching production
ZuzanaOdstrcilova Jul 19, 2026
250f379
createCopy: gate keys-mode namespace label on namespacesEnabled
ZuzanaOdstrcilova Jul 19, 2026
16dbbd5
CopyView: virtualize the selection list, guard Try again against scan…
ZuzanaOdstrcilova Jul 19, 2026
b2761df
CreateCopy: use the design system instead of raw radio/checkbox/error…
ZuzanaOdstrcilova Jul 19, 2026
dba967b
e2e: fix create-copy.spec.ts locators broken by the CheckboxField/rad…
ZuzanaOdstrcilova Jul 19, 2026
f8a87f2
e2e: cover CopyView's staleness banner + Recreate flow, and the with-…
ZuzanaOdstrcilova Jul 19, 2026
1b2c4a1
test: verify recreate-write -> immediate-download is genuinely idempo…
ZuzanaOdstrcilova Jul 19, 2026
dd9202b
Dev Mode task 21: message-impact policy + bus guard + navigation gate
ZuzanaOdstrcilova Jul 19, 2026
2b73682
Dev Mode task 22: one shared UI for both editors, minipanel deleted
ZuzanaOdstrcilova Jul 19, 2026
048a7f7
Dev Mode task 23: Copy key / Copy translation / Open in Tolgee row-me…
ZuzanaOdstrcilova Jul 19, 2026
be062c5
CopyView: hide Download and Recreate copy in Dev Mode
ZuzanaOdstrcilova Jul 19, 2026
335cfe5
NodeListItem: Copy translation uses the same icon as Copy key
ZuzanaOdstrcilova Jul 20, 2026
0ddabe0
fix(settings): store clientStorage config as a JSON string, not a raw…
ZuzanaOdstrcilova Jul 20, 2026
1b7e07c
fix(push): snapshot diff+selection at Upload click; no reactive reads…
ZuzanaOdstrcilova Jul 20, 2026
7b3c688
fix: audit LOW batch (highlight cleanup, auto-connect dialog, bulk-wr…
ZuzanaOdstrcilova Jul 20, 2026
c2967af
perf(pull): fetch only the page's connected keys instead of the whole…
ZuzanaOdstrcilova Jul 20, 2026
df84f55
fix(string-details): replace no-op confirm() with a real dialog for u…
ZuzanaOdstrcilova Jul 20, 2026
ce555a8
fix(auth): a network blip during startup validation no longer locks o…
ZuzanaOdstrcilova Jul 20, 2026
9a8100e
fix(gallery): warning message catalog entries used a hardcoded light-…
ZuzanaOdstrcilova Jul 20, 2026
9322258
fix(error-banner): unify background tint with Message (12% -> 8%)
ZuzanaOdstrcilova Jul 20, 2026
ed428eb
fix(theme): header gradient fades darker, not lighter, in dark mode
ZuzanaOdstrcilova Jul 20, 2026
ed73eb4
feat(dev-mode): flash the row menu trigger to a checkmark after Copy …
ZuzanaOdstrcilova Jul 20, 2026
2d37ce7
docs(gallery): re-sweep the copy catalog — 63 -> 101 entries, fix 2 s…
ZuzanaOdstrcilova Jul 20, 2026
b0d4167
docs(gallery): add Onboarding tab — current flow vs. a proposed guide…
ZuzanaOdstrcilova Jul 20, 2026
00ff384
docs(gallery): add an interactive Copy feedback (Dev Mode) demo
ZuzanaOdstrcilova Jul 20, 2026
75bfca3
docs(gallery): simplify the onboarding wizard mock to mirror the plug…
ZuzanaOdstrcilova Jul 20, 2026
93f529a
fix(dev-mode): Copy key/translation now work in Figma's sandboxed iframe
ZuzanaOdstrcilova Jul 20, 2026
6388400
fix(dev-mode): actually write to the clipboard on copy, not just flash
ZuzanaOdstrcilova Jul 20, 2026
252d5cd
docs(gallery): onboarding wizard now reuses the real Settings sections
ZuzanaOdstrcilova Jul 20, 2026
e48cf17
fix(dev-mode): defer copy past the dropdown's focus-return so the wri…
ZuzanaOdstrcilova Jul 20, 2026
a1dd5ab
rename(dev-mode): "Copy translation" -> "Copy string"
ZuzanaOdstrcilova Jul 20, 2026
e155147
feat(onboarding): guided first-run setup wizard reusing the Settings …
ZuzanaOdstrcilova Jul 20, 2026
ac197ce
fix(auth): hydrate language/namespace pickers on manual connect too
ZuzanaOdstrcilova Jul 20, 2026
05f212b
feat(onboarding): pre-fill Current language with the project's base l…
ZuzanaOdstrcilova Jul 20, 2026
10cb4fa
feat(settings): pre-fill Branch with the project default (main), don'…
ZuzanaOdstrcilova Jul 20, 2026
e33cc4b
feat(onboarding): numbered stepper; Settings reveals Project fields a…
ZuzanaOdstrcilova Jul 20, 2026
a667cdb
refactor(onboarding): drop the "Set up Tolgee" title — Figma's chrome…
ZuzanaOdstrcilova Jul 20, 2026
70ddcbf
style(onboarding): rounded, inset stepper connectors + uppercase labels
ZuzanaOdstrcilova Jul 21, 2026
a7fd4b8
style(onboarding): single connector per gap, 24px circles, roomier st…
ZuzanaOdstrcilova Jul 21, 2026
1fae613
copy(onboarding): step names mirror the Settings tabs
ZuzanaOdstrcilova Jul 21, 2026
6641c1d
copy(settings): rename push section "Upload to Tolgee" -> "Upload opt…
ZuzanaOdstrcilova Jul 21, 2026
46a1b4a
fix(onboarding): disconnect stays on step 1 instead of jumping to Sig…
ZuzanaOdstrcilova Jul 21, 2026
7391442
fix(index): stale-link check false-flagged keys on ns-disabled projects
ZuzanaOdstrcilova Jul 21, 2026
0e6ad65
fix(pull): same stale-ns false-miss as the stale-link check
ZuzanaOdstrcilova Jul 21, 2026
313e94c
fix(branches): pre-select the project's DEFAULT branch, not the first…
ZuzanaOdstrcilova Jul 21, 2026
e2d35cc
feat(copy): show the branch a copy page downloads from
ZuzanaOdstrcilova Jul 21, 2026
d9b1a29
feat(copy): show source branch in the Create copy dialog too
ZuzanaOdstrcilova Jul 21, 2026
3d8a425
refactor(copy): move Create-copy branch indicator into the header
ZuzanaOdstrcilova Jul 21, 2026
36dd79c
feat(branches): warn when the configured branch no longer exists
ZuzanaOdstrcilova Jul 21, 2026
f942a8d
feat(search): scope key search to the configured branch
ZuzanaOdstrcilova Jul 21, 2026
0e2f8f1
chore: escape the NUL delimiter in composite map keys
ZuzanaOdstrcilova Jul 21, 2026
80625f5
chore: match upstream escape spelling for the NUL key delimiter
ZuzanaOdstrcilova Jul 21, 2026
e0e143f
fix(push,pull): surface API errors instead of hanging the spinner for…
ZuzanaOdstrcilova Jul 22, 2026
08c2b71
perf(startup): config-first init so a large selection can't stall the UI
ZuzanaOdstrcilova Jul 22, 2026
c4c8263
fix(push): normalize namespace in connect-back and conflict keys
ZuzanaOdstrcilova Jul 23, 2026
b4548ed
feat(settings): clear prefilled keys when "Prefill key format" is tur…
ZuzanaOdstrcilova Jul 23, 2026
d1afb6a
fix(settings): clear only UNTOUCHED prefilled keys, preserving manual…
ZuzanaOdstrcilova Jul 23, 2026
adf8f23
fix(prefill): regenerate a cleared key instead of leaving it empty
ZuzanaOdstrcilova Jul 23, 2026
8574dff
fix(push): register screenshot big-meta on the conflict-resolution pa…
ZuzanaOdstrcilova Jul 23, 2026
be0198e
fix(auth): refresh project feature flags on window focus
ZuzanaOdstrcilova Jul 23, 2026
90a1074
chore(gallery): add copy screens and branching/namespaces scenarios
ZuzanaOdstrcilova Jul 23, 2026
86f6e95
chore(gallery): rename the "Copy" tab to "Texts"
ZuzanaOdstrcilova Jul 23, 2026
ac9d57f
chore: remove the dead "open-on-node" relaunch button
ZuzanaOdstrcilova Jul 23, 2026
d1fdfea
chore: dead-code + unused-export cleanup, and safer unhandled-message…
ZuzanaOdstrcilova Jul 23, 2026
11b9760
fix(ui): theme-aware ICU token pills instead of fixed hex colors
ZuzanaOdstrcilova Jul 23, 2026
6023c44
docs(gallery): catalog the branch-missing banner, copy tooltip, and 6…
ZuzanaOdstrcilova Jul 23, 2026
122f112
docs(push): explain per-key big-meta branch is the current API's mech…
ZuzanaOdstrcilova Jul 23, 2026
0d58936
test: cover resolveParentNames, icuParams, and setNodeInfo merge sema…
ZuzanaOdstrcilova Jul 23, 2026
9dc60ec
test(e2e): add Push/Pull API-failure specs guarding fix 62
ZuzanaOdstrcilova Jul 23, 2026
c309e75
fix(prefill): keep manual key edits when the key style changes
ZuzanaOdstrcilova Jul 23, 2026
4fcea59
fix(push): show an empty-state instead of an endless spinner with no …
ZuzanaOdstrcilova Jul 23, 2026
e01be9c
feat(push): success summary on done, with new/updated split and scree…
ZuzanaOdstrcilova Jul 23, 2026
f01a6e7
fix(string-details): show the canvas text a plain edit will actually …
ZuzanaOdstrcilova Jul 23, 2026
229cabf
fix(conflict): plural variants on one key never count as a conflict
ZuzanaOdstrcilova Jul 23, 2026
c30e978
feat(push): merge plural forms across layers into one complete ICU
ZuzanaOdstrcilova Jul 23, 2026
cea49e0
fix(push): don't screenshot the same-key conflict losers
ZuzanaOdstrcilova Jul 23, 2026
197cbb0
feat(connect): match advanced/plural strings on their ICU, not the re…
ZuzanaOdstrcilova Jul 24, 2026
98311bd
fix(copy): recreate/download a language copy in the copy's own language
ZuzanaOdstrcilova Jul 24, 2026
1926233
fix(copy): resolve a copy's language robustly, back-compatible with t…
ZuzanaOdstrcilova Jul 24, 2026
fc07daa
fix(copy): add missing resolveCopyLanguage import (CopyView crashed)
ZuzanaOdstrcilova Jul 24, 2026
496349e
docs(copy): clarify Dev Mode keeps the staleness banner, hides only R…
ZuzanaOdstrcilova Jul 24, 2026
c3a09f6
fix(copy): read a copy's language from its name, before the language …
ZuzanaOdstrcilova Jul 24, 2026
9f10a20
fix(copy): recreate lost its translations when CopyView unmounted mid…
ZuzanaOdstrcilova Jul 24, 2026
0234deb
fix(copy): keys copy writes the key onto mixed-font (rich) nodes too
ZuzanaOdstrcilova Jul 24, 2026
46e5a88
feat(copy): permanent "Recreate copy" header action on keys copies
ZuzanaOdstrcilova Jul 24, 2026
185a03e
feat(pull): scope Download to the selection, like the original plugin
ZuzanaOdstrcilova Jul 24, 2026
8c54a09
fix(namespaces): refresh the project namespace list after a push
ZuzanaOdstrcilova Jul 24, 2026
7affe32
feat(settings): quiet version tag + link to Figma plugin page
ZuzanaOdstrcilova Jul 24, 2026
a8c2ed1
chore(delivery): refresh preview package, track its manifest, ignore …
ZuzanaOdstrcilova Jul 24, 2026
7bc393e
fix(icu): escape only genuinely literal braces in plural variant bodies
ZuzanaOdstrcilova Aug 19, 2026
ff1d7bb
fix(icu): seed the plural count when the plural is only PART of the s…
ZuzanaOdstrcilova Aug 19, 2026
c58343f
fix(push): a plain string with escaped braces no longer loses its can…
ZuzanaOdstrcilova Aug 19, 2026
baff0ae
fix(pull): don't record a translation whose ICU failed to render
ZuzanaOdstrcilova Aug 19, 2026
d440c51
test(icu): lock in that ICU from the published plugin round-trips unc…
ZuzanaOdstrcilova Aug 19, 2026
f4fc952
test(pull): cover the stale nodes a migration from the published plug…
ZuzanaOdstrcilova Aug 19, 2026
ab10c39
fix(push): stop reporting changes for tags the push will never apply
ZuzanaOdstrcilova Aug 19, 2026
86ea4cd
fix(push): drop the "0 / …" counter when there is nothing to count
ZuzanaOdstrcilova Aug 19, 2026
93b5824
fix(push): refresh every cache the upload invalidates, not just the diff
ZuzanaOdstrcilova Aug 19, 2026
c158e76
fix(ui): close tooltips when the pointer leaves the plugin iframe
ZuzanaOdstrcilova Aug 19, 2026
7890d04
fix(copy): identify a copy by its source page, and clean up after a f…
ZuzanaOdstrcilova Aug 19, 2026
1a24d06
fix(main): invalidate an in-flight scan the moment a new selection ar…
ZuzanaOdstrcilova Aug 19, 2026
1d14b65
fix(main): wrap bus handler dispatch so a throw can't strand the UI
ZuzanaOdstrcilova Aug 19, 2026
d9cf1f0
fix(settings): don't let a mid-save read outlive the save, and log a …
ZuzanaOdstrcilova Aug 19, 2026
4a7aee3
fix(push): report frames that failed to capture instead of quietly dr…
ZuzanaOdstrcilova Aug 19, 2026
027c8f2
fix(copy): guard a second Recreate, and report layers a missing font …
ZuzanaOdstrcilova Aug 19, 2026
b9205cb
fix(branches): treat a failed branch fetch as a failure, not an empty…
ZuzanaOdstrcilova Aug 19, 2026
856883a
fix(scan): honour hidden ancestors above the layer picked in the Laye…
ZuzanaOdstrcilova Aug 19, 2026
5e7eebf
fix(clipboard): report success only once the async fallback has resolved
ZuzanaOdstrcilova Aug 19, 2026
85e273a
fix(key-format): an empty placeholder trims a separator, not a whole …
ZuzanaOdstrcilova Aug 19, 2026
86b4275
fix(keys): join namespace and key on NUL so a `|` in either can't col…
ZuzanaOdstrcilova Aug 19, 2026
736448a
chore(ci): type-check .svelte files, and fix the 7 errors that surfaced
ZuzanaOdstrcilova Aug 19, 2026
9ea517f
test(pull): pin the plural exclusion that keeps migrated layers from …
ZuzanaOdstrcilova Aug 19, 2026
f09fab3
fix(icu): seed arguments whose own body contains braces
ZuzanaOdstrcilova Aug 19, 2026
c7c4b95
test(push): cover two plural layers that disagree within one category
ZuzanaOdstrcilova Aug 19, 2026
a5c1604
fix(copy): require a known tag for the name suffix once the language …
ZuzanaOdstrcilova Aug 19, 2026
4dd62ee
chore(git): drop files an unscoped `git add -A` swept into d024638
ZuzanaOdstrcilova Aug 19, 2026
f3a8f5d
fix(keys): finish the NUL join — the main thread was still on `|`
ZuzanaOdstrcilova Aug 19, 2026
f1b9b20
feat(push): say WHY a key is changed when the text is identical
ZuzanaOdstrcilova Aug 20, 2026
82e3a62
chore(delivery): rebuild the shippable package from the current build
ZuzanaOdstrcilova Aug 20, 2026
f5c03ab
test(e2e): point the specs at the UI's current button labels
ZuzanaOdstrcilova Aug 20, 2026
51fa5ca
test(e2e): repair the branches spec, and the label drift the others s…
ZuzanaOdstrcilova Aug 20, 2026
2c746ef
test(e2e): finish the label-drift group — pull, push and page-setup g…
ZuzanaOdstrcilova Aug 20, 2026
4d814c2
test(e2e): rewrite the namespaces spec against the namespace UI that …
ZuzanaOdstrcilova Aug 20, 2026
594566b
test(e2e): rewrite the settings spec against the three-tab view
ZuzanaOdstrcilova Aug 20, 2026
e17fb56
test(e2e): point the onboarding spec at the current stepper
ZuzanaOdstrcilova Aug 20, 2026
74ca18c
test(e2e): index, create-copy, onboarding and string-details green
ZuzanaOdstrcilova Aug 20, 2026
26843a1
test(e2e): rewrite the connect spec for the search-driven view
ZuzanaOdstrcilova Aug 20, 2026
1fc1d5b
Merge branch 'main' into zuzka/v2-ux-perf
ZuzanaOdstrcilova Sep 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 0 additions & 2 deletions .eslintignore

This file was deleted.

26 changes: 0 additions & 26 deletions .eslintrc.json

This file was deleted.

122 changes: 81 additions & 41 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,81 +2,121 @@ name: Test

on:
push:
branches: [main, release]
branches: [main, release, rewrite-svelte-v2]
pull_request:

env:
PNPM_VERSION: 10
NODE_VERSION: "20.x"

jobs:
static-check:
name: Static check 🪲
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
node-version: "20.x"

- name: Cache node modules
uses: actions/cache@v3
version: ${{ env.PNPM_VERSION }}
- uses: actions/setup-node@v4
with:
path: ~/.npm
key: cache-node-modules-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
node-version: ${{ env.NODE_VERSION }}
cache: pnpm

- name: Install
run: npm ci
run: pnpm install --frozen-lockfile

- name: Typecheck
run: pnpm run typecheck

# `tsc` does not look at .svelte files and biome doesn't process them, so
# without this step every component in src/ui is unchecked — an `await`
# in a non-async function passed CI as green.
- name: Typecheck Svelte
run: pnpm run typecheck:svelte

- name: Typescript
run: npm run tsc
- name: Lint
run: pnpm run lint

- name: Eslint
run: npm run eslint
- name: Unit tests
run: pnpm run test

build:
name: Build 🏗
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
node-version: "20.x"

- name: Cache node modules
uses: actions/cache@v3
version: ${{ env.PNPM_VERSION }}
- uses: actions/setup-node@v4
with:
path: ~/.npm
key: cache-node-modules-build-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
node-version: ${{ env.NODE_VERSION }}
cache: pnpm

- name: Install
run: npm ci
run: pnpm install --frozen-lockfile

- name: Build
run: npm run build
run: pnpm run build

- name: Upload dist
uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
retention-days: 7

test:
name: Cypress
e2e:
name: E2E (Playwright + Tolgee)
runs-on: ubuntu-latest
timeout-minutes: 20

steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
node-version: "20.x"

- name: Cache node modules
uses: actions/cache@v3
version: ${{ env.PNPM_VERSION }}
- uses: actions/setup-node@v4
with:
path: ~/.npm
key: cache-node-modules-cypress-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
node-version: ${{ env.NODE_VERSION }}
cache: pnpm

- name: Install
run: npm ci
run: pnpm install --frozen-lockfile

# Start Tolgee in the background as early as possible so its slow JVM
# warm-up overlaps with the rest of the build steps.
- name: Start Tolgee platform
run: pnpm run e2e:up

- name: Install Playwright browsers
run: pnpm exec playwright install --with-deps chromium

- name: Cypress run
run: npm run cy:run
- name: Build plugin
run: pnpm run build

- uses: actions/upload-artifact@v4
- name: Wait for Tolgee
run: pnpm run e2e:wait

- name: Run Playwright
run: pnpm exec playwright test

- name: Capture Tolgee logs on failure
if: failure()
run: docker compose -f e2e/docker-compose.yml logs --no-color > tolgee.log || true

- name: Upload Playwright report
if: always()
uses: actions/upload-artifact@v4
with:
name: e2e
name: playwright-report
path: |
./cypress/videos/**/*
./cypress/screenshots/**/*
e2e/playwright-report/**/*
e2e/test-results/**/*
tolgee.log
retention-days: 7

- name: Stop Tolgee
if: always()
run: docker compose -f e2e/docker-compose.yml down -v
13 changes: 11 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,23 @@
*.log
*.log.*
node_modules
.DS_Store

out/
dist/
build
code.js
manifest.json
# …but the shippable delivery package keeps its own manifest (the bare
# `manifest.json` rule above is only meant for the generated root/dist one).
!delivery/tolgee-plugin/manifest.json

cypress/videos
cypress/screenshots
# Playwright (v2 e2e)
e2e/test-results/
e2e/playwright-report/
playwright/.cache/

.vscode

# Local Claude Code config — machine-specific, never part of a change.
.claude/
5 changes: 0 additions & 5 deletions .prettierignore

This file was deleted.

1 change: 0 additions & 1 deletion .prettierrc.json

This file was deleted.

38 changes: 38 additions & 0 deletions biome.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
"vcs": {
"enabled": true,
"clientKind": "git",
"useIgnoreFile": true
},
"files": {
"ignoreUnknown": true,
"ignore": ["dist", "node_modules", "**/*.svelte", "**/schema.generated.ts"]
},
"formatter": {
"enabled": true,
"indentStyle": "space",
"indentWidth": 2,
"lineWidth": 100
},
"javascript": {
"formatter": {
"quoteStyle": "double",
"semicolons": "always",
"trailingCommas": "all"
}
},
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"suspicious": {
"noExplicitAny": "warn"
},
"style": {
"useImportType": "error",
"useNodejsImportProtocol": "error"
}
}
}
}
9 changes: 0 additions & 9 deletions cypress.config.mjs

This file was deleted.

9 changes: 0 additions & 9 deletions cypress/common/tools.ts

This file was deleted.

Loading
Loading