Commit Graph
214 Commits
Author SHA1 Message Date
fen 2149fcc2e1 Fix #167: gutter numbers align with wrapped-line starts
CI / test (pull_request) Successful in 49s
CI / docker (pull_request) Skipped
- splitLines(): join .codeline blocks with "" not "\n" — newline text
  nodes under pre-wrap rendered an extra line box per logical line, so
  every gutter number drifted one row per line
- renumber(): geometry-driven placement — one gutline per visual row of
  the code body, each number assigned to the row matching its line's
  measured offsetTop; verified second pass re-runs if a partially-filled
  last wrapped row reflows after the gutter rebuild
- app.css: mobile media query gives .code .gutter the same 13px font as
  .code so gutter rows and code rows share one line box at 375px

Verified in local build with headless chromium (long unbroken token on
line 5, wrap ON): all numbers align with line starts, no misalignment,
no horizontal scroll at 1400x900 and 375x812.
2026-09-10 12:09:16 -05:00
fen b603b29359 Merge pull request 'Fix #187: add favicon (paint palette)' (#196) from fix-187-favicon into dev
CI / test (push) Successful in 48s
CI / docker (push) Successful in 48s
2026-09-10 17:03:32 +00:00
fen 2a21251c47 Fix #187: add favicon (paint palette)
CI / test (pull_request) Successful in 39s
CI / docker (pull_request) Skipped
2026-09-10 12:01:54 -05:00
fen bb72e09f8f Merge pull request 'Fix #184: file upload replaces the main editing area on /new' (#189) from fix-184 into dev
CI / test (push) Successful in 43s
CI / docker (push) Successful in 44s
2026-09-10 16:55:32 +00:00
fen 6c1bfaf15e Fix #184: file upload replaces the main editing area on /new
CI / test (pull_request) Successful in 48s
CI / docker (pull_request) Skipped
Image files render fitted into the editor area (editor and gutter
hidden); the title auto-fills with the file name. Text files always
load their content into the editor, replacing any text already there,
instead of only filling an empty editor. Title auto-fill still only
applies when the title is blank; a typed title is never overwritten.
Drawing and cropping tools are noted in the issue as possible future
work and are intentionally not implemented here.
2026-09-10 11:54:59 -05:00
fen 9621faa052 Merge fix-171-r2 into dev (QA for #185): take dev's new.js (already data:-URL) for conflict
CI / test (push) Successful in 45s
CI / docker (push) Successful in 51s
2026-09-10 11:52:18 -05:00
fen 1a8da8cd7a Merge pull request 'Fix #167: gutter realignment with wrapped lines' (#188) from fix-167 into dev
CI / test (push) Successful in 40s
CI / docker (push) Successful in 45s
CI / test (pull_request) Successful in 47s
CI / docker (pull_request) Skipped
# Conflicts:
#	internal/web/static/app.css
2026-09-10 11:44:10 -05:00
fen 368620eb15 Merge pull request 'fix #171: CSP-compliant image preview (data: URL instead of blob:)' (#186) from fix-171 into dev
CI / test (push) Successful in 41s
CI / docker (push) Successful in 50s
2026-09-10 16:42:15 +00:00
fen 5fa728f276 Merge pull request 'Fix #169: persistent full-width divider under stats dropdown title' (#182) from fix-169 into dev
CI / test (push) Successful in 43s
CI / docker (push) Successful in 50s
2026-09-10 16:41:11 +00:00
fen 80e761f53d Fix #169: persistent full-width divider under stats dropdown title
CI / test (pull_request) Successful in 40s
CI / docker (pull_request) Skipped
The divider between the stats dropdown head and body lived on
.stats-body's border-top, so it vanished when collapsed and only the
hover background hinted at the boundary (flicker). Move it to
.stats-head border-bottom so it is always present and spans the full
pill width.
2026-09-10 11:40:59 -05:00
fen 158c0fe4b6 Fix #167: block-level gutline spans so gutter numbers align with wrapped lines
CI / test (pull_request) Successful in 43s
CI / docker (pull_request) Skipped
QA on dev showed .codeline spans wrap correctly but gutter .gutline spans
rendered inline (all at the same top), so numbers 6+ fell off with wrap on.
Add .gutter .gutline { display: block; } so each gutter number occupies its
own visual row, matching the one-number-per-visual-row contract of
paste-lines.js. Verified rendered output in a local build at 1400x900 and
375x812 with a long unbroken token on line 5 and wrap ON.
2026-09-10 11:39:34 -05:00
fen 02fcb80b6d Merge pull request 'Revise notification pill (#168)' (#180) from fix-168 into dev
CI / test (push) Successful in 39s
CI / docker (push) Successful in 56s
2026-09-10 16:38:33 +00:00
fen f947415b23 fix #171: use FileReader data: URL for image preview (CSP blocks blob:)
CI / test (pull_request) Successful in 39s
CI / docker (pull_request) Skipped
2026-09-10 11:38:22 -05:00
fen f6c7bfa66b Revise notification pill per reopened #168: short text, smaller, side placement
CI / test (pull_request) Successful in 39s
CI / docker (pull_request) Skipped
- Pill now reads only 'Paste Created' (no combined 'Paste Created - Link Copied')
- Copy fallback toast now says 'Link Copied'
- Pill shrunk (smaller padding/font) and anchored tighter to the right side

Fixes #168
2026-09-10 11:38:13 -05:00
fen 0e5cfcd403 Merge pull request 'Revise notification pill (#168)' (#181) from fix-168 into dev
CI / test (push) Successful in 42s
CI / docker (push) Successful in 50s
2026-09-10 16:38:08 +00:00
fen d402113f19 Merge pull request 'Fix #167 rev: gutter numbers realign with wrapped lines (missing .gutline CSS)' (#183) from fix-167-rev into dev
CI / test (push) Successful in 41s
CI / docker (push) Successful in 54s
2026-09-10 16:37:57 +00:00
fen bb7251bd25 Fix #171 (r2): file image preview uses data: URL (FileReader) instead of blob: for CSP compliance
CI / test (pull_request) Successful in 41s
CI / docker (pull_request) Skipped
2026-09-10 11:37:39 -05:00
fen 9692531a40 Fix #167 rev: add missing .gutline CSS so gutter numbers align with wrapped lines
CI / test (pull_request) Successful in 41s
CI / docker (pull_request) Skipped
QA of PR #179 found paste-lines.js creates .gutline spans but no CSS rule
existed, so all gutter numbers rendered inline on one visual row. Stack
them one per row under .code .gutter; blank fill spans inherit it.
2026-09-10 11:35:39 -05:00
fen b801d7fb56 Revise notification pill per reopened #168: short text, smaller, side placement
CI / test (pull_request) Successful in 40s
CI / docker (pull_request) Skipped
- Pill now reads only 'Paste Created' (no combined 'Paste Created - Link Copied')
- Copy fallback toast now says 'Link Copied'
- Pill shrunk (smaller padding/font) and anchored tighter to the right side

Fixes #168
2026-09-10 11:33:45 -05:00
fen 362a59690f Merge pull request 'Clean up notification pill (#168)' (#178) from fix-168 into dev
CI / test (push) Successful in 40s
CI / docker (push) Successful in 50s
2026-09-10 16:25:56 +00:00
fen 0643ca433e Merge pull request 'Fix #167: gutter numbers realign with wrapped lines' (#179) from fix-167 into dev
CI / test (push) Successful in 39s
CI / docker (push) Successful in 49s
2026-09-10 16:25:15 +00:00
fen 6064404723 Merge remote fix-168: keep corner pill, cookie-based token flow
CI / test (pull_request) Successful in 40s
CI / docker (pull_request) Skipped
2026-09-10 11:25:15 -05:00
fen aa4d017631 Fix #168: compact corner notification pill for paste creation 2026-09-10 11:24:24 -05:00
fen dee062dfa5 Fix #167: gutter numbers track wrapped visual rows when line wrap enabled
CI / test (pull_request) Successful in 38s
CI / docker (pull_request) Skipped
2026-09-10 11:23:49 -05:00
fen 6ef0de6e19 Merge remote-tracking branch 'origin/dev' into qa178
# Conflicts:
#	internal/web/templates/paste.html
2026-09-10 11:23:47 -05:00
fen 28a79b20ea Merge pull request 'editor head: wrap toggle state and pill highlight (#166)' (#172) from fix-166 into dev
CI / test (push) Successful in 37s
CI / docker (push) Successful in 43s
2026-09-10 16:21:28 +00:00
fen 3fa2c93e22 clean up notification pill wording, size, and placement (#168)
CI / test (pull_request) Successful in 39s
CI / docker (pull_request) Skipped
2026-09-10 11:18:57 -05:00
fen bead90699d Merge pull request 'Fix #170: remove stray bar at bottom of /new page' (#177) from fix-170 into dev
CI / test (push) Successful in 33s
CI / docker (push) Successful in 37s
2026-09-10 16:18:42 +00:00
fen d7fb87f19b Fix #170: stray bar at bottom of /new page
CI / test (pull_request) Successful in 36s
CI / docker (pull_request) Skipped
#139 removed inline display:block from paste.html's created banner and
compensated with a global .created-banner { display:block } override.
That override also hit the hidden placeholder banner on /new, whose
base rule is display:none, making an empty padded bar render above the
action bar. Scope the override to .created-banner.show and mark only
the paste-view banner with the show class.
2026-09-10 11:16:30 -05:00
fen b9153c1d95 Merge pull request 'File upload preview in editor (#171)' (#175) from fix-171 into dev
CI / test (push) Successful in 32s
CI / docker (push) Successful in 40s
2026-09-10 16:13:00 +00:00
fen 51685f8667 file upload preview in editor on /new (#171)
- images render fitted into the editor area (object-fit contain), editor hidden
- text files load content into the editor; title placeholder convention (Python.py, Text.txt fallback)
- title auto-fills only when blank; never overwrites a typed title
- external JS + CSS classes only, CSP-safe (no inline styles/scripts)
2026-09-10 11:12:41 -05:00
fen 269acf1fa5 Merge pull request '#173: render friendly Paste ID not found UI instead of bare 404' (#174) from fix/173-paste-not-found into dev
CI / test (push) Successful in 33s
CI / docker (push) Successful in 44s
2026-09-10 16:09:14 +00:00
fen 122c1e14f4 web: friendly Paste ID not found page for missing pastes (#173)
CI / test (pull_request) Successful in 32s
CI / docker (pull_request) Skipped
Missing or expired paste IDs (and unknown routes) now render the main
UI chrome with a 'Paste ID not found' message in a color-coded result
card instead of a bare text/JSON 404. HTTP status stays 404. No inline
scripts or styles; new CSS uses existing --err token and pill radii.
2026-09-10 11:06:52 -05:00
fen 9712926cf5 #173: render friendly 'Paste ID not found' UI instead of bare 404
Missing/expired/burned paste IDs and unknown routes now render the main
UI (topbar + centered result card) with a 'Paste ID not found' message,
returning HTTP 404 status for correctness.
2026-09-10 11:06:44 -05:00
fen 5fc5ae8aad editor head: wrap toggle state and pill highlight (#166)
CI / test (pull_request) Successful in 32s
CI / docker (pull_request) Skipped
wrap button on the new paste page looked identical whether wrap was on
or off because the btn base is already accent filled. give the toggle a
neutral off state so the accent on state is visible, matching the icon
button toggles on the paste view.

also remove the accent border on the whole language settings pill when
any child has focus. individual controls already show their own focus
rings, so the pill highlight made no sense.
2026-09-10 10:13:42 -05:00
fen 5dba356264 Merge pull request 'Settings spacing between sections (#161)' (#165) from fix-161 into dev
CI / test (push) Successful in 31s
CI / docker (push) Successful in 39s
2026-09-10 15:10:37 +00:00
fen 4683b8b542 new paste tab: rework number box submenus (#157)
CI / test (push) Successful in 31s
CI / docker (push) Successful in 37s
Fixes #157
2026-09-10 14:45:50 +00:00
fen 16cad8796f new paste tab: rework number box submenus (#157)
CI / test (pull_request) Successful in 32s
CI / docker (pull_request) Skipped
Give the custom expiry and readable N times submenus a shared boxed
container with proper padding, indent them under their parent option,
and style the number inputs and unit select with palette vars, the
existing radius scale, and the select chevron. No em dashes, no hard
coded colors in new rules.
2026-09-10 09:45:31 -05:00
fen 317ed2137a Settings: more padding between sections (#161)
CI / test (pull_request) Successful in 37s
CI / docker (pull_request) Skipped
Add margin under the dark mode toggle and between section headings
(theme/editor) on /settings via CSS classes, no inline styles (CSP).
2026-09-10 09:41:45 -05:00
fen 93fea6ad1c Merge pull request 'Fix #163: /new Create button broken (stale iscan/createCan path)' (#164) from fix-163 into dev
CI / test (push) Successful in 32s
CI / docker (push) Successful in 40s
2026-09-10 14:40:52 +00:00
fen 0787871f2b Fix #163: remove dead iscan/createCan path breaking /new Create
CI / test (pull_request) Successful in 31s
CI / docker (pull_request) Skipped
2026-09-10 09:33:49 -05:00
fen 85dcaea522 Merge pull request 'Fix #142: long unbroken paste title caused double horizontal scrollbar at mobile width' (#162) from fix-142 into dev
CI / test (push) Successful in 32s
CI / docker (push) Successful in 37s
2026-09-10 14:33:28 +00:00
fen c4d55cb196 Fix #142: break long unbroken paste titles instead of forcing horizontal scroll
CI / test (pull_request) Successful in 34s
CI / docker (pull_request) Skipped
Add word-break: normal; overflow-wrap: anywhere to .paste-title-bar h1 so
a >120-char unbroken title wraps inside the title card at mobile width
instead of producing an internal + page-level horizontal scrollbar.
2026-09-10 09:33:15 -05:00
fen 5a227e2feb Merge pull request 'Fix #139: drop unsafe-inline from script-src and style-src' (#159) from fix-139 into dev
CI / test (push) Successful in 31s
CI / docker (push) Successful in 36s
2026-09-10 09:11:00 -05:00
fen 7a74ff3e74 Fix #139: drop unsafe-inline from script-src and style-src (#139)
CI / test (pull_request) Successful in 30s
CI / docker (pull_request) Skipped
- Move all inline <script> blocks (layout head/theme, topbar dark toggle,
  foot, paste, new, history, mine, settings, admin, unlock) to external
  files under internal/web/static/. Page data reaches scripts via data-*
  attributes (data-paste-id, data-default-dark) instead of template vars.
- Replace inline onclick handlers (copy, delete, stats toggle) with
  addEventListener wiring.
- Convert inline style="" attributes to CSS utility classes; swatch
  colors are now set via CSSOM/DOM APIs instead of innerHTML strings.
- script-src/style-src are now plain 'self'; img-src data: stays for the
  SVG data-URI backgrounds. Verified with headless chromium: zero CSP
  violations on all pages in dark and light presets, theme swatches,
  admin lock, tables and paste view render correctly.
2026-09-10 09:08:17 -05:00
fen fc07d8b9d7 Merge pull request 'Wrap: break long words, no horizontal scroll while wrap enabled' (#155) from fix-152 into dev
CI / test (push) Successful in 30s
CI / docker (push) Successful in 36s
2026-09-10 13:51:27 +00:00
fen b30d41b87d Wrap ON breaks long tokens mid-word; no horizontal scroll while wrap enabled (#152)
CI / test (pull_request) Successful in 30s
CI / docker (pull_request) Skipped
- codebody/editor: overflow-wrap anywhere + word-break break-all + overflow-x hidden under html[data-wrap]
- code container and mobile .float also hidden overflow with wrap on
- topbar mobile: tighten gap/padding/nav link padding so nothing overflows at 375px

Fixes #152
2026-09-10 08:51:13 -05:00
fen ca77250cce Merge pull request 'Fix #138: add Secure attribute to viewer cookie (vwr)' (#154) from fix-138 into dev
CI / test (push) Successful in 30s
CI / docker (push) Successful in 35s
2026-09-10 13:43:21 +00:00
fen 521b6f8011 #138: add Secure attribute to viewer cookie (vwr)
CI / test (pull_request) Successful in 29s
CI / docker (pull_request) Skipped
2026-09-10 08:42:12 -05:00
fen fe75dfc746 Merge pull request 'Remove ?token= deletion-token path (#143)' (#153) from fix-143 into dev
CI / test (push) Successful in 29s
CI / docker (push) Successful in 36s
2026-09-10 13:38:15 +00:00