Commit Graph

4330 Commits

Author SHA1 Message Date
Anas Rashid
de2e3eb751 Profile: the Urdu keyboard and Roman typing on the name and bio; a field's keyboard opens right under that field (was at the top of the page, out of sight) and goes back to the header when closed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 00:53:08 +02:00
709b5d4594 Merge pull request 'SEO: page descriptions, canonical URLs, structured data' (#97) from feature/seo-pages into main
Reviewed-on: #97
2026-10-09 22:36:51 +00:00
Anas Rashid
46b3372433 SEO (#83): descriptions for works (opening couplet), books, poets, e-books, e-book and tag pages; canonical URLs on every page; structured data for poets (Person), books (CollectionPage) and e-books (Book)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 00:36:09 +02:00
7d398cc19d Merge pull request 'Tags at the end of a page: «ٹیگ» at the start of the line, the tags following it on the same line and wrapping across the width when opened (a sample on /design)' (#96) from anas/tags-help into main
Reviewed-on: #96
2026-10-09 22:25:43 +00:00
Anas Rashid
aa57dcd78c Tags at the end of a page: «ٹیگ» at the start of the line, the tags following it on the same line and wrapping across the width when opened (a sample on /design)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 00:24:30 +02:00
faf8931f44 Merge pull request 'Tags folded at the end of a page; a how-to-use page instead of the hint' (#95) from anas/tags-help into main
Reviewed-on: #95
2026-10-09 22:16:23 +00:00
Anas Rashid
f20cc25080 Tags folded at the end of a page; a "how to use" page instead of the hint
- A page's tags (poem, book, poet) move from the top into a closed «ٹیگ» section with their count at the end of the content, above previous/next; couplets keep their own tags
- The line under each poem ("select a word…") is gone; /help (استعمال کا طریقہ, linked in the footer) explains the features: search and Roman typing, meanings and the selection menu, a couplet's tools (and ⋯ on phones), notes, saved items and the word book, reading mode, fonts and colours, e-books, tags and RSS

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 00:13:45 +02:00
6fddb3b2e8 Merge pull request 'Phones: couplet tools on tap, e-book tabs on one line, a header that steps aside' (#94) from anas/mobile-polish into main
Reviewed-on: #94
2026-10-09 22:03:22 +00:00
Anas Rashid
bba1b93320 Phones: one ⋯ per couplet instead of four icons
On phones (up to 640px, or touch without a mouse) each couplet has one small ⋯ button, shown when the couplet is tapped; a set bookmark or note shows as a tiny glyph on it and keeps it visible. It opens one shared menu (a native popover, light-dismiss, arrow keys): bookmark or remove, note, share, download. Wider screens keep the four icons on hover. Couplets keep room under them on narrow screens, so the tools never sit on the text

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 00:02:56 +02:00
Anas Rashid
c2766922b5 Phones: couplet tools on tap, e-book tabs on one line, a header that steps aside
- Touch screens: a couplet's tools show when it is tapped (the couplet lightly marked; tapping again or another hides them); a set bookmark or note stays visible; couplets without either keep no room for the row (from a phone screenshot: every line had four icons under it)
- E-book format tabs stay on one line each; on phones without the English in brackets, scrolling sideways if needed
- Phones: the sticky header slides away while scrolling down and returns on the way up (a transform, so nothing jumps; not while the search box, keyboard or display menu is in use)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 23:59:46 +02:00
Anas Rashid
b7facedf95 Merge branch 'feature/sticky-header-footer' into main: sticky header, a footer that uses its width (#93) 2026-10-09 23:52:24 +02:00
Anas Rashid
65762f286f Footer: the made-in line starts at the logo's visible edge
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 23:52:15 +02:00
Anas Rashid
7077524dcb Footer: the made-in line on its own row below the logo and tagline
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 23:51:06 +02:00
Anas Rashid
93ccabdf29 Footer: no red دیوان heading (the logo says it; its tall letters collided with the tagline); the tagline beside the logo
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 23:50:35 +02:00
Anas Rashid
575ef530a7 Sticky header and a footer that uses its width
- The header stays at the top for readers and admins alike; its height never changes while scrolling (no jumps), it gains a translucent blurred background and a hairline shadow once scrolled. --header-h keeps anchors (#c6) and the editor's sticky toolbar and code panel clear of it. The header logo is a little smaller (48–60px)
- Footer: the brand (logo, name, tagline, the flag line) beside the links, the site's five links down one column with sources and code stacked beside them; licence, contact and attribution in a thin bottom bar. On phones the brand on top and the links in two columns

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 23:33:06 +02:00
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