Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e2311facf4 | ||
|
|
30d3523aeb |
@@ -240,6 +240,11 @@ S3_REGION="eu-central"
|
||||
|
||||
`**жирный**` в отзыве на ДЗ студент увидит звёздочками. Ссылку там же писать голым адресом можно — `linkify` её поднимет.
|
||||
|
||||
Когда сами пишем ответ студенту под уроком, две граблю рендера (проверено боем 20260922, урок Zotero 2.3):
|
||||
|
||||
- **Перечисление строками через «—» склеивается в один абзац.** GFM не считает тире маркером списка: четыре пункта подряд, каждый с новой строки, отрендерились одной сплошной строкой в ответе от 21.09. Список — только `- ` в начале строки.
|
||||
- **Длинный адрес с `&` оборачивать в `<…>`.** Автолинк GFM на параметрах запроса обрывается; `<https://host/?a=1&b=2>` даёт кликабельную ссылку целиком. Подчёркивания внутри слова (`url_selector`) курсивом не становятся — их экранировать не нужно.
|
||||
|
||||
Безопасность рендера комментариев (не ослаблять «улучшением»): `rehype-sanitize` режет сырой HTML и `javascript:`; картинки с чужих доменов **не грузятся** — компонент `img` отдаёт их ссылкой, чтобы адрес читателя не утекал на сторонний сервер. Свои картинки — через `/api/student/comment-upload`.
|
||||
|
||||
### Файлы курсов живут на двух разных доменах
|
||||
|
||||
@@ -26,7 +26,7 @@ export const PAY_METHODS_URL = "https://obsidian.second-brain.ru/pay/methods";
|
||||
export const STORE_CATALOG: Record<string, StoreCatalogEntry> = {
|
||||
"second-brain-vault": {
|
||||
landingUrl: "https://second-brain.ru/sb-vault",
|
||||
tariffs: [{ sku: "sb-vault", label: "Second Brain Vault", priceRub: 2990 }],
|
||||
tariffs: [{ sku: "sb-vault", label: "Second Brain Vault", priceRub: 4990 }],
|
||||
},
|
||||
"claude-obsidian": {
|
||||
landingUrl: "https://second-brain.ru/claude-obsidian",
|
||||
|
||||
Reference in New Issue
Block a user