Repository navigation
[#206] Add opt-in checked ticket references - #207
sksingh2005 merged 1 commit into
Conversation
|
@PerchAnton Please rebase and PTAL me once done. |
|
Thanks @sksingh2005. At head |
c83a6a8 to
f56fb2d
Compare
|
@sksingh2005 Rebased on main at |
|
@PerchAnton In cases like this it would be good to have a before and after screenshot of the changes so we know clearly what to look for |
|
Thanks @jesperpedersen. Here are the same synthetic ticket and support role at Before — feature off (default). No reference controls; the existing ticket name and search remain. After — Invalid code. Changing the last character from While capturing these, I found that typed text inherited the header's white color on a white input. Commit 57b74c9 gives that field the theme foreground color. I checked light/dark themes, copying, and valid/invalid input. All 9 tests, lint, typecheck, formatting and both production builds passed locally. Maven and real backend permissions were not tested locally. The two workflows passed on |
|
@PerchAnton please squash the commits. And rebase |
57b74c9 to
7a4a49e
Compare
|
Thanks for the review. I squashed the changes into one commit, |
|
@sksingh2005, could you take another look at |
|
We can move to a newer Node version - like 24 or 26 |
There was a problem hiding this comment.
Thanks for the work @PerchAnton . Some updates required before making it ready
- Keep Node 20 compatibility:
Please preservenode-version: 20in.github/workflows/lint.ymland adjust the tests/imports sonpm run checkpasses on Node 20. - Lazy-load reference components:
Ensurerefmintis only loaded whenVITE_TICKET_REFERENCES=true(e.g., via dynamic imports orReact.lazy) so disabled builds incur zero bundle overhead. - Remove
flex-wrapfromAuthenticatedHeader.tsx:
Preserve the single-row header layout so disabled installations remain visually untouched. - Adopt
sonnertoast notifications:
Replace inline<p>error and status elements withtoast.error(...)andtoast.success(...):// TicketReferenceLookup.tsx const path = ticketReferencePath(value, role); if (!path) { toast.error("Invalid ticket reference. Check the code and try again."); return; }
// TicketReference.tsx await navigator.clipboard.writeText(value); toast.success("Ticket reference copied.");
- Use
PATHSconstants:
UpdateticketReferencePathto use definitions fromsrc/frontend/src/routes/paths.ts:import { PATHS } from "../routes/paths"; switch (role) { case "support": return `${PATHS.supportTickets}/${id}`; case "superuser": return `${PATHS.superuserTickets}/${id}`; case "tam": case "user": return `${PATHS.userTickets}/${id}`; default: return null; }
- Normalize
AUTHORS:
Update your entry inAUTHORSto follow the existingFull Name <email@domain>format.
And also you need to add yourself indoc/manual/en/97-acknowledgement.md
Thank you again for your contribution, and let us know if you have any questions on these adjustments!
@jesperpedersen That should be in a seperate pr I guess ? |
|
@sksingh2005 Yes, before this one - I'm ok with the latest version that works with Quarkus and Quinoa |
|
Ideally 26.x |
|
@PerchAnton rebase is needed. I have updated the node version in another pr. |
7a4a49e to
a3b054c
Compare
|
Thanks for the review and the Node update. @sksingh2005 @jesperpedersen, updated to All 11 frontend tests, lint, types, formatting and both production builds passed locally with Node 26.13.0. Nine Chromium component checks passed. The two new bundle tests failed before the change and now pass. These checks ran on Both new workflows need approval before they can run. Could you approve Frontend Checks and CI and review the update? |
a3b054c to
0fbdc73
Compare
|
Thanks for the amazing work @PerchAnton . LGTM |
|
@sksingh2005 That is ok - we need 1.0+ once we are 1.0 as well |
|
@PerchAnton Just keep working on it, and look for the improvements we can make across the projects |
|
Thanks @sksingh2005 and @jesperpedersen for the review and dependency approval. I’ve noted the requirement to use RefMint 1.0+ by the time Billetsys reaches 1.0. This PR still pins 0.1.0-alpha.3 and keeps the feature off by default. Thanks for encouraging further improvements across the projects; concrete integration feedback will help guide them. |
|
Merged. Thanks for your contribution. |
|
Thanks for reviewing and merging this PR. I appreciate your help with the dependency approval. |
|
Sure. |



Adds optional checked ticket references for the manual-entry case in #205. With
VITE_TICKET_REFERENCES=true, a user can copy a reference from a ticket and use the header lookup to open the role's existing ticket page. Invalid references produce an error toast and preserve the input for correction.Fixes #206.
The codec uses the existing positive ticket ID with the
btkv1 uint64 format. It preserves exact decimal-string IDs through Java Long's maximum and refuses unsafe JSON numbers. The existing server permissions govern access. RefMint is pinned to0.1.0-alpha.3.Disabled production builds omit the RefMint codec. Enabled builds lazy-load the controls and codec. Copy feedback and lookup errors use Sonner, ticket URLs use
PATHS, and the header retains its original layout. Contributor entries follow the existing format in AUTHORS and the manual.Rebased into one commit on main
cd805e2, including #209. Frontend checks use main's Node 26 setting fromsrc/frontend/.nvmrc.The final head
0fbdc73additionally corrects the frontend README to Node 26, matching.nvmrc; no executable code changed after the checks below.Validation on
a3b054cwith Node 26.13.0:npm run checkpassed all 11 tests, ESLint, TypeScript and Prettier. Two production-bundle regressions fail on the previous implementation and pass with this change. They check that disabled builds omit the codec and enabled builds keep it out of the eagerly loaded chunks.The earlier before/after screenshots show the pre-review UI. This revision replaces the inline status messages with toasts.
I maintain RefMint. A single-participant transcription pilot used synthetic records and did not establish a benefit for Billetsys. References are longer than small ticket numbers. Enabling the optional feature needs the maintainers' decision.