Skip to content

refactor: remove template backwards compatibility symlink#377

Merged
davidpoblador merged 1 commit into
mainfrom
remove-template-symlink
Nov 6, 2025
Merged

refactor: remove template backwards compatibility symlink#377
davidpoblador merged 1 commit into
mainfrom
remove-template-symlink

Conversation

@davidpoblador

Copy link
Copy Markdown
Member

Summary

  • Removed template -> copier-template backwards compatibility symlink
  • Updated all root-level config symlinks to point to copier-template/
  • Updated .claude/settings.json symlink reference
  • Updated documentation references in docs/
  • Updated .gitignore to reference copier-template/ paths
  • Updated hardcoded paths in .claude/commands/help.md

Test plan

  • Verified all symlinks are accessible and readable
  • Confirmed no remaining references to old template/ path in code
  • All configuration files work correctly through new symlinks

🤖 Generated with Claude Code

All references now point directly to copier-template/ directory.
Updated symlinks, documentation, and configuration files.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

claude Bot commented Nov 6, 2025

Copy link
Copy Markdown

Claude finished @davidpoblador's task —— View job


Pull Request Review

Reviewing the refactoring to remove template backwards compatibility symlink.

Todo List:

  • Read repository guidelines and understand codebase structure
  • Analyze all changed files for correctness and completeness
  • Search for any missed references to old template/ path
  • Evaluate code quality and best practices
  • Check for potential bugs or issues
  • Assess security and performance considerations
  • Provide comprehensive feedback and recommendations

✅ Overall Assessment

This is a clean refactoring that successfully removes the backwards compatibility symlink template -> copier-template and updates all references consistently. The changes are well-executed and appear complete.

📝 Code Quality & Best Practices

Excellent work on:

  • Systematic approach: All symlink references consistently updated from template/ to copier-template/
  • Configuration consistency: All root-level config symlinks (.mise.toml, .ruff.toml, .pre-commit-config.yaml, etc.) properly updated
  • Documentation maintenance: Cleaned up references in documentation files
  • Proper git handling: Used git rm to properly remove the symlink

The refactoring covers:

  • ✅ Root configuration symlinks (7 files)
  • ✅ .gitignore patterns updated
  • ✅ .claude/settings.json symlink reference
  • ✅ Documentation references cleaned
  • ✅ Hardcoded paths in commands updated

🔍 Thoroughness Check

I searched the entire codebase for remaining template/ references and found no missed instances. All remaining occurrences are legitimate:

  • copier-template/ references (correct)
  • Documentation about templates in general (unrelated)
  • Template-related code functionality (unrelated)

The hardcoded paths in copier-template/.claude/commands/help.md:11,15 pointing to /Users/dpoblador/repos/vibetuner/copier-template/ were appropriately updated and are now correct.

🚀 Performance & Security

Performance: ✅ No performance impact - this is purely a directory structure cleanup
Security: ✅ No security concerns - removes unused symlink, reduces attack surface minimally

🧪 Test Coverage

The PR description indicates manual testing was performed:

  • Verified all symlinks are accessible and readable
  • Confirmed no remaining references to old template/ path
  • All configuration files work correctly through new symlinks

Recommendation: Consider adding this verification to your automated testing to catch similar issues in the future.

💡 Minor Considerations

  1. Breaking Change Assessment: This could be a breaking change for users who have scripts or tooling that depend on the template/ symlink. Consider:

    • Adding a note in the changelog about this breaking change
    • Documenting the migration path for users (use copier-template/ instead)
  2. Release Strategy: Given this is a refactoring with potential external impact, consider whether this warrants a minor version bump rather than patch.

✅ Final Verdict

This is a high-quality refactoring that successfully achieves its goal. The implementation is thorough, consistent, and well-tested. The code follows established patterns and maintains the project's coding standards.

Recommendation: ✅ Approve - Ready to merge after considering the breaking change implications above.


@davidpoblador davidpoblador merged commit 3ba7e11 into main Nov 6, 2025
2 checks passed
@davidpoblador davidpoblador deleted the remove-template-symlink branch November 6, 2025 10:21
davidpoblador added a commit that referenced this pull request Nov 6, 2025
## Summary

