9f61da990d
Merge pull request 'robots.txt, sitemap.xml and an RSS feed of new content' ( #92 ) from feature/robots-sitemap-rss into main
...
Reviewed-on: #92
2026-10-09 19:55:29 +00:00
Anas Rashid
0aa3d5979e
Merge remote-tracking branch 'gitea/main' into feature/robots-sitemap-rss
...
# Conflicts:
# web/src/components/Icon.astro
# web/src/layouts/Base.astro
2026-10-09 21:50:15 +02:00
415459d55f
Merge pull request 'Monitoring: /health for uptime checks, structured error logging, API errors without internal details' ( #90 ) from feature/monitoring into main
...
Reviewed-on: #90
2026-10-09 19:49:08 +00:00
ce1adc4dcd
Merge pull request 'Fix: stop tracking node_modules links (committed by mistake in #78 )' ( #89 ) from fix/untrack-node-modules into main
...
Reviewed-on: #89
2026-10-09 19:48:58 +00:00
b6f6c708a1
Merge pull request 'Launch: privacy and terms pages, Urdu 404 and error pages' ( #88 ) from feature/launch-pages into main
...
Reviewed-on: #88
2026-10-09 19:48:33 +00:00
Anas Rashid
13eaf9fe90
robots.txt, sitemap.xml and an RSS feed of new versions, e-books, arrangements and tags (rss.xml, linked in the head and footer)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 19:32:55 +02:00
Anas Rashid
0511f7d2ee
Monitoring: /health (site, API, database) for an uptime monitor; errors logged as one JSON line each by the API and the site; the API answers errors without internal details
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 19:30:09 +02:00
Anas Rashid
c20cbc17bf
gitignore: comment on its own line
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 19:29:40 +02:00
Anas Rashid
19aace12ff
Stop tracking api/node_modules and web/node_modules: links to a local folder were committed by mistake in #78 ; .gitignore now ignores node_modules whether a folder or a link
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 19:29:27 +02:00
Anas Rashid
8ca681fc5b
Launch pages: privacy (رازداری) and terms (استعمال کی شرائط) in Urdu, Urdu 404 and error pages; footer and sign-up links; contact in brand.ts
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 19:26:45 +02:00
dd5771a128
Merge pull request 'Editor keyboard: docked at the bottom, following the writing cursor' ( #79 ) from feature/floating-keyboard into main
...
Reviewed-on: #79
2026-10-09 16:18:35 +00:00
1de1da5410
Merge pull request 'Divan text: source link field ماخذ_لنک (was ماخذ_ربط)' ( #78 ) from fix/source-link-name into main
...
Reviewed-on: #78
2026-10-09 16:18:28 +00:00
Anas Rashid
6a62df9ee0
Editor keyboard: docked at the bottom of the window and the page keeps the writing line above it; a close key; search keeps the header keyboard
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 18:15:26 +02:00
Anas Rashid
c1cf7c01a8
Divan text: the source link field is ماخذ_لنک (was ماخذ_ربط), in the converter, the editor's suggested fields, the guide and the examples
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 18:10:51 +02:00
bc51aa66ab
Merge pull request 'Brand protection: GPL section 7 terms, TRADEMARKS.md, the name and taglines in one file' ( #77 ) from feature/brand-protection into main
...
Reviewed-on: #77
2026-10-09 16:01:30 +00:00
Anas Rashid
d7da7458c0
Brand protection: GPL v3 section 7 additional terms (attribution, marked modified versions, no rights to the name and logos) in NOTICE; TRADEMARKS.md; the name and taglines in web/src/lib/brand.ts
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 17:59:50 +02:00
30d66517bd
Merge pull request 'Security: a made-up x-client-ip can no longer get round the sign-in and sign-up limits' ( #76 ) from fix/trusted-client-ip into main
...
Reviewed-on: #76
2026-10-09 15:58:41 +00:00
Anas Rashid
ad7f3cb666
Rate limits can't be dodged with a made-up x-client-ip: the API believes it only from the site (DIVAN_SITE_KEY in x-site-key, timing-safe; this machine only when no key is set)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 17:38:55 +02:00
Anas Rashid
7c375d70b8
Merge branch 'feature/reading-mode' into main: reading mode, pages the browser's reader understands ( #75 )
2026-10-09 17:36:39 +02:00
Anas Rashid
792b68979b
Reading mode, and pages the browser's reader understands
...
- Reading mode (the book button in a poem's, book's or poet's action row): the text, the breadcrumbs, the poet's name and the logo; no search, icons, buttons, couplet tools, tags or footer; larger verse. Kept across pages until the ✕ in the header; switched on before paint (no flash); only on readable pages, so search and tools are unaffected
- For Safari Reader, Firefox Reader View and Chrome's reading mode: a poem is one <article> (title, poet, text), with <meta name="author"> and schema.org CreativeWork data
- Printing shows the text and its source only
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 17:36:18 +02:00
Anas Rashid
9f401fe2af
Merge branch 'feature/ux-motion' into main: notes (separate from bookmarks, notes page), share and download a couplet as an image, Urdu confirm dialog, toasts, busy buttons, page transitions and motion, moderation dashboard, timelines ( #74 )
2026-10-09 17:32:19 +02:00
Anas Rashid
2efde6ee22
Notes apart from bookmarks, and a notes page
...
- A note never bookmarks: notes and bookmarks share a row, bookmarked false is a note only (db: library.bookmarked). Un-bookmarking keeps a note; clearing the note of a row that is not bookmarked removes it; ✕ on the saved page keeps a note
- A phrase with a note but no bookmark is underlined only, with the note glyph
- /notes: every note with where it is and its couplet (the noted phrase marked), editable in place with the Urdu keyboard, deleted after asking; from a note icon in the header and a نوٹس tab
- API tests for all of it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 17:32:16 +02:00
Anas Rashid
b0c7cbccf1
Couplet tools at the couplet's left edge (on the bottom line, clear of the text) instead of centred
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 17:27:52 +02:00
Anas Rashid
f122eb8f10
Couplet tools in one row; share and download apart; Urdu keyboard in the note box
...
- Bookmark, note, share and download sit in one row centred under each couplet on the ✤ line (bookmark and note on one side, share and download on the other), clear of the text, the same on phones
- Share always opens the share menu (the picture where the browser can share files, else the couplet and its link; with no share menu, both are copied); a new download button saves the picture
- The note box has the Urdu keyboard and Roman typing like the search box (the keyboard moves into the box while it is open); notes can be in any language (the box follows the typed direction)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 17:27:04 +02:00
Anas Rashid
bab7ffa37f
Share card: always Nastaliq (the card loads its own Nastaliq faces, so a page that has not used bold Nastaliq no longer falls back to a wider font) and one line per misra (verse shrinks to fit; only prose wraps); the title line in Nastaliq too
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 17:22:07 +02:00
Anas Rashid
86be5db6ea
Moderation dashboard (count tiles that jump to each queue; queue items as cards with icon, status and age) and timelines for the moderation activity and the admin record (a coloured dot per kind of action, relative times, filter chips on the record)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 17:20:02 +02:00
Anas Rashid
8d0a6aa36b
Share a couplet as an image: a share glyph under each couplet's note glyph draws a square card (frame, logo, the couplet in Nastaliq, the couplet line, the poet) and hands it to the share sheet, or downloads it
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 17:17:38 +02:00
Anas Rashid
1485781fb7
Notes on couplets and selected text, and the site's own dialog, toasts and busy buttons
...
- Notes: a glyph below each couplet's bookmark opens a note box (filled gold when the couplet or a phrase in it has a note; the note shows on hover). Selected text gets نوٹ in the selection menu; a highlighted phrase with a note shows the note glyph and opens its note (with "remove highlight"). API: POST /api/library/note {poemId, couplet, phrase?, note} (bookmarks if needed; empty clears the note), notes in /api/library/state; tests added
- Confirm dialog in Urdu (destructive answer in red, named for what it does) in place of the browser's English confirm(); forms use data-confirm
- Toasts for "done" messages; errors stay by the form and nudge; a submitting button shows a spinner
- Motion: page cross-fade (View Transitions) with the logo held; couplets rise in on load; bookmark and note glyphs pop; the word sidebar slides in; menus and folding sections open smoothly; all off with reduced motion
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 17:14:59 +02:00
2bdf6c9dde
Merge pull request 'Home masthead: no second دیوان (the logo says it); اردو کا کلاسیکی ادب is the heading, between two couplet lines' ( #73 ) from anas/user-access-footer-logo into main
...
Reviewed-on: #73
2026-10-09 15:03:24 +00:00
Anas Rashid
543acb3218
Home masthead: space above the headline, so it sits evenly between the couplet lines
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 17:01:04 +02:00
Anas Rashid
80f887f175
Home masthead: no second دیوان (the logo says it); اردو کا کلاسیکی ادب is the heading, between two couplet lines
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 16:59:35 +02:00
ce9adbe9e1
Merge pull request 'User access redesign, Libron, spacing, footer, headline, logo concepts' ( #72 ) from anas/user-access-footer-logo into main
...
Reviewed-on: #72
2026-10-09 14:43:52 +00:00
Anas Rashid
5a5657803d
Home logo turns on hover like the header's: pale rays one way, gold lobes the other, the disc and دیوان still
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 16:43:33 +02:00
Anas Rashid
aa96828aef
Home masthead (as the share image): ترنج beside a large دیوان and اردو کا کلاسیکی ادب in a gold double frame, divided by the couplet line (half-lines and ✤); stacks on phones
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 16:42:37 +02:00
Anas Rashid
add4666364
Logo everywhere it is looked for: PNG favicon and favicon.ico beside the SVG, a web app manifest with 192/512 and maskable icons, theme-color for light and dark, a share image (og-image.png) with Open Graph and Twitter tags; the logo in the footer, on sign-in and sign-up, embedded as the static reader's favicon and at the top of the README
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 16:40:10 +02:00
Anas Rashid
d1e921a738
Logo: ترنج (the lobed shamsa) everywhere: header, home page, favicon and home-screen icon. On hover its pale rays turn one way and the gold lobes the other; the disc and دیوان stay still. The plain shamsa files are removed
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 16:38:17 +02:00
Anas Rashid
58ded69178
Logo: the shamsa everywhere; the home page's large logo is shamsa.svg and turanj.svg is removed
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 16:36:38 +02:00
Anas Rashid
ebbf39d365
Logo hover: the long rays turn clockwise and the short rays anticlockwise; the blue disc and دیوان stay still (the SVG is inline so its layers can move; no motion with reduced-motion)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 16:35:37 +02:00
Anas Rashid
a423952b26
Header: the full shamsa logo (دیوان inside the medallion) in place of the text, 52–72px with the viewport
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 16:33:22 +02:00
Anas Rashid
808150eefb
Header logo: the shamsa medallion beside the Nastaliq دیوان (turns a little on hover), lined up with the word at every width; a home-screen icon (apple-touch-icon) from the same medallion
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 16:32:00 +02:00
Anas Rashid
4d6e7406c4
Logo: the shamsa (illuminated medallion). The sunburst version is the favicon and small icon, the lobed version (ترنج) sits above the home headline; both are outlined SVGs in web/public/logo, shown on /design. Rounds two and three of the concepts in docs/logo-concepts
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 16:28:56 +02:00
Anas Rashid
571eca5523
User access redesign: the users list filters by role (with counts) and shows each user in one row (avatar, role badge, permissions, last seen); one page per user for role (one click, with what each role may do), permissions (cards, chips, a poet picked by name) and account actions. Libron for Latin text. Spacing: search-box icons, page action rows and list buttons no longer touch. Footer: grouped links with icons and notes. Headline: اردو کا کلاسیکی ادب. Four logo concepts in docs/logo-concepts
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 16:22:03 +02:00
Anas Rashid
ff8d8ea3ae
Local launch config: the web dev server on port 4201 (shows /design)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 16:00:17 +02:00
Anas Rashid
9cd8067e52
Merge branch 'feature/design-system' into main: role tokens, shared controls, mobile layout, arrow and editor icons, centred wrapped verses
2026-10-09 15:57:04 +02:00
Anas Rashid
1e3fd3066e
Merge branch 'feature/icons-palette' into main: header icons, colour roles, palettes, display settings, Eastern/Western numerals
2026-10-09 15:57:04 +02:00
Anas Rashid
ada721fd6d
Design system: colour tokens named by role (surfaces, text, link, accent, active, focus, ok, danger), each palette written once with light-dark(); radius, type and shadow scales; one base for every button, chip and tab and one for every text box; a /design reference page (dev only). Phones: the search box no longer overlaps the header icons or pushes the page sideways (its own row), دیوان clears it, poet cards keep whole names. Arrows instead of پچھلا/اگلا, an exit icon for full-screen PDFs, an icon toolbar in the editor. Long half-lines wrap centred
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 15:56:56 +02:00
Anas Rashid
3305a514ba
Numerals: Eastern (۱۲۳) or Western (123) in the display settings; the server sends pages with the chosen digits (scripts and styles untouched) and script-drawn numbers follow. Settings button lines up with the other icons
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 15:34:38 +02:00
Anas Rashid
e04ed0d4af
Colour palettes and a display settings panel: sepia, فیروزی، نیلگوں، سبز، گلابی (each light and dark); font, palette and light/dark/automatic in one header button
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 15:31:17 +02:00
Anas Rashid
a37ba82829
Header: font list in Naskh at a fixed height (Nastaliq spilled out in Safari); the ع is laid over the book icon as text (Safari drew the SVG text too large)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 15:29:27 +02:00
Anas Rashid
70e44f705d
Header: the font is a list (نسخ / نستعلیق, each in its own font); the word book icon has ع, not a Latin A; log out lines up with the other icons
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 15:27:30 +02:00