4 Commits

Author SHA1 Message Date
minori e8824169ed deps: update turbo to 2.8.20
Node.js CI / CI (pull_request) Successful in 45s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m10s
2026-04-01 07:01:31 -07:00
minori 093411b119 deps: update turbo to 2.8.12 (#19)
Node.js CI / CI (push) Successful in 43s
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 2m21s
## Dependency Update

Updates **turbo** from `2.8.11` to `2.8.12`.

### Type
devDependencies

### Changelog
Updated from 2.8.11 to 2.8.12

---
 This PR was created by Minori, your friendly dependency updater! 🌸

Reviewed-on: #19
Reviewed-by: Naomi Carrigan <accounts@nhcarrigan.com>
Co-authored-by: Minori <minori@nhcarrigan.com>
Co-committed-by: Minori <minori@nhcarrigan.com>
2026-03-31 18:04:35 -07:00
hikari ad6b0c6f5a fix: web client styling and nav updates (#21)
Node.js CI / CI (push) Has been cancelled
Security Scan and Upload / Security & DefectDojo Upload (push) Has been cancelled
## Summary

- Aligns the client with the NHCarrigan style guide (witch palette, Griffy/Kalam fonts, shared stylesheet)
- Fixes sanctions page to sort by case number descending
- Updates all Hikari image URLs to `cdn.nhcarrigan.com/hikari.png`
- Adds Support link to nav (https://support.nhcarrigan.com)
- Fixes Chat nav link to point to https://chat.nhcarrigan.com

 This issue was created with help from Hikari~ 🌸

Reviewed-on: #21
Co-authored-by: Hikari <hikari@nhcarrigan.com>
Co-committed-by: Hikari <hikari@nhcarrigan.com>
2026-03-31 18:04:10 -07:00
hikari 39b22c9514 fix: correct announcement API endpoint and add optional content fields (#20)
Node.js CI / CI (push) Successful in 43s
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 1m50s
## Summary

- Fixes the announcement API URL from `/announcement` to `/api/announcement`
- Adds three optional additional content text inputs (Parts 2–4) to the announcement modal
- The bot concatenates all non-empty content fields with double newlines before forwarding to the API
- Only the first content field and the category selector remain required

## Test Plan

- [ ] Run `/announcement` and verify the modal opens with four content fields and a category selector
- [ ] Submit with only the first content field filled — verify it sends correctly
- [ ] Submit with multiple content fields filled — verify they are concatenated in the API request
- [ ] Verify the API no longer returns HTTP 405

Reviewed-on: #20
Co-authored-by: Hikari <hikari@nhcarrigan.com>
Co-committed-by: Hikari <hikari@nhcarrigan.com>
2026-03-23 15:59:42 -07:00
4 changed files with 66 additions and 62 deletions
+3 -1
View File
@@ -15,7 +15,9 @@
<hr />
<a routerLink="/settings" class="nav-link">Settings</a>
<hr />
<a routerLink="/chat" class="nav-link">Chat</a>
<a href="https://chat.nhcarrigan.com" target="_blank" class="nav-link">Chat</a>
<hr />
<a href="https://support.nhcarrigan.com" target="_blank" class="nav-link">Support</a>
<hr />
</div>
<i class="fa-solid fa-bars" *ngIf="!navOpen" (click)="toggleNav()"></i>
+3 -1
View File
@@ -31,6 +31,8 @@ export class Sanctions {
private async loadSanctions(): Promise<void> {
const sanctions = await this.sanctionsService.getSanctions();
this.sanctions = sanctions.sort((a, b) => b.number - a.number);
this.sanctions = sanctions.sort((a, b) => {
return b.number - a.number;
});
}
}
+1 -1
View File
@@ -18,7 +18,7 @@
"@nhcarrigan/eslint-config": "5.2.0",
"@nhcarrigan/typescript-config": "4.0.0",
"eslint": "9.30.1",
"turbo": "2.8.11",
"turbo": "2.8.20",
"typescript": "5.8.3"
}
}
+59 -59
View File
@@ -18,8 +18,8 @@ importers:
specifier: 9.30.1
version: 9.30.1(jiti@2.4.2)
turbo:
specifier: 2.8.11
version: 2.8.11
specifier: 2.8.20
version: 2.8.20
typescript:
specifier: 5.8.3
version: 5.8.3
@@ -1557,6 +1557,36 @@ packages:
resolution: {integrity: sha512-UUYHISyhCU3ZgN8yaear3cGATHb3SMuKHsQ/nVbHXcmnBf+LzQ/cQfhNG+rfaSHgqGKNEm2cOCLVLELStUQ1JA==}
engines: {node: ^18.17.0 || >=20.5.0}
'@turbo/darwin-64@2.8.20':
resolution: {integrity: sha512-FQ9EX1xMU5nbwjxXxM3yU88AQQ6Sqc6S44exPRroMcx9XZHqqppl5ymJF0Ig/z3nvQNwDmz1Gsnvxubo+nXWjQ==}
cpu: [x64]
os: [darwin]
'@turbo/darwin-arm64@2.8.20':
resolution: {integrity: sha512-Gpyh9ATFGThD6/s9L95YWY54cizg/VRWl2B67h0yofG8BpHf67DFAh9nuJVKG7bY0+SBJDAo5cMur+wOl9YOYw==}
cpu: [arm64]
os: [darwin]
'@turbo/linux-64@2.8.20':
resolution: {integrity: sha512-p2QxWUYyYUgUFG0b0kR+pPi8t7c9uaVlRtjTTI1AbCvVqkpjUfCcReBn6DgG/Hu8xrWdKLuyQFaLYFzQskZbcA==}
cpu: [x64]
os: [linux]
'@turbo/linux-arm64@2.8.20':
resolution: {integrity: sha512-Gn5yjlZGLRZWarLWqdQzv0wMqyBNIdq1QLi48F1oY5Lo9kiohuf7BPQWtWxeNVS2NgJ1+nb/DzK1JduYC4AWOA==}
cpu: [arm64]
os: [linux]
'@turbo/windows-64@2.8.20':
resolution: {integrity: sha512-vyaDpYk/8T6Qz5V/X+ihKvKFEZFUoC0oxYpC1sZanK6gaESJlmV3cMRT3Qhcg4D2VxvtC2Jjs9IRkrZGL+exLw==}
cpu: [x64]
os: [win32]
'@turbo/windows-arm64@2.8.20':
resolution: {integrity: sha512-voicVULvUV5yaGXo0Iue13BcHGYW3u0VgqSbfQwBaHbpj1zLjYV4KIe+7fYIo6DO8FVUJzxFps3ODCQG/Wy2Qw==}
cpu: [arm64]
os: [win32]
'@types/chai@5.2.2':
resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==}
@@ -4618,38 +4648,8 @@ packages:
resolution: {integrity: sha512-3T3T04WzowbwV2FDiGXBbr81t64g1MUGGJRgT4x5o97N+8ArdhVCAF9IxFrxuSJmM3E5Asn7nKHkao0ibcZXAg==}
engines: {node: ^18.17.0 || >=20.5.0}
turbo-darwin-64@2.8.11:
resolution: {integrity: sha512-XKaCWaz4OCt77oYYvGCIRpvYD4c/aNaKjRkUpv+e8rN3RZb+5Xsyew4yRO+gaHdMIUhQznXNXfHlhs+/p7lIhA==}
cpu: [x64]
os: [darwin]
turbo-darwin-arm64@2.8.11:
resolution: {integrity: sha512-VvynLHGUNvQ9k7GZjRPSsRcK4VkioTfFb7O7liAk4nHKjEcMdls7GqxzjVWgJiKz3hWmQGaP9hRa9UUnhVWCxA==}
cpu: [arm64]
os: [darwin]
turbo-linux-64@2.8.11:
resolution: {integrity: sha512-cbSn37dcm+EmkQ7DD0euy7xV7o2el4GAOr1XujvkAyKjjNvQ+6QIUeDgQcwAx3D17zPpDvfDMJY2dLQadWnkmQ==}
cpu: [x64]
os: [linux]
turbo-linux-arm64@2.8.11:
resolution: {integrity: sha512-+trymp2s2aBrhS04l6qFxcExzZ8ffndevuUB9c5RCeqsVpZeiWuGQlWNm5XjOmzoMayxRARZ5ma7yiWbGMiLqQ==}
cpu: [arm64]
os: [linux]
turbo-windows-64@2.8.11:
resolution: {integrity: sha512-3kJjFSM4yw1n9Uzmi+XkAUgCae19l/bH6RJ442xo7mnZm0tpOjo33F+FYHoSVpIWVMd0HG0LDccyafPSdylQbA==}
cpu: [x64]
os: [win32]
turbo-windows-arm64@2.8.11:
resolution: {integrity: sha512-JOM4uF2vuLsJUvibdR6X9QqdZr6BhC6Nhlrw4LKFPsXZZI/9HHLoqAiYRpE4MuzIwldCH/jVySnWXrI1SKto0g==}
cpu: [arm64]
os: [win32]
turbo@2.8.11:
resolution: {integrity: sha512-H+rwSHHPLoyPOSoHdmI1zY0zy0GGj1Dmr7SeJW+nZiWLz2nex8EJ+fkdVabxXFMNEux+aywI4Sae8EqhmnOv4A==}
turbo@2.8.20:
resolution: {integrity: sha512-Rb4qk5YT8RUwwdXtkLpkVhNEe/lor6+WV7S5tTlLpxSz6MjV5Qi8jGNn4gS6NAvrYGA/rNrE6YUQM85sCZUDbQ==}
hasBin: true
twitter-api-v2@1.28.0:
@@ -6433,6 +6433,24 @@ snapshots:
'@tufjs/canonical-json': 2.0.0
minimatch: 9.0.5
'@turbo/darwin-64@2.8.20':
optional: true
'@turbo/darwin-arm64@2.8.20':
optional: true
'@turbo/linux-64@2.8.20':
optional: true
'@turbo/linux-arm64@2.8.20':
optional: true
'@turbo/windows-64@2.8.20':
optional: true
'@turbo/windows-arm64@2.8.20':
optional: true
'@types/chai@5.2.2':
dependencies:
'@types/deep-eql': 4.0.2
@@ -10192,32 +10210,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
turbo-darwin-64@2.8.11:
optional: true
turbo-darwin-arm64@2.8.11:
optional: true
turbo-linux-64@2.8.11:
optional: true
turbo-linux-arm64@2.8.11:
optional: true
turbo-windows-64@2.8.11:
optional: true
turbo-windows-arm64@2.8.11:
optional: true
turbo@2.8.11:
turbo@2.8.20:
optionalDependencies:
turbo-darwin-64: 2.8.11
turbo-darwin-arm64: 2.8.11
turbo-linux-64: 2.8.11
turbo-linux-arm64: 2.8.11
turbo-windows-64: 2.8.11
turbo-windows-arm64: 2.8.11
'@turbo/darwin-64': 2.8.20
'@turbo/darwin-arm64': 2.8.20
'@turbo/linux-64': 2.8.20
'@turbo/linux-arm64': 2.8.20
'@turbo/windows-64': 2.8.20
'@turbo/windows-arm64': 2.8.20
twitter-api-v2@1.28.0: {}