Updated Release Please configuration to include `refactor` and `perf`
commit types in changelog generation.

**Changes:**
- Added `changelog-sections` to `.release-please-config.json`
- `refactor:` commits now appear under "Code Refactoring" section
- `perf:` commits now appear under "Performance Improvements" section

This fixes the issue where PR #377 (refactor: remove template backwards
compatibility symlink) was not included in the Release Please PR #376.

## Test plan

- [x] Configuration follows Release Please JSON schema
- [x] After merge, Release Please should update PR #376 to include
refactor commits

## Context

By default, Release Please only includes `feat` and `fix` commits in
changelogs. This change explicitly configures which commit types should
appear, ensuring refactoring and performance improvements are
documented.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
davidpoblador pushed a commit that referenced this pull request Nov 6, 2025
🤖 I have created a release *beep* *boop*
---


##
[2.13.5](v2.13.4...v2.13.5)
(2025-11-06)


### Bug Fixes

* convert relative links to absolute URLs in changelog docs
([#373](#373))
([a3ab5cb](a3ab5cb))
* include chore commits in changelog
([#379](#379))
([44ffea3](44ffea3))
* include refactor and perf commits in changelog
([#378](#378))
([f98e9df](f98e9df))


### Code Refactoring

* remove template backwards compatibility symlink
([#377](#377))
([3ba7e11](3ba7e11))


### Miscellaneous Chores

* add gh pr list and gh run list permissions
([#380](#380))
([6fb0642](6fb0642))
* add permissions for uvx uv-bump and gh pr create
([#375](#375))
([27e392a](27e392a))
* **deps:** update JavaScript and Python dependencies
([#374](#374))
([0370036](0370036))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
davidpoblador added a commit that referenced this pull request Apr 28, 2026
Closes #1704.

## Summary

- New embedded model `vibetuner.models.TenantTheme` with eight optional
`#rrggbb` fields for DaisyUI role / role-content colors plus
`.overrides()` → `{css_var: hex}`.
- New opt-in helper `vibetuner.register_tenant_theme_provider(getter, *,
attribute="theme")` that registers a context provider exposing
`theme_overrides` per request. Fail-soft: getter/type errors log and
render with no overrides.
- New shipped partial `base/theme.html.jinja` that emits a CSP-noncified
`<style>:root { ... }</style>` only when `theme_overrides` is non-empty.
Wired into `base/skeleton.html.jinja` between the `bundle.css` link and
`{% block head %}`.
- Docs: new `theming.md` page (added to User Guide nav), feature entry
in `llms.txt`, detailed section in `llms-full.txt` covering cascade
ordering, the two color footguns (build-time literals in custom tokens,
hardcoded scale shades), and the per-tenant fonts carve-out (#1705).

`bundle.css` stays tenant-agnostic and cached; theming happens at
request time in HTML — no per-tenant CSS rebuilds.

## Backwards compatibility

- The helper is **opt-in**: nothing fires until an app calls
`register_tenant_theme_provider(...)`. Apps that don't multi-tenant pay
zero overhead.
- Adding `theme: TenantTheme = Field(default_factory=TenantTheme)` to an
existing tenant document is a no-op for already-persisted records
(MongoDB is schema-on-read; `keep_nulls=False` keeps unset fields out of
the database).
- `base/skeleton.html.jinja` now includes `base/theme.html.jinja`, which
renders nothing when `theme_overrides` is empty — apps that haven't
registered a provider see no extra markup.
- Apps that have already shipped a bespoke per-tenant theming block
(e.g. radio's #377) keep working until they swap to the primitive in
their own follow-up PR.

## Test plan

- [x] `uv run python -m pytest tests/` (full suite, 717 passed)
- [x] `uv run python -m pytest tests/unit/test_tenant_theme.py` (22 new
tests covering the model validator, the provider helper, the rendered
partial output, and HTML-escape defenses)
- [x] `just format && just lint && just type-check` clean
- [ ] Smoke-test in a scaffolded project against a real tenant document
- [ ] Once merged, file a follow-up to migrate radio's bespoke
implementation to this primitive

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.

1 participant