* feat: Add item templates feature (#435)
Add ability to create and manage item templates for quick item creation.
Templates store default values and custom fields that can be applied
when creating new items.
Backend changes:
- New ItemTemplate and TemplateField Ent schemas
- Template CRUD API endpoints
- Create item from template endpoint
Frontend changes:
- Templates management page with create/edit/delete
- Template selector in item creation modal
- 'Use as Template' action on item detail page
- Templates link in navigation menu
* refactor: Improve template item creation with a single query
- Add `CreateFromTemplate` method to ItemsRepository that creates items with all template data (including custom fields) in a single atomic transaction, replacing the previous two-phase create-then-update pattern
- Fix `GetOne` to require group ID parameter so templates can only be accessed by users in the owning group (security fix)
- Simplify `HandleItemTemplatesCreateItem` handler using the new transactional method
* Refactor item template types and formatting
Updated type annotations in CreateModal.vue to use specific ItemTemplate types instead of 'any'. Improved code formatting for template fields and manufacturer display. Also refactored warranty field logic in item details page for better readability. This resolves the linter issues as well that the bot in github keeps nagging at.
* Add 'id' property to template fields
Introduces an 'id' property to each field object in CreateModal.vue and item details page to support unique identification of fields. This change prepares the codebase for future enhancements that may require field-level identification.
* Removed redundant SQL migrations.
Removed redundant SQL migrations per @tankerkiller125's findings.
* Updates to PR #1099.
Regarding pull #1099. Fixed an issue causing some conflict with GUIDs and old rows in the migration files.
* Add new fields and location edge to ItemTemplate
Addresses recommendations from @tonyaellie.
* Relocated add template button
* Added more default fields to the template
* Added translation of all strings (think so?)
* Make oval buttons round
* Added duplicate button to the template (this required a rewrite of the migration files, I made sure only 1 exists per DB type)
* Added a Save as template button to a item detail view (this creates a template with all the current data of that item)
* Changed all occurrences of space to gap and flex where applicable.
* Made template selection persistent after item created.
* Collapsible template info on creation view.
* Updates to translation and fix for labels/locations
I also added a test in here because I keep missing small function tests. That should prevent that from happening again.
* Linted
* Bring up to date with main, fix some lint/type check issues
* In theory fix playwright tests
* Fix defaults being unable to be nullable/empty (and thus limiting flexibility)
* Last few fixes I think
* Forgot to fix the golang tests
---------
Co-authored-by: Matthew Kilgore <matthew@kilgore.dev>
* feat: begin upgrading deps, still very buggy
* feat: progress
* feat: sort all type issues
* fix: sort type issues
* fix: import sonner styles
* fix: nuxt is the enemy
* fix: try sorting issue with workflows
* fix: update vitest config for dynamic import of path and defineConfig
* fix: add missing import
* fix: add time out to try and fix issues
* fix: add ui:ci:preview task for frontend build in CI mode
* fix: i was silly
* feat: add go:ci:with-frontend task for CI mode and remove ui:ci:preview from e2e workflow
* fix: update baseURL in Playwright config for local testing to use port 7745
* fix: update E2E_BASE_URL and remove wait for timeout in login test for smoother execution
* chore: remove unused lunr and add types for semver
* fix: try pinning using dlx
* chore: update typecheck command in package.json and clean up tailwind config
* chore: add vite as a dep
* fix: tests
* fix: wait for toast
* fix: use first
* feat: try adding waiting?
* fix: i was stupid
* fix: one day it will work (apple)
* fix: api
* fix: booleans are the enemy
* feat: try switching from blob to file
* Revert "feat: try switching from blob to file"
This reverts commit 3728b444e6.
* Add e2e testing for frontend
* Hopefully working CI/CD for playwright
* Fix run name
* Trying to fix the CI/CD stuff
* Try this again, although Vite apparently has playwright?
* Fix vitetest
* Add registration tests
* Safer kill of testing dependencies
* These might not last.
* feat: Add iPhone and Android device testing
* fix: Minor fixes, set registration to "fixme" as it fails frequently for some reason.
* fix: Make sure the OS dependencies get installed
* fix: For now remove mobile, they seem to be very hit or miss.
* Use sharding based testing
* Fix some minor mess ups
* Forgot PNPM for the merge
* chore: get front end tests passing
* chore: add @vue/runtime-core to fix types for $t
* chore: sort lockfile
* Discard changes to frontend/pnpm-lock.yaml
* chore: sort lockfile
* chore: fix some type errors
* chore: switch from nuxi typecheck to vue-tsc to force a known good version
* chore: linting
* chore: update pnpm version in frontend test
* feat: add proper pagination type (need to sort why it still doesn't work)
* chore: format imports and initialize totalPrice in label page to null when no label is present
* chore: update pnpm to v9.12.2, merge ItemSummaryPaginationResult with PaginationResult, and handle error in label generator more gracefully
* chore: lint
---------
Co-authored-by: Matt Kilgore <matthew@kilgore.dev>
* new PR tasks
* add homebox to know words
* formatting
* bump deps
* generate db models
* ts errors
* drop id
* fix accessor
* drop unused time field
* change CI
* add expected error
* add type check
* resolve serveral type errors
* hoise in CI
* implement password score UI and functions
* update strings tests to use `test`instead of `it`
* update typing
* refactor login/register UI+Logic
* fix width on switches to properly display
* fetch and store self in store
* (WIP) unify card styles
* update labels page
* bump nuxt
* use form area
* use text area for description
* unify confirm API
* unify UI around pages
* change header background height