-
Notifications
You must be signed in to change notification settings - Fork 0
Merge dev into main #145
Merged
Merge dev into main #145
+3,799
−330
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…mnast The menu, the protected pages and the gymnasts page now read the same answer from the server (me) through useAuth(), so they cannot disagree and a reload keeps a logged-in coach on the page. Log in goes to a login page with the demo coach and the test coach; ProtectedRoute waits for the answer and remembers where the visitor was going. A gymnast can be deleted after a confirmation. Part of #136, #138
…uld need Adds docs/AUTHENTICATION.md with what the course asks for, everything we tried before choosing the test login (Google, https, passwords, our own encryption), how the login is guarded, what it does not protect, and what we would do with https. Updates the README, API.md, VM_SETUP.md, UI_PLANS.md and AI_USAGE.md. Closes #136, #138
Add the README section, the folder in the project structure, the pointer from docs/API.md and the AI usage entry. Closes #139
- Follow the theme: the page, the cards, the form and the login page use theme values that have a dark value (new tokens for the circle, the field, the red and the "No, keep it" button), and the contrast is tested. - Bigger cards and text, a smaller circle, and a red trash button that is 48 by 48 CSS pixels so it can be pressed on a phone. - Add form: the field with a save tick and a close cross at the end of it, no heading and no Cancel button, Enter saves and Escape closes. - Name: at most 70 characters can be typed or pasted, at least 3 to save. - The title of the page has the same style as the Elements page. - Delete dialog: a warning icon, "Delete gymnast", what is lost as a list, and "No, keep it" and "Yes, delete" with a visible edge and a shadow. Refs: #136, #138
# Conflicts: # README.md
test(e2e): add automated end-to-end tests
- The save tick is green in both themes (white tick on green in light mode, dark tick on green in dark mode) and is no longer the color of the card. - The hint "3 to 70 characters" is gone. An error shows only after Save or Enter, in red: "Name is required" for an empty name, as the API asks for 1 to 70 characters. No more than 70 can still be typed or pasted. - The gymnast cards get a tint and a deeper shadow on hover (both themes), and a pointer, to show that they can be pressed one day. - "No, keep it" has white text in dark mode only, on a dark fill with a light 2px edge (9.6:1 on the card). White text and a fill that is 3:1 on the card cannot both be had, so the edge carries the contrast of the control. - The test of the whole path gets more time when all the tests run at once. Refs: #136, #138
…ement page - Ask for elementGroup.number (and id, so the cache recognises the group) in the catalogItem query - Show "Group N" for a vault and the group name for an element, with the same groupLabel as the Elements list, so the two pages agree - Test an element and a vault separately on the element page - Add the issue to AI_USAGE.md Closes #125 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…dark mode The outline variant of the button sets colors of its own in dark mode (dark:bg-input/30), and they won over the green of the save tick and the fill of "No, keep it", so neither had the intended color in dark mode. Both now use the default variant, and the hover of the two ghost buttons is set for dark mode too. A test fails when an outline button does not also set its colors for dark mode. The test of the whole path answers the new CatalogStructure query. Refs: #136
The tab said the name of the project on /login and while "Checking your login…" was shown (WCAG 2.4.2). Both now use PageTitle like the other pages. The title test of the gymnasts page matches the name exactly, because the hidden "Delete <name>" would also match a pattern. Refs: #136
The extra check for 6:1 was a design choice that only pinned the current color. The limits of the rule stay: 3:1 for the edge of a control and 4.5:1 for the text. Refs: #136
A blue-grey line (3.6:1 on the card, above the 3:1 of WCAG 1.4.11) does not draw the eye first, as the lighter line did. Refs: #136
…er-instead-of-the-description-on-the-element fix: show the vault group number instead of the description on the el…
…oach feat: one source of login state, a login page, a demo coach and delete a gymnast
anettkva
approved these changes
Nov 5, 2026
xeniag
approved these changes
Nov 5, 2026
Sign in
to join this conversation on GitHub.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Merges
devintomainso the version on the virtual machine can be updated. Do not deletedevafter merging.What this brings to
maindevis 26 commits ahead ofmain;mainhas nothing thatdevlacks (only the earlierdev→mainmerge commits). The main changes:npm run db:demo: a demo coach with example gymnasts, and docs on the test loginWhy now: the version on the VM
The site on the VM is an old build (last modified 30 October) and does not have the changes above.
mainis 26 commits behinddev, so building and deployingmainwould not bring them either. Merging this PR makesmainthe same asdev, so the VM can be updated frommain. The repository does not record which branch the VM was built from, so this PR solves only themainside of it; the VM itself still has to be rebuilt and redeployed (VITE_API_URL=/project2/graphql npm run build, copydist/to the served folder without removing.htaccess,npm run db:deploy, restart the backend).A separate problem on the VM is already solved: the site showed
403 Forbidden("Server unable to read htaccess file"). The Apache error log showedPermission denied ... /home/xeniag/.htaccess: the site is served from a home directory, and Apache (www-data) could not open it (Ubuntu creates home directories with mode750).chmod o+x /home/xeniagfixed it, and/project2/, the pages under it and/project2/graphqlanswer200again.Follow-up (not in this PR): serve the site from a shared folder such as
/var/www/html/project2instead of a home directory, and write the deploy steps indocs/VM_SETUP.md.🤖 Generated with Claude Code