Commit Graph

132 Commits

Author SHA1 Message Date
Matthew Kilgore
798426bebf Finish merge stuff with main 2025-12-13 21:23:45 -05:00
Matthew Kilgore
44f488db77 Merge remote-tracking branch 'origin/main' into mk/merge-entities
# Conflicts:
#	backend/app/api/static/docs/docs.go
#	backend/app/api/static/docs/openapi-3.json
#	backend/app/api/static/docs/openapi-3.yaml
#	backend/app/api/static/docs/swagger.json
#	backend/app/api/static/docs/swagger.yaml
#	backend/go.mod
#	backend/go.sum
#	backend/internal/data/ent/attachment.go
#	backend/internal/data/ent/attachment_create.go
#	backend/internal/data/ent/attachment_query.go
#	backend/internal/data/ent/attachment_update.go
#	backend/internal/data/ent/client.go
#	backend/internal/data/ent/ent.go
#	backend/internal/data/ent/entityfield.go
#	backend/internal/data/ent/group.go
#	backend/internal/data/ent/group/group.go
#	backend/internal/data/ent/group/where.go
#	backend/internal/data/ent/group_create.go
#	backend/internal/data/ent/group_query.go
#	backend/internal/data/ent/group_update.go
#	backend/internal/data/ent/has_id.go
#	backend/internal/data/ent/hook/hook.go
#	backend/internal/data/ent/item.go
#	backend/internal/data/ent/item_create.go
#	backend/internal/data/ent/item_delete.go
#	backend/internal/data/ent/item_query.go
#	backend/internal/data/ent/item_update.go
#	backend/internal/data/ent/itemfield_create.go
#	backend/internal/data/ent/itemfield_delete.go
#	backend/internal/data/ent/itemfield_query.go
#	backend/internal/data/ent/itemfield_update.go
#	backend/internal/data/ent/label.go
#	backend/internal/data/ent/label_create.go
#	backend/internal/data/ent/label_query.go
#	backend/internal/data/ent/label_update.go
#	backend/internal/data/ent/location.go
#	backend/internal/data/ent/location_create.go
#	backend/internal/data/ent/location_delete.go
#	backend/internal/data/ent/location_query.go
#	backend/internal/data/ent/location_update.go
#	backend/internal/data/ent/maintenanceentry.go
#	backend/internal/data/ent/maintenanceentry_create.go
#	backend/internal/data/ent/maintenanceentry_query.go
#	backend/internal/data/ent/maintenanceentry_update.go
#	backend/internal/data/ent/migrate/schema.go
#	backend/internal/data/ent/mutation.go
#	backend/internal/data/ent/predicate/predicate.go
#	backend/internal/data/ent/runtime.go
#	backend/internal/data/ent/schema/group.go
#	backend/internal/data/ent/tx.go
#	backend/internal/data/ent/user.go
#	backend/internal/data/ent/user_create.go
#	backend/internal/data/ent/user_update.go
#	backend/internal/data/repo/repo_entity_attachments.go
#	backend/internal/data/repo/repo_items.go
#	backend/internal/data/repo/repo_items_search_test.go
#	backend/internal/data/repo/repos_all.go
#	docs/en/api/openapi-3.0.json
#	docs/en/api/openapi-3.0.yaml
#	docs/en/api/swagger-2.0.json
#	docs/en/api/swagger-2.0.yaml
#	frontend/lib/api/types/data-contracts.ts
2025-12-13 21:19:43 -05:00
Logan Miller
cc66330a74 feat: Add item templates feature (#435) (#1099)
* 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>
2025-12-06 16:21:43 -05:00
Jeff Rescignano
f36756d98e Add support for SSO / OpenID Connect (OIDC) (#996)
* ent re-generation

* add oidc integration

* document oidc integration

* go fmt

* address backend linter findings

* run prettier on index.vue

* State cookie domain can mismatch when Hostname override is used (breaks CSRF check). Add SameSite.

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Delete state cookie with matching domain and MaxAge; add SameSite.

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Fix endpoint path in comments and error to include /api/v1.

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Also use request context when verifying the ID token.

* Do not return raw auth errors to clients (user-enumeration risk).

* consistently set cookie the same way across function

* remove baseURL after declaration

* only enable OIDC routes if OIDC is enabled

* swagger doc for failure

* Only block when provider=local; move the check after parsing provider

* fix extended session comment

* reduce pii logging

* futher reduce pii logging

* remove unused DiscoveryDocument

* remove unused offline_access from default oidc scopes

* remove offline access from AuthCodeURL

* support host from X-Forwarded-Host

* set sane default claim names if unset

* error strings should not be capitalized

* Revert "run prettier on index.vue"

This reverts commit aa22330a23.

* Add timeout to provider discovery

* Split scopes robustly

* refactor hostname calculation

* address frontend prettier findings

* add property oidc on type APISummary

* LoginOIDC: Normalize inputs, only create if not found

* add oidc email verification

* oidc handleCallback: clear state cookie before each return

* add support for oidc nonce parameter

* Harden first-login race: handle concurrent creates gracefully and fix log key.

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* support email verified claim as bool or string

* fail fast on empty email

* PKCE verifier

* fix: add timing delay to attachment test to resolve CI race condition

The attachment test was failing intermittently in CI due to a race condition
between attachment creation and retrieval. Adding a small 100ms delay after
attachment creation ensures the file system and database operations complete
before the test attempts to verify the attachment exists.

* Revert "fix: add timing delay to attachment test to resolve CI race condition"

This reverts commit 4aa8b2a0d829753e8d2dd1ba76f4b1e04e28c45e.

* oidc error state, use ref

* rename oidc.force to oidc.authRedirect

* remove hardcoded oidc error timeout

* feat: sub/iss based identity matching and userinfo endpoint collection

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Matthew Kilgore <matthew@kilgore.dev>
2025-12-06 10:16:05 -05:00
Matthew Kilgore
462c5d20ac Complete merge of main into branch 2025-10-05 18:59:14 -04:00
Matthew Kilgore
b8cca4b383 Merge branch 'main' into mk/merge-entities
# Conflicts:
#	backend/app/api/static/docs/docs.go
#	backend/app/api/static/docs/swagger.json
#	backend/internal/data/repo/repo_items.go
#	docs/en/api/swagger-2.0.json
#	frontend/lib/api/types/data-contracts.ts
2025-10-05 18:58:28 -04:00
Tonya
6cd9e2779f Use Tanstack table for Selectable Table, quick actions (#998)
* feat: implement example of data table

* feat: load item data into table

* chore: begin switching dialogs

* feat: implement old dialog for controlling headers and page size

* feat: get table into relatively usable state

* feat: enhance dropdown actions for multi-selection and CSV download

* feat: enhance table cell and dropdown button styles for better usability

* feat: json download for table

* feat: add expanded row component for item details in data table

* chore: add translation support

* feat: restore table on home page

* fix: oops need ids

* feat: move card view to use tanstack to allow for pagination

* feat: switch the items search to use ItemViewSelectable

* fix: update pagination handling and improve button click logic

* feat: improve selectable table

* feat: add indeterminate to checkbox

* feat: overhaul maintenance dialog to use new system and add maintenance options to table

* feat: add label ids and location id to item patch api

* feat: change location and labels in table view

* feat: add quick actions preference and enable toggle in table settings

* fix: lint

* fix: remove sized 1 pages

* fix: attempt to fix type error

* fix: various issues

* fix: remove

* fix: refactor item fetching logic to use useAsyncData for improved reactivity and improve use confirm

* fix: sort backend issues

* fix: enhance CSV export functionality by escaping fields to prevent formula injection

* fix: put aria sort on th not button

* chore: update api types
2025-09-24 02:37:38 +01:00
Choong Jun Jin
8f8dbf4a3a Fea: add decimal support to currency system with ISO 4217 data integration (#976)
* feat: add decimal support to currency system with ISO 4217 data integration

* Harden currency formatting: add decimal bounds, input validation, and robust error handling

* Fixed issues raised by coderrabitai

* Fixed linting issue
2025-09-13 11:51:54 -04:00
Matthew Kilgore
ab1fd674ee Add entitytypes delete method 2025-09-11 22:18:15 -04:00
Matthew Kilgore
c0cb5794f3 Lint the things 2025-09-10 22:12:52 -04:00
Matthew Kilgore
3f2ae368ba API stuff for entity types 2025-09-10 21:34:39 -04:00
Matthew Kilgore
234302e50b Merge remote-tracking branch 'origin/main' into mk/merge-entities 2025-09-05 20:18:26 -04:00
Tonya
d4e28e6f3b Upgrade frontend deps, including nuxt (#982)
* 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
2025-09-04 09:00:25 +01:00
Matthew Kilgore
564bd8ca06 Get main into this PR.
Done on ✈️
2025-09-02 15:09:42 -04:00
Matthew Kilgore
e00cebb7fa Merge branch 'refs/heads/main' into mk/merge-entities
# Conflicts:
#	backend/app/api/static/docs/docs.go
#	backend/app/api/static/docs/swagger.json
#	backend/go.mod
#	backend/go.sum
#	backend/internal/data/ent/entity_predicates_test.go
#	backend/internal/data/repo/repo_items.go
#	docs/en/api/openapi-2.0.json
2025-09-02 14:54:20 -04:00
Tonya
788d0b1c7e feat: improved duplicate (#927)
* feat: improved duplicate

* feat: enhance item duplication process with transaction handling and error logging for attachments and fields

* feat: add error logging during transaction rollback in item duplication process for better debugging

* feat: don't try and rollback is the commit succeeded

* feat: add customizable duplication options for items, including prefix and field copying settings in API and UI

* fix: simplify duplication checks for custom fields, attachments, and maintenance entries in ItemsRepository duplication method

* refactor: import DuplicateSettings type from composables and sort import issues
2025-08-23 16:17:15 +01:00
Michael Manganiello
8af1e8fcba fix: Allow up to 1000 characters for label description (#948)
The database schema already supports 1,000 characters for label
description, so this seems just like an oversight.
2025-08-20 15:29:49 -04:00
Matthew Kilgore
77b14f3a55 More merge fixing 2025-07-27 17:42:58 -04:00
Crumb Owl
18149a5c9a ProductBarcode: apply linting and fixes on frontend 2025-07-19 23:06:43 +02:00
Crumb Owl
4a4bf9a175 ProductBarcode: rename API call from getproductfromean to products/search-from-barcode 2025-07-19 23:06:43 +02:00
Crumb Owl
a3c13a8a74 ProductBarcode: return an array of BarcodeProduct instead of one 2025-07-19 23:06:38 +02:00
Crumb Owl
0e1e5ae3f0 ProductBarcode: add frontend API call utils 2025-07-19 22:51:48 +02:00
Matt
4861a8537f More image type support for thumbnails (#814) 2025-06-26 10:19:34 -04:00
Tonya
ef39549c37 Custom Colored Labels (#801)
* feat: custom coloured labels

* chore: lint

* feat: add ColorSelector component for improved color selection in labels and integrate it into CreateModal and Selector components

* style: lint

* fix: update ColorSelector and Selector components to use empty string instead of null for default color values for types
2025-06-23 15:52:32 +01:00
Matt
989100d299 Thumbnails (#797)
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: tonya <tonya@tokia.dev>
2025-06-22 21:32:48 -04:00
Tonya
9855474555 fix issues with actions (#680)
* 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.
2025-05-08 12:48:31 +00:00
Tonya
232dc08fcd enable primary button (#673)
* feat: enable primary button

* feat: better attachments

* fix: unneeded param
2025-05-05 01:43:38 +00:00
Matt Kilgore
606a92b5d5 Remove documents table (#618)
* Remove documents table (WIP)

* Further cleanup of documents table

* This should clean up the errors, but actual attachment handling still needs added.

* Full generation to update the JS side of things too

* Further fixes

* Fix cyclic dependency issue

* In theory the API side works now

* Fix go linting issues

* Fix frontend issues

* Way closer, but has a foreign key constrant issue

* UI actually works now

* Fix deduplication feature not working right

* Upgrade to `golangci-lint` v2 file

* Add ability to set primary during attachment creation

* Update swagger with new primary attachment during creation stuff

* Files are actually saved now, but there's still a bug

* Fix critical issue whith how deletions were working

* Fix the byte copy issue

* Hopefully everything is fixed now

* Fix golangci-lint config and lint files

* Fix lint issue

* Fix a few more tests

* Fix lint issues again

* More minor test fixes

* Update backend/internal/core/services/service_items_attachments.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fix migration (I think)

* Fixed postgres migration

* Change some migration options to work better

* Some more little things that I tried

* Fix merge go.mod

* Fix migrations

* Little lint thing

* Fix AttachmentsList.vue with updated API

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-03 10:15:54 -04:00
EdWorth120
60b2ffd023 Add a quantity field to the item create modal form. (#615)
* Add a quantity field to the item create modal form.

* Fix prettier code format complaint.

* Update en.json allowing the label of the field to be translated.

* Including changes generated by swag and typescript-types tasks.

* Fixed tests, item duplication and lint errors.

* Fix linter issues again and an error introduced in 912e5b2

* Fixed a test that creates an item through the go:coverage task
2025-04-30 19:42:24 -04:00
Matthew Kilgore
912e5b231a Fix footer links 2025-04-19 13:35:19 -04:00
Matthew Kilgore
64b4173d1d fix: borked doc param 2025-03-22 21:45:01 -04:00
thevortexcloud
fe31847269 Allow miltiple file uploads on creation (#528)
* Fix #317

* Fix(?) lint errors

* Actually fix all the lint errors

* Fix type check errors
2025-02-22 16:15:08 -05:00
Jake Walker
fba6d7817a add label generation api (#498)
* add label generation api

* show location name on labels

* add label scan page

* dispose of code reader when navigating away from scan page

* save label to png

* implement code suggestions

* fix label padding and margin

* update swagger docs

* add print from browser dialog

Co-authored-by: fidoriel <49869342+fidoriel@users.noreply.github.com>

* increase label description font weight

* update documentation label file suffix

* fix scanner components import

* fix linting issues

---------

Co-authored-by: fidoriel <49869342+fidoriel@users.noreply.github.com>
2025-02-08 21:26:16 -05:00
zebrapurring
b22a49a0fd feat: add search filter for items with no photo (#383)
* feat: add search filter for items without photos

* chore: configure Golang formatter for VSCode

* fix: displaying long filter labels for some locales

* feat: add search filter for items with photos

* test: fix linter errors

* chore: remove redundant height attribute

* fix: make with/without photo filters mutually exclusive

---------

Co-authored-by: zebrapurring <>
2025-01-27 23:00:24 +00:00
Tonya
9cf244c933 Add a warning when the version does not match the latest release (#442)
Some checks failed
Docker publish rootless / build-rootless (push) Waiting to run
Docker publish / build (push) Waiting to run
Update Currencies / update-currencies (push) Waiting to run
Docker publish ARM / build (push) Has been cancelled
Docker publish rootless ARM / build-rootless (push) Has been cancelled
Dockerhub publish / build (push) Has been cancelled
2025-01-04 14:22:25 -05:00
Matt Kilgore
75b9c2f45b fix: missing migration 2024-12-26 18:36:28 +00:00
Katos
0f3948d435 Revert "Fix: Show labels on item page" 2024-12-26 17:38:01 +00:00
Matt Kilgore
2df7d25284 Run task ui:fix for lint 2024-12-26 16:51:29 +00:00
slid1amo2n3e4
beed55f322 Merge branch 'main' into parent-location-sync 2024-12-13 15:01:02 +01:00
slid1amo2n3e4
63eb287485 Make the tests pass, hopefully. 2024-12-10 18:48:49 +01:00
Matt Kilgore
5e81e60106 fix: #289 Corrects the asset ID to always be correct for the description data. (#351) 2024-11-29 13:18:20 -05:00
Matt Kilgore
ab80805073 Merge branch 'main' into parent-location-sync 2024-10-28 15:51:31 -04:00
Tonya
ec5b6bb8ff Get front end tests passing (#299)
* 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>
2024-10-28 15:47:00 -04:00
slid1amo2n3e4
17e7e24070 Implement syncing child's locations to that of parent. 2024-10-08 15:48:12 -04:00
Matt Kilgore
c6158e7c9e fix: javascript handles nulls in an incredibly stupid way. 2024-10-05 15:38:31 -04:00
Matt Kilgore
908bfb530e fix: API should expect actual floats now 2024-10-05 12:10:27 -04:00
Matt Kilgore
a3d5485c1d fix: #147 notifier now shows previous input value 2024-10-04 13:49:36 -04:00
Maximilien Carbonne
ff874ac472 fix: wrong return type 2024-09-27 21:38:27 +02:00
Maximilien Carbonne
dc88406bcc rework frontend for maintenances (factorize) 2024-09-27 21:38:27 +02:00
Maximilien Carbonne
ca85d4b483 simplify/factorize backend for maintenance 2024-09-27 21:38:27 +02:00