Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
689 commits
Select commit Hold shift + click to select a range
7c80039
Shift stat icon and label column left by 2 pixels and fix shield cros…
domchen Feb 11, 2026
6b84e5e
Rename sample file and fix shield cross with counter-clockwise inner …
domchen Feb 11, 2026
9ac9dc2
Refine UI color scheme with teal upgrade button and rose battle butto…
domchen Feb 11, 2026
9f2edb9
Optimize UI color scheme with neon palette, gradients, and glassmorph…
domchen Feb 11, 2026
b675542
Restyle RPG character panel with dark fantasy gold color scheme for a…
domchen Feb 11, 2026
c55671a
Shift card icons upward to better align vertically with text content.
domchen Feb 11, 2026
fcea2cb
Shorten card titles and enlarge code bracket symbol with matching color.
domchen Feb 11, 2026
6356e7e
Fix broken XML and vertically center icons and text within cards.
domchen Feb 11, 2026
9a2fb34
Adjust text vertical centering in cards and replace tool-specific cop…
domchen Feb 11, 2026
52c1fc7
Update card copy to match B.3 style and remove tool-specific references.
domchen Feb 11, 2026
675a54a
Adjust text y positions to account for baseline rendering.
domchen Feb 11, 2026
52cede5
Revert B.1_complete_example.pagx.
domchen Feb 11, 2026
51b48f8
Merge B.3 content into B.5 with 5-card layout and bottom pipeline sec…
domchen Feb 11, 2026
2170963
Accept screenshot baseline changes for updated sample files.
domchen Feb 11, 2026
9533d3f
Simplify LayerDirectContent test by removing tgfx API sub-test and me…
domchen Feb 11, 2026
0bbd872
Redesign B.1 complete example layout with centered footer and curved …
domchen Feb 11, 2026
d2c4663
Unify Design Goals subtitles to consistent two-word format and remove…
domchen Feb 11, 2026
7bfec84
Move Get Started button to modifier row and shift all icon rows down.
domchen Feb 11, 2026
32eee91
Change Design Goals subtitle from Compact Efficient to Compact Expres…
domchen Feb 11, 2026
c55fa10
Redesign Compact Expressive icon and remove background grid.
domchen Feb 11, 2026
55ce0e3
Refine Design Goals subtitles to concise technical terms.
domchen Feb 11, 2026
e819afe
Increase subtitle curve amplitude and shift all content rows down in …
domchen Feb 11, 2026
8f03020
Update card titles to match latest spec and redesign Expressive icon.
domchen Feb 11, 2026
ca3a8ea
Rearrange cards into pentagonal ring layout and update core subtitle.
domchen Feb 11, 2026
ad4cd93
Shift all card text areas down by 5 pixels.
domchen Feb 11, 2026
c2aeed6
Center subtitle curve vertically between title and first icon row.
domchen Feb 11, 2026
0f81996
Increase subtitle curve amplitude for a more pronounced arc.
domchen Feb 11, 2026
ece8c9b
Shrink card height to 160 and expand pentagonal radius with radial co…
domchen Feb 11, 2026
5e6c9ed
Redesign Expressive icon and update all card descriptions from spec.
domchen Feb 11, 2026
13f0eee
Add top description, fix radial connectors and shorten overflowing ca…
domchen Feb 11, 2026
582d7c1
Fix connectors to radiate from circle center instead of edge.
domchen Feb 11, 2026
3e1eeec
Redesign Readable card icon with path-based code symbol.
domchen Feb 11, 2026
1dd6e29
Swap Expressive and Deployable positions and stop connectors at outer…
domchen Feb 11, 2026
86a01c3
Move card content left by 30px and place description text along circu…
domchen Feb 11, 2026
f7397ae
Shift card content left by another 20px.
domchen Feb 11, 2026
d02b181
Revert circular text radius back to 210 with single copy.
domchen Feb 11, 2026
12b4e3b
Reduce card width from 420 to 400.
domchen Feb 11, 2026
8631095
Shift card content right by 30px.
domchen Feb 11, 2026
5df2318
Move cards outward and spread rows apart and refine Expressive icon l…
domchen Feb 11, 2026
bd42a85
Start circular text path from top 12 o-clock position.
domchen Feb 11, 2026
711b3fc
Remove trailing punctuation from circular text and shrink radius to c…
domchen Feb 11, 2026
1a19580
Move cards closer to center and start connectors outside circular text.
domchen Feb 11, 2026
80fe71a
Restore circular text radius to 210 with larger font and adjust layout.
domchen Feb 11, 2026
a27b32d
Move second-row cards outward by 50px and increase connector start ra…
domchen Feb 11, 2026
1bc297a
Align icon left padding for Expressive and Portable cards and reorder…
domchen Feb 11, 2026
bffc2d2
Rename to B.5_pagx_features and add accelerating tick ring around cor…
domchen Feb 11, 2026
5b6db74
Offset second-row cards inward and downward by 20px each.
domchen Feb 11, 2026
f13e3e4
Increase circular text firstMargin offset to -15 for better A charact…
domchen Feb 11, 2026
66ad46f
Revert circular text firstMargin to -10.
domchen Feb 11, 2026
b5ffb5b
Move second-row cards down by 30px.
domchen Feb 11, 2026
47f8cd4
Fix connector lines to point radially from center and move tick ring …
domchen Feb 11, 2026
6dab83c
Move second-row cards down by 50px.
domchen Feb 11, 2026
274191b
Make tick ring denser with 50 ticks covering full circle and move sec…
domchen Feb 11, 2026
2a8de09
Fix tick ring gradient to start bright at 12 o'clock and fade clockwi…
domchen Feb 11, 2026
31549ea
Change Portable card subtitle from Cross-platform exchange to Cross-f…
domchen Feb 11, 2026
e790d99
Fix tick ring gradient to correctly start bright at 12 o'clock by usi…
domchen Feb 11, 2026
953fd3c
Change Design Goals subtitle from Portable to Interoperable.
domchen Feb 11, 2026
8a79c2c
Fix tick ring gradient angle mapping to start bright at 12 o'clock an…
domchen Feb 11, 2026
4f91b69
Fix tick ring gradient by using standard 0-360 angle range to avoid c…
domchen Feb 11, 2026
8c69f05
Preserve space characters in embedded vector fonts for correct word s…
domchen Feb 11, 2026
a508229
Clarify gradient specs and fix tick ring gradient in B.5 sample.
domchen Feb 11, 2026
3fbbec5
Fix tick ring gradient color stops to center the bright peak precisel…
domchen Feb 11, 2026
d7aebfe
Change tick ring gradient to fade from full opacity at 12 o'clock to …
domchen Feb 11, 2026
0d4eaa4
Update card text to new copy and align Expressive icon shapes vertica…
domchen Feb 11, 2026
e7d8b24
Balance line widths of card subtitle text across all five feature cards.
domchen Feb 11, 2026
0ff0aab
Fix emoji glyphs being misclassified as invisible spacing in FontEmbe…
domchen Feb 11, 2026
7378b5e
Refactor FontEmbedder to assign spacing glyphs by typeface affinity i…
domchen Feb 11, 2026
952c2ed
Improve playground publish script with timeout and skip-build option.
domchen Feb 11, 2026
c7dc935
Remove debug prints and simplify text shaper test cases in PAGXTest.
domchen Feb 11, 2026
625e411
Move SampleFiles baseline keys from PAGXTest/Samples/ to PAGXTest/ to…
domchen Feb 11, 2026
f164548
Accept baseline changes for flattened SampleFiles keys and simplified…
domchen Feb 11, 2026
28a650a
Update PAGX feature infographic with aurora glow background and card …
domchen Feb 11, 2026
8d7b4ff
Remove default-value attributes from all pagx sample files for cleane…
domchen Feb 11, 2026
f78458e
Revert default-value attribute removal from pagx sample files.
domchen Feb 12, 2026
fe22747
Simplify B.2_rpg_character_panel.pagx by merging groups with identica…
domchen Feb 12, 2026
6f9e9f8
Remove unused IconBolt resource from B.3_nebula_cadet.pagx.
domchen Feb 12, 2026
0e16b46
Simplify B.4_game_hud.pagx by merging layers with identical styles.
domchen Feb 12, 2026
928301c
Simplify B.5_pagx_features.pagx by merging groups with identical styles.
domchen Feb 12, 2026
e9f6fef
Simplify 5.6_repeater and B.1_complete_example and fix B.5 corner dec…
domchen Feb 12, 2026
b3940a4
Add PAGX sample files structural optimization report.
domchen Feb 12, 2026
cd0e66a
Add samples page to playground with hash routing and publish support.
domchen Feb 12, 2026
36b5ebb
Revert "Add samples page to playground with hash routing and publish …
domchen Feb 12, 2026
7594e7d
Reapply "Add samples page to playground with hash routing and publish…
domchen Feb 12, 2026
e9b89ba
Add sample file name to baseline comparison failure messages in loop-…
domchen Feb 12, 2026
2941b38
Remove optimization report from version control.
domchen Feb 12, 2026
ede229b
Add 4 missing PAGX sample files and rename text modifier sample to co…
domchen Feb 12, 2026
6545cf1
Add external image loading support for PAGX playground via PAGXDocume…
domchen Feb 12, 2026
5d3f0f4
Refine PAGX features sample layout and spacing.
domchen Feb 12, 2026
2e4cfc9
Extract card background Composition for reuse in B.1_complete_example…
domchen Feb 12, 2026
bbb4150
Extract empty equipment slot Composition for reuse in B.2_rpg_charact…
domchen Feb 12, 2026
973d9fb
Extract navigation button shell Composition for reuse in B.3_nebula_c…
domchen Feb 12, 2026
2463e3b
Extract bullet and arc PathData resources for reuse in B.4_game_hud.p…
domchen Feb 12, 2026
4fdb948
Extract arrow PathData resource for reuse in B.5_pagx_features.pagx.
domchen Feb 12, 2026
5b9a6d9
Add curved definition caption to PAGX sample.
domchen Feb 12, 2026
1369d91
Add PAGX structure optimization guide for AI skills.
domchen Feb 12, 2026
9aefd6a
Move PAGX optimization guide to skills format at .codebuddy/skills/pa…
domchen Feb 12, 2026
766f4f9
Expand pagx-optimize skill with 6 new optimization directions from de…
domchen Feb 12, 2026
3f41ba9
Replace 3 separate GlyphRun samples with a single merged sample using…
domchen Feb 12, 2026
33fa48e
Fix curved caption arc direction.
domchen Feb 12, 2026
d7eebef
Adjust vertical centering for text and glyph run sample files.
domchen Feb 12, 2026
4ebdff2
Fix vertical centering for text and glyph run sample files.
domchen Feb 12, 2026
8208f78
Remove duplicate register_vector for std::string already registered b…
domchen Feb 12, 2026
23c8588
Enhance samples page with thumbnail grid layout and formatted names.
domchen Feb 12, 2026
60b6691
Consolidate TrimPath samples: merge separate and continuous modes int…
domchen Feb 12, 2026
0055fba
Adjust vertical centering for TrimPath sample.
domchen Feb 12, 2026
8069293
Soften curved caption to reduce visual noise.
domchen Feb 12, 2026
211eb90
Only copy baseline images that match sample pagx files in publish scr…
domchen Feb 12, 2026
5bc5c65
Clean samples output directory before copying in publish script.
domchen Feb 12, 2026
2665d1e
Redesign TrimPath sample as a progress ring with indicator dots.
domchen Feb 12, 2026
e2ad715
Improve samples page with equal-width nav buttons and square thumbnai…
domchen Feb 12, 2026
1c42260
Fix SVG converter to skip zero-width strokes and empty layers and ful…
domchen Feb 12, 2026
d411fa2
Redesign TrimPath sample with four circles comparing separate and con…
domchen Feb 12, 2026
a10f3cf
Redesign playground page navigation with hash-based routing and simpl…
domchen Feb 12, 2026
91df693
Fix TrimPath continuous mode not being converted to the TGFX represen…
domchen Feb 12, 2026
7e8a293
Increase curved caption size for clarity.
domchen Feb 12, 2026
18f6292
Update TrimPath sample to use 0.2~0.8 range for clearer demonstration.
domchen Feb 12, 2026
297c1d4
Fix missing field conversions in PAGX to TGFX node conversion functions.
domchen Feb 12, 2026
865cc1f
Refactor navigation to preserve playback state when visiting samples …
domchen Feb 12, 2026
a5587f0
Use file URL parameter for sample playback and simplify hash routing …
domchen Feb 12, 2026
fcee81b
Clear file URL parameter when loading local files to prevent stale re…
domchen Feb 12, 2026
68d1757
Update TrimPath sample to use 0.2~0.9 range for clearer demonstration.
domchen Feb 12, 2026
7023913
Add trim range numbers to TrimPath sample labels.
domchen Feb 12, 2026
24852c2
Avoid URL encoding in file parameter by using raw path string.
domchen Feb 12, 2026
3e0c50b
Shrink TrimPath sample circles and fix vertical centering.
domchen Feb 12, 2026
afe736e
Fix URL hash leaking into file parameter and avoid trailing empty hash.
domchen Feb 12, 2026
8e1eede
Use checkerboard pattern background for sample thumbnails.
domchen Feb 12, 2026
c634fa5
Add sample file references and update TrimPath examples in both spec …
domchen Feb 12, 2026
57ee9e7
Optimize all PAGX sample files and fix Repeater default values in SKI…
domchen Feb 12, 2026
47909bf
Improve samples page UI and add browser history navigation support.
domchen Feb 12, 2026
85abfe8
Eliminate nondeterminism in PAGX text rendering by replacing unordere…
domchen Feb 12, 2026
fde5acc
Add performance optimization section to SKILL.md and optimize B.4 hex…
domchen Feb 12, 2026
23f750c
Rewrite performance optimization section with rendering cost model an…
domchen Feb 12, 2026
996a8c1
Restore original B.4 visual design while keeping canvas-clipping opti…
domchen Feb 12, 2026
a268cc0
Add fundamental constraint to SKILL.md that all optimizations must pr…
domchen Feb 12, 2026
d5f52f5
Add cross-layer style merging direction for identical DropShadowStyle…
domchen Feb 12, 2026
032767d
Add scrollRect to B.4 hex grid for precise canvas-bound clipping with…
domchen Feb 12, 2026
e4ee3b0
Add scrollRect technique to canvas-bound clipping in SKILL.md.
domchen Feb 12, 2026
19f4156
Remove scrollRect from SKILL.md optimization directions.
domchen Feb 12, 2026
11518c4
Add rule 15.8 to prefer primitive geometry over Path under Repeater f…
domchen Feb 12, 2026
d0189a5
Restore center attribute on scanning line Rectangle to fix triangle g…
domchen Feb 12, 2026
ca7fa83
Add non-obvious defaults table to SKILL.md Section 3 to prevent optim…
domchen Feb 12, 2026
a169043
update cr.md
domchen Feb 12, 2026
096cd3e
Restore center attribute on decorative tech bits Rectangle in B.4.
domchen Feb 12, 2026
e2cd2d2
Restore required startPoint attribute on LinearGradient elements acro…
domchen Feb 12, 2026
8a7f143
Move triangleMask and Resources back to top of B.4 to fix glow clippi…
domchen Feb 12, 2026
df72e08
Add mask layer position rule and required attribute warnings to SKILL…
domchen Feb 12, 2026
8ed8b5b
Add required-but-looks-optional attributes table and remove code refe…
domchen Feb 12, 2026
3b49194
Replace hex grid with three sets of parallel lines in B.4 for simpler…
domchen Feb 12, 2026
371967a
Use Group rotation instead of Layer for diagonal lines in B.4 hex grid.
domchen Feb 12, 2026
779fdaa
Fix SVG radial gradient double-transform by keeping original center a…
domchen Feb 12, 2026
7b0e378
Accept baseline changes after fixing SVG radial gradient double-trans…
domchen Feb 12, 2026
7109442
Remove redundant disabled test cases from PAGXTest and clean up unuse…
domchen Feb 12, 2026
edc9728
Fix horizontal line center to cover full canvas width in B.4 hex grid.
domchen Feb 12, 2026
9b85162
Accept baseline changes for PAGXTest after removing disabled test cases.
domchen Feb 12, 2026
ce5b92b
Add Section 15.9 decompose polygon grid into parallel line sets to SK…
domchen Feb 12, 2026
78db4f5
Replace XML code examples in PAGX spec with updated sample files.
domchen Feb 12, 2026
dd4fba7
Fix incorrect sample link filenames in Chinese PAGX spec document.
domchen Feb 12, 2026
59ea6d6
Rewrite Section 15.9 as a general rule to replace PathData with simpl…
domchen Feb 12, 2026
c570ae5
Update Appendix B with new sample content and add B.2-B.5 example sec…
domchen Feb 12, 2026
d0b9533
Replace XML code examples in Chinese PAGX spec with updated sample fi…
domchen Feb 12, 2026
5740e6e
Update B.1 code block and add B.2-B.5 example sections to Chinese PAG…
domchen Feb 12, 2026
137ff72
Add missing sample links for B.1 and update TextModifier link format …
domchen Feb 12, 2026
a3f9db9
Restructure pagx-optimize skill into three-layer progressive disclosu…
domchen Feb 12, 2026
f3bf61b
Replace std::stof and std::stoi with strtof and strtol to eliminate C…
domchen Feb 12, 2026
dbb4e82
Eliminate Path-to-SVG-to-PathData roundtrip in FontEmbedder by conver…
domchen Feb 12, 2026
7ef8073
Cache glyph type classification to avoid redundant path and image loo…
domchen Feb 12, 2026
7471548
Add Data::MakeAdopt to eliminate double allocation in Base64Decode.
domchen Feb 12, 2026
4615fed
Merge dual-pass loops into single pass for RSXform and Matrix positio…
domchen Feb 12, 2026
4e8a2bb
Optimize writeIndent and escapeXML in XMLBuilder to reduce memory rea…
domchen Feb 12, 2026
145a8fa
Remove source file links from pagx spec keeping only preview links.
domchen Feb 12, 2026
d0575d2
Simplify the text modifier processing example in section 5.5.1 to a n…
domchen Feb 12, 2026
aa11f6a
Optimize string building in XML parser and add vector reserve in shap…
domchen Feb 12, 2026
54ba55d
Remove remaining source file links from pagx spec keeping only previe…
domchen Feb 12, 2026
792950a
Embed sample code blocks for Text runtime layout and TextModifier int…
domchen Feb 12, 2026
f5d5ef6
Fix three performance issues in SVGImporter.
domchen Feb 12, 2026
f28ad00
Optimize ParseFloatList to parse floats directly from the source stri…
domchen Feb 12, 2026
a3e9ca3
Optimize Text example to demonstrate both point text and paragraph te…
domchen Feb 12, 2026
4885546
Replace lambda expressions with static functions and fix naming conve…
domchen Feb 12, 2026
b38040b
Extract ParseSemicolonSeparatedPoints helper to eliminate duplicated …
domchen Feb 12, 2026
d03b5b9
Eliminate three code duplication issues in SVGImporter by extracting …
domchen Feb 12, 2026
4ddf204
Extract ExtractGradientStops to eliminate duplicated colorStops conve…
domchen Feb 12, 2026
c54d376
Replace hardcoded Pi values with pagx::Pi constant and change static …
domchen Feb 12, 2026
bf70833
Fix low-priority issues including overflow check and reserve and swit…
domchen Feb 12, 2026
ef63c2a
Remove unnecessary XML comments from PAGX sample files while keeping …
domchen Feb 12, 2026
559ffe9
Remove unnecessary XML comments from PAGX layer and feature sample fi…
domchen Feb 12, 2026
d781f3e
Remove unnecessary XML comments from PAGX shape sample files.
domchen Feb 12, 2026
3892d1d
Remove unnecessary XML comments from PAGX paint and modifier sample f…
domchen Feb 12, 2026
bc8a61b
Remove unnecessary XML comments from PAGX text and group sample files.
domchen Feb 12, 2026
d55601e
Remove unnecessary XML comments from PAGX features overview sample file.
domchen Feb 12, 2026
8596ce0
Add PAGX quick reference with complete attribute defaults and enumera…
domchen Feb 12, 2026
04211d1
Revert Text example back to three-layer point text layout without aut…
domchen Feb 12, 2026
206dfbf
Revert Text example to original three-layer point text layout and rem…
domchen Feb 12, 2026
2ab9cec
Accept baseline changes for PAGXTest after strtof replacement and Pat…
domchen Feb 12, 2026
00f7843
Fix inaccurate descriptions in section 3.3.3 and remove incorrect fea…
domchen Feb 12, 2026
adaba80
Swap Appendix B and C so that node attribute reference comes before u…
domchen Feb 12, 2026
2ed76c9
Revert remove unnecessary XML comments from PAGX layer and feature sa…
domchen Feb 12, 2026
054bd8f
Swap Appendix B and C so that node attribute reference comes before u…
domchen Feb 12, 2026
1866f07
Accept baseline changes after swapping Appendix B and C section order…
domchen Feb 12, 2026
12c822d
Replace inline XML code blocks with sample links for sections 4.3 thr…
domchen Feb 12, 2026
91d45fa
Add PAGX_TEST macro with isolated GPU context and extract inline XML …
domchen Feb 12, 2026
2550344
Merge branch 'main' into feature/domchen_pagx
domchen Feb 12, 2026
41dcda4
Replace inline XML code blocks with sample file links and add publish…
domchen Feb 12, 2026
54ea814
Add floating preview buttons on code blocks with relative URLs instea…
domchen Feb 12, 2026
89c529f
Add left blue border to previewable code blocks and always-visible pr…
domchen Feb 12, 2026
d2a60e7
Add green sticky header bar to previewable code blocks for always-acc…
domchen Feb 12, 2026
b704a66
Switch code header to blue theme and add JS-based sticky behavior wit…
domchen Feb 12, 2026
845e5af
Use XML syntax highlight green (#22863a) for code block header and le…
domchen Feb 12, 2026
e0fe962
Use reliable marker-based preview button injection and auto-update UR…
domchen Feb 12, 2026
6d7178f
Add green left border to all XML code blocks not just previewable ones.
domchen Feb 12, 2026
37e27c9
Fix playground creating duplicate browser history entries on initial …
domchen Feb 12, 2026
7d8e446
Fix code review issues including elliptical arc conversion bug and ap…
domchen Feb 12, 2026
1caada9
Change the Chinese locale Spec button label to a localized text.
domchen Feb 13, 2026
7867a3e
Remove duplicate attribute tables from Appendix B and keep only the e…
domchen Feb 13, 2026
f0f0c4a
Fix 11 issues in PAGX spec including TrimPath edge case clarification…
domchen Feb 13, 2026
bdd9fa1
Replace matrix multiplication formulas with step-by-step transform or…
domchen Feb 13, 2026
0ea79a5
Fix code review issues including shared path converter extraction and…
domchen Feb 13, 2026
9b69f0d
Improve PAGX spec clarity on rendering pipeline order and Polystar ro…
domchen Feb 13, 2026
adfee4e
Fix Repeater opacity interpolation formula to use ceil(copies) as den…
domchen Feb 13, 2026
5dc82b4
Fix code review issues including replacing exception-throwing std::st…
domchen Feb 13, 2026
4b4c658
Fix Safari compatibility issues in playground including wasm OOB cras…
domchen Feb 13, 2026
67455ef
Remove hand-written XMLTokenizer from PAGXImporter and reuse shared X…
domchen Feb 13, 2026
961ee52
Handle CDATA sections correctly in XMLParser by flushing text at CDAT…
domchen Feb 13, 2026
efb47df
Fix spec publish script extracting wrong date from code sample conten…
domchen Feb 13, 2026
98237a8
Hide canvas during file switching and draw first frame before showing…
domchen Feb 13, 2026
01cde6d
Fix mobile touch pinch-to-zoom being too fast by switching to absolut…
domchen Feb 13, 2026
b7d0e8d
Increase curved text path radius by 5px in PAGX features sample.
domchen Feb 13, 2026
1cf4a41
Change curved text path radius from 145 to 142 to only offset 2px fro…
domchen Feb 13, 2026
ce29376
Change curved text path radius from 142 to 141 to only offset 1px fro…
domchen Feb 13, 2026
d58acd8
Accept baseline change for C.5_pagx_features after curved text path r…
domchen Feb 13, 2026
4fef460
Optimize samples page grid layout for mobile screens to show 3 column…
domchen Feb 13, 2026
a74d349
Fix data URI parsing without base64 check and simplify ColorSource ca…
domchen Feb 13, 2026
1a956d4
Move mobile samples styles after base styles to fix CSS specificity o…
domchen Feb 13, 2026
6d884b2
Refactor to reduce code duplication and improve performance across PA…
domchen Feb 13, 2026
5968530
Make nav buttons smaller and equal width for a more compact appearance.
domchen Feb 13, 2026
6d69de6
Slightly increase nav button size for better readability.
domchen Feb 13, 2026
6944244
Restore nav button height and font size while keeping equal fixed width.
domchen Feb 13, 2026
601e781
Revert nav button style changes back to original.
domchen Feb 13, 2026
7a5af22
Reduce nav button horizontal padding from 12px to 6px for a more comp…
domchen Feb 13, 2026
09a134e
Change nav button padding to uniform 8px on all sides.
domchen Feb 13, 2026
dca05b5
Add type safety to findNode and defensive checks to SVG importer.
domchen Feb 13, 2026
ef649bc
Optimize PAGX parsers and reduce code duplication across importer and…
domchen Feb 13, 2026
c9d4962
Replace browser compatibility alert with inline error UI showing mini…
domchen Feb 13, 2026
96e77e4
Update minimum browser version requirements to Chrome 69+ and Firefox…
domchen Feb 13, 2026
b7804be
Update minimum Safari version requirement from 11.3 to 15 for WebGL2 …
domchen Feb 13, 2026
192ae7f
Add minor version numbers to Chrome and Safari requirements for consi…
domchen Feb 13, 2026
60f0e76
Fix code review issues including Base64 invalid character validation …
domchen Feb 13, 2026
6c428ae
Fix code review issues in PAGX module including empty Resources outpu…
domchen Feb 13, 2026
ac4480f
Reduce unnecessary string copies in PAGXImporter and PAGXExporter and…
domchen Feb 13, 2026
c498181
Cache parsed style and CSS class properties per DOMNode to avoid repe…
domchen Feb 13, 2026
9387f09
Change web platform memory allocator from mimalloc to dlmalloc.
jinwuwu001 Feb 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions .codebuddy/commands/cr.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,8 @@ done
# 拉取最新的 main 分支
git fetch origin main

# 当前分支相对 origin/main 的完整变更(已提交 + 暂存区 + 工作区的最终结果)
git diff origin/main
# 当前分支相对 origin/main 分叉点的完整变更(已提交 + 暂存区 + 工作区的最终结果)
git diff $(git merge-base origin/main HEAD)

# 查看文件状态(用于识别未跟踪文件)
git status
Expand Down Expand Up @@ -105,8 +105,8 @@ cd /tmp/pr-review-{pr_number}
# 拉取最新的 main 分支
git fetch origin main

# 当前分支相对 origin/main 的完整变更
git diff origin/main
# 当前分支相对 origin/main 分叉点的完整变更
git diff $(git merge-base origin/main HEAD)

gh pr view {pr_number} --comments
```
Expand Down Expand Up @@ -233,3 +233,4 @@ echo "已清理临时审查环境"
9. **潜在风险**:是否引入回归风险或影响其他模块
10. **模块架构**:模块职责是否清晰,依赖方向是否合理(如核心模块不应反向依赖平台特定实现)
11. **整体设计**:结合关联代码评估修改后的整体合理性,必要时建议扩大修改范围

163 changes: 0 additions & 163 deletions .codebuddy/commands/pr.md
Original file line number Diff line number Diff line change
@@ -1,163 +0,0 @@
---
description: 提交 PR - 自动识别新建或追加提交
---

# 提交 PR

严格按以下步骤顺序执行。

---

## 前置检查

```bash
git fetch origin main && \
CURRENT_BRANCH=$(git branch --show-current) && \
echo "CURRENT_BRANCH:$CURRENT_BRANCH" && \
gh pr list --head "$CURRENT_BRANCH" --state open --json number,url && \
gh api user --jq '.login'
```

记录:当前分支、是否有开启的 PR、GitHub username(供新建模式使用)。

根据结果选择模式:

| 当前分支 | 已有开启的 PR | 模式 |
|----------|---------------|------|
| main | - | **新建模式** |
| 非 main | 有 | **追加模式** |
| 非 main | 无 | **新建模式** |

---

## 第一步:确定提交范围

运行 `git status --porcelain`:
- 若有输出:
- 若暂存区有内容,且工作区也有内容(含未跟踪文件):询问用户选择局部提交或全部提交
- 否则:全部提交
- 若无输出:记录为**无本地变更**,跳过第二、三步

**判断方法**:第一列非空格为暂存区有内容;第二列非空格或以 `??` 开头为工作区有内容。

若为**局部提交**,使用 `git diff --cached --name-only` 记录**暂存区文件列表**供后续步骤使用。

---

## 第二步:格式化代码

若 `./codeformat.sh` 存在,执行:

```bash
./codeformat.sh
```

忽略输出的报错信息,只要运行就会完成格式化。

格式化后根据第一步结果处理暂存区:

| 第一步结果 | 处理方式 |
|------------|----------|
| 全部提交 | 执行 `git add .` 将所有变更加入暂存区 |
| 局部提交 | 仅将第一步记录的文件重新加入暂存区(`git add {文件}`) |

---

## 第三步:生成 Commit 信息

```bash
git diff --cached
```

根据暂存区变更生成 **Commit 信息**:英语,120 字符内,以句号结尾,侧重描述用户可感知的变化。

---

## 第四步:提交并推送

### 追加模式

检查未推送的 commit:

```bash
git log origin/{当前分支}..HEAD --oneline
```

| 暂存区 | 未推送 commit | 操作 |
|--------|---------------|------|
| 有内容 | - | 提交并推送 |
| 无内容 | 有 | 仅推送 |
| 无内容 | 无 | 提示"无新变更需要提交",流程结束 |

```bash
# 若暂存区有内容,提交并推送
git commit -m "{Commit 信息}" && git push

# 若暂存区无内容但有未推送 commit,仅推送
git push
```

输出:

```
**Commit**:{Commit 信息}(若有新提交)

**PR 链接**(已追加提交):{PR 链接}
```

### 新建模式

#### 1. 分析完整变更

分析 PR 包含的所有变更:

```bash
git log origin/main..HEAD --oneline # 已有 commit
git diff --cached # 本次暂存区变更(若第三步已获取则复用)
```

若已有 commit 为空且暂存区无内容,提示无变更,终止流程。

#### 2. 生成 PR 信息

根据上述完整变更(已有 commit + 暂存区变更)生成:

- **分支名称**:`feature/{username}_模块名` 或 `bugfix/{username}_模块名`(`{username}` 为前置检查获取的 GitHub 用户 ID 全小写,模块名用下划线连接,最多两个单词)
- **PR 标题**:英语,120 字符内,以句号结尾,侧重描述用户可感知的变化
- **PR 描述**:中文,简要说明变更内容和目的

#### 3. 处理分支并提交推送

切换到新分支:

| 当前分支 | 操作 |
|----------|------|
| main | `git checkout -b {分支名称}` |
| 非 main | `git branch -m {分支名称}` |

提交并推送:

```bash
# 若暂存区有内容,先提交
git commit -m "{Commit 信息}"

# 推送并创建 PR
git push -u origin {分支名称}
gh pr create --title "{PR 标题}" --body "{PR 描述}"
```

输出:

```
**PR 标题**:{PR 标题}

**PR 描述**:{PR 描述}

**PR 链接**(新建):{PR 链接}
```

---

## **!! IMPORTANT - 重要限制**

- **NEVER** 执行 force push
4 changes: 2 additions & 2 deletions .codebuddy/rules/Code.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ alwaysApply: true
## 编码规范

- 对话用中文,代码和注释用英语
- 所有说明文件、方案设计文件统一放在 `.codebuddy/designs/` 目录(已加入 .gitignore,不参与提交)
- 新需求禁止直接编码,先输出详细方案设计文件,穷尽疑问向用户提问,用户明确确认后再按方案编码
- 永远优先追求答案的正确性而不只是迎合用户的具体要求,特别是当用户的具体要求和正确性有冲突时要及时指出来
- 新需求的编码任务禁止直接编码,先输出关键接口和伪代码,穷尽所有疑问向用户提问,方案确认后才可编码
- 复用项目已有功能,保持变更简洁,避免重复代码
- 重构时审查关联代码合理性,顺带清理冗余,不考虑向后兼容
- 版权声明里的年份对新增的文件要使用当前年份(如 `Copyright (C) 2026 Tencent`),已有文件保持原年份不变
Expand Down
122 changes: 122 additions & 0 deletions .codebuddy/skills/pagx-optimize/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
---
name: pagx-optimize
description: Optimize PAGX file structure by removing redundancy, merging shared painters, extracting reusable resources, and improving readability. Use this skill when asked to optimize, simplify, or clean up a PAGX file.
argument-hint: "[file-path]"
---

# PAGX File Structure Optimization

This skill provides a systematic checklist for optimizing PAGX file structure. The goals are
to simplify file structure, reduce file size, and improve rendering performance.

## Fundamental Constraint

**All optimizations must preserve the original design appearance.** This is a hard requirement
that overrides any individual optimization direction below.

- **Allowed**: Structural transformations that produce identical or near-identical rendering
(minor pixel-level differences from node reordering or painter merging are acceptable).
- **Allowed**: Removing provably invisible content — elements entirely outside the canvas
bounds, unused resources, zero-width strokes, fully transparent elements, and other content
that contributes nothing to the final rendered image.
- **Forbidden**: Modifying any parameter that affects design intent — blur radius, spacing,
density, colors, alpha, gradient stops, font sizes, shadow offsets, stroke widths, or any
other visual attribute — unless the user explicitly approves the change.
- **Forbidden**: Reducing Repeater density (increasing spacing), lowering blur values, changing
opacity, or simplifying geometry in ways that alter the visual result, even if the change
seems minor. These are design decisions, not optimization decisions.
- **When in doubt**: If an optimization might change the rendered appearance, do not apply it.
Instead, describe the potential optimization and its visual impact to the user, and ask for
explicit approval before proceeding.

---

## Optimization Checklist

### Structure Cleanup (Sections 1-7)

| # | Optimization | When to Apply |
|---|--------------|---------------|
| 1 | Move Resources to End | `<Resources>` appears before layer tree |
| 2 | Remove Empty Elements | Empty `<Layer/>`, empty `<Resources>`, `width="0"` strokes |
| 3 | Omit Default Values | Attributes explicitly set to spec default |
| 4 | Simplify Transforms | Translation-only matrix, identity matrix, cascaded translations |
| 5 | Normalize Numerics | Scientific notation near zero, trailing decimals, short hex |
| 6 | Remove Unused Resources | Resource `id` has no `@id` reference |
| 7 | Remove Redundant Wrappers | Group/Layer with no attributes wrapping single element |

> For detailed examples and default value tables, read `references/structure-cleanup.md`.

### Painter Merging (Sections 8-9)

| # | Optimization | When to Apply |
|---|--------------|---------------|
| 8 | Merge Geometry Sharing Identical Painters | Multiple geometry elements use same Fill/Stroke |
| 9 | Merge Painters on Identical Geometry | Same geometry appears twice with different painters |

**Critical caveat (Section 8)**: Different geometry needing different painters must be isolated
with Groups. This is the most common source of errors.

> For detailed examples and scope isolation patterns, read `references/painter-merging.md`.

### Resource Reuse (Sections 10-14)

| # | Optimization | When to Apply |
|---|--------------|---------------|
| 10 | Composition Reuse | 2+ identical layer subtrees differing only in position |
| 11 | PathData Reuse | Same path data string appears 2+ times |
| 12 | Color Source Sharing | Identical gradient definitions inline in multiple places |
| 13 | Replace Path with Primitive | Path describes a Rectangle or Ellipse |
| 14 | Remove Full-Canvas Clips | Clip mask covers entire canvas |

> For detailed examples and coordinate conversion formulas, read `references/resource-reuse.md`.

### Performance Optimization (Section 15)

**Rendering Cost Model**:
- **Repeater**: N copies = N× full rendering cost (no GPU instancing)
- **Nested Repeaters**: Multiplicative (A×B elements)
- **BlurFilter / DropShadowStyle**: Cost proportional to blur radius
- **Dashed Stroke under Repeater**: Dash computation per copy
- **Layer vs Group**: Layer creates extra surface; Group is lighter

**Two categories**:
1. **Equivalent (auto-apply)**: Downgrade Layer to Group, clip Repeater to canvas bounds
2. **Suggestions (never auto-apply)**: Reduce density, lower blur, simplify geometry

> For detailed optimization techniques, read `references/performance.md`.

---

## Appendix: Core Concepts

### Painter Scope

Painters (Fill / Stroke) render **all geometry accumulated in the current scope up to that
painter's position**. Subsequent painters continue to render the same geometry.

### Group Scope Isolation

Group creates an isolated scope. Internal geometry accumulates only within the Group, and
after the Group ends, its geometry propagates upward to the parent scope.

### Layer vs Group

| Feature | Layer | Group |
|---------|-------|-------|
| Geometry propagation | No (boundary) | Yes (to parent) |
| Styles / Filters / Mask | Supported | Not supported |
| Composition / BlendMode | Supported | Not supported |
| Transform | matrix | position/rotation/scale |

**Selection rule**: Use Layer for styles/filters/mask/composition/blendMode. Otherwise prefer Group.

> For DropShadowStyle scope and color source coordinate system, see `references/painter-merging.md`
> and `references/resource-reuse.md` respectively.

---

## PAGX Specification Quick Reference

For complete attribute defaults, required attributes, and enumeration values extracted from
the PAGX spec, see `references/pagx-quick-reference.md`.
Loading
Loading