Skip to content

Release v1.1.0: open-source assets, CI, dual-publish, Agent tool fix#122

Merged
florintimbuc merged 6 commits intomainfrom
dev
Mar 14, 2026
Merged

Release v1.1.0: open-source assets, CI, dual-publish, Agent tool fix#122
florintimbuc merged 6 commits intomainfrom
dev

Conversation

@pablodelucca
Copy link
Owner

Summary

This PR merges the dev branch into main, bringing 5 commits that ship open-source assets, CI/CD infrastructure, and compatibility fixes.

Changes

1. feat: migrate to open-source assets with modular manifest-based loading (#117)

The largest change. Replaces all previously privately-licensed assets with fully open-source ones and overhauls the asset system:

  • Modular manifests: Replace monolithic furniture-catalog.json with per-folder manifest.json files (one per furniture item)
  • Individual tile files: Split floors.png → individual floor_N.png files; walls.pngwall_N.png files
  • 25+ original furniture pieces included as PNGs: desks, chairs, sofas, PCs (with 3-frame animation), bookshelves, plants, paintings, etc.
  • New default layout (default-layout-1.json) using only open-source assets
  • Layout migration: layoutRevision field auto-resets old layouts to new default, with one-time migration notice modal
  • Code cleanup: Removed ~1000 lines of hardcoded sprite data, old 7-stage pipeline scripts, FurnitureType enum
  • Renderer updates: Horizontal flip for mirrored furniture, animation timer for electronics, alpha preservation in colorize
  • Wall set picker in editor toolbar
  • Bubble sprites extracted to JSON files

2. ci: add CI workflow, dependabot, and ESLint contributor rules (#116)

  • GitHub Actions CI workflow (.github/workflows/ci.yml) — lint + build on push/PR to main
  • Dependabot configuration (.github/dependabot.yml)
  • Custom ESLint rules for contributors (eslint-rules/pixel-agents-rules.mjs)
  • Updated CONTRIBUTING.md

3. fix: recognize 'Agent' tool name for sub-agent visualization

Claude Code renamed the sub-agent tool from Task to Agent. Adds 'Agent' alongside 'Task' in:

  • Permission exemption list
  • Status formatting
  • Tool completion handling
  • Progress handling

Based on drewf/pixel-agents#76.

4. Add dual-publish workflow for VS Code Marketplace + Open VSX (#44)

  • .github/workflows/publish-extension.yml — automates releases to both VS Code Marketplace and Open VSX
  • Includes dry-run support, VSIX upload to GitHub Release, caching, concurrency control

5. chore: lower VS Code requirement to ^1.105.0 and add v1.1.0 changelog

  • Broadens compatibility with older VS Code versions and forks (Cursor, Windsurf, VSCodium)
  • Adds CHANGELOG.md entry for v1.1.0

Open PRs closed by these changes

Fully addressed

PR Title Author Why closed
#112 ci: add GitHub Actions workflow for build, lint, and audit @ShemYu Superseded by #116 which adds CI workflow, dependabot, and ESLint rules.
#64 fix: support Agent tool for sub-agent visualization @erichprates Fully addressed by commit 49b8cde — adds 'Agent' to all the same places.
#58 ci: enforce code quality @NNTin Superseded by #116 which adds CI with lint + build checks.
#31 Add claude GitHub actions @WouterArtsRecruitin Superseded by #116 (CI) and #44 (publish workflow).

Partially addressed

PR Title Author What's covered / what remains
#115 feat: add external session support and Agent tool recognition @drewf The Agent tool recognition part is fully addressed by commit 49b8cde. The external session support portion is not included — PR can be narrowed to just that feature.

Test plan

  • Build succeeds: npm install && cd webview-ui && npm install && cd .. && npm run build
  • F5 Extension Dev Host launches with new open-source assets
  • New default layout loads correctly for fresh install
  • Layout migration modal appears when opening with old layout
  • Sub-agents via the Agent tool are recognized and visualized
  • Wall set picker works in editor toolbar
  • Furniture animation (PC screens) cycles frames when agent is active
  • CI workflow runs on PR to main
  • Extension installs on VS Code ^1.105.0
  • Publish workflow dry-run succeeds

Stats

134 files changed, 4,846 insertions, 21,829 deletions (net -16,983 lines — mostly removed hardcoded sprites and old pipeline scripts)

pablodelucca and others added 6 commits March 13, 2026 20:37
…ng (#117)

* feat: migrate to open-source assets with modular manifest-based loading

The primary objective of this change is to replace all previously
privately-licensed assets with fully open-source ones, make the asset
importing process easier, and make the entire asset system more modular
and extensible.

## Asset system overhaul

- Replace monolithic `furniture-catalog.json` with per-folder
  `manifest.json` files (one per furniture item in `assets/furniture/`)
- Each manifest declares its own rotation groups, state groups, and
  animation groups via a recursive tree structure that gets flattened
  at load time, eliminating the need for a separate centralized catalog
- Add support for new manifest concepts: `mirrorSide` (auto-generates
  mirrored "left" variant from a "side" sprite), `rotationScheme`
  (2-way vs 4-way rotation), `animationGroup` with frame indexing
  (multi-frame animated sprites for on-state electronics)
- Split `floors.png` strip into individual `assets/floors/floor_N.png`
  files and `walls.png` into `assets/walls/wall_N.png` files, making it
  trivial to add/remove/reorder tile patterns without regenerating
  combined spritesheets
- Add wall set picker in the editor toolbar so users can choose between
  multiple wall tile styles
- Lower `PNG_ALPHA_THRESHOLD` from 128 to 2 and preserve semi-transparent
  alpha in sprite data (`#RRGGBBAA` format) for higher-fidelity assets
- Add `VOID` tile type as 255 (was 8) with migration for old layouts
- Add 2 new floor tile slots (FLOOR_8, FLOOR_9) for future patterns

## Open-source asset bundle

- Include 25+ original furniture pieces as individual PNGs with
  manifests: desks, chairs (wooden, cushioned), sofas, tables, PCs
  with 3-frame screen animation, bookshelves, plants, paintings,
  whiteboard, clock, coffee, bins, and more
- Include 9 floor tile patterns and 1 wall tile set
- Add new default layout (`default-layout-1.json`) using only the new
  open-source assets
- Remove `.gitignore` rules that excluded asset files from version
  control — all assets are now open-source and tracked

## Layout migration & versioning

- Add `layoutRevision` field to layouts; bundled defaults are versioned
  (e.g. `default-layout-1.json` has revision 1)
- On startup, if the user's saved layout has an older revision than the
  bundled default, it is automatically reset to the new default
- Show a one-time migration notice modal explaining the layout reset
  and the move to open-source assets
- Add `LEGACY_TYPE_MAP` to migrate old furniture type strings (`desk`,
  `chair`, `bookshelf`, etc.) to new manifest IDs (`DESK_FRONT`,
  `WOODEN_CHAIR_FRONT`, `BOOKSHELF`, etc.)
- Migrate old `VOID=8` tiles to `VOID=255`
- "Export Default Layout" command now auto-increments revision numbers

## Code cleanup

- Remove ~1000 lines of hardcoded pixel-art sprite data from
  `spriteData.ts` (DESK_SQUARE_SPRITE, PLANT_SPRITE, etc.) — all
  sprites now loaded from PNGs at runtime
- Remove `FurnitureType` enum and `FURNITURE_CATALOG` constant — the
  catalog is now fully dynamic from manifests
- Remove old 7-stage asset pipeline scripts (`0-import-tileset.ts`
  through `5-export-assets.ts`, `export-characters.ts`,
  `generate-walls.js`) and their working data
- Consolidate asset-manager.html with expanded functionality
- Simplify `createDefaultLayout()` to a minimal fallback (no furniture)
  since the real default comes from `default-layout.json`
- Move font file from `src/fonts/` to `public/fonts/` and update CSS
  to use absolute path

## Renderer updates

- Add horizontal flip support for mirrored furniture instances
  (`FurnitureInstance.mirrored` flag, canvas `scale(-1, 1)`)
- Add furniture animation timer in `OfficeState` that cycles through
  animation group frames at 0.2s intervals for active electronics
- Colorize module now preserves alpha channel through both Colorize
  and Adjust modes
- Wall tile rendering supports multiple wall sets with `setIndex`

## README

- Update Office Assets section to reflect that all assets are now
  fully open-source and included in the repository
- Document the modular manifest-based asset structure

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: address PR #117 review findings

  - Fix migration modal dismiss bug (derived state pattern)
  - Guard VOID migration to preserve FLOOR_8 tiles on new layouts
  - Extract bubble sprites to JSON files for readability
  - Reformat default-layout-1.json for readability

* fix: fix overlay z-ordering, hide UI in debug mode, and update assets

- Lower ToolOverlay z-index below settings modal so status labels don't
  cover the modal
- Hide ToolOverlay and ZoomControls in debug mode
- Position rotate hint below EditActionBar instead of shifting sideways
- Remove NEW_ASSET template, add LARGE_PLANT asset

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: tweak migration modal copy ("meant" → "means")

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Florin Timbuc <florin@sowild.design>
Co-authored-by: Pablo De Lucca <pablo@Pablos-Mac-mini.local>
* ci: add CI workflow, dependabot, and ESLint contributor rules

* Update CONTRIBUTING

* ci: add CI workflow, dependabot, and ESLint contributor rules

* Update CONTRIBUTING
Claude Code renamed the sub-agent tool from 'Task' to 'Agent'. Add
'Agent' alongside 'Task' in permission exemption, status formatting,
tool completion, and progress handling so sub-agents work with current
Claude Code versions.

Based on drewf/pixel-agents#76.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Add Open VSX publishing workflow.

Automate extension releases to both VS Code Marketplace and Open VSX, and document the required repository secrets for maintainers.

Made-with: Cursor

* Apply suggestions from code review

Co-authored-by: Florin Timbuc <florintimbuc@gmail.com>

* Harden publish workflow: explicit dry-run, early validation, caching, VSIX upload

  - Add cache-dependency-path for root + webview lockfiles
  - Add timeout-minutes: 15 to prevent hung jobs
  - Add workflow_dispatch dry_run input for safe testing
  - Add concurrency control to prevent duplicate publishes
  - Add early type-check and lint step (fail fast before publish)
  - Upload VSIX to GitHub Release as downloadable artifact

---------

Co-authored-by: Florin Timbuc <florintimbuc@gmail.com>
Co-authored-by: Florin Timbuc <florin@sowild.design>
Broaden compatibility with older VS Code versions and forks (Cursor,
Windsurf, VSCodium, etc.). Add changelog entry for v1.1.0 release.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@florintimbuc florintimbuc merged commit c6cee2f into main Mar 14, 2026
1 check passed
@NNTin NNTin mentioned this pull request Mar 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants