poslop
9c4689e6de
Mobile responsiveness: media query for 375-640px across topbar, deck, history, paste view, unlock ( #45 )
CI / test (push) Successful in 20s
CI / docker (push) Skipped
2026-09-08 21:45:42 -05:00
poslop
ebcf7eec80
Live relative-time counters via shared [data-ts] ticker in layout foot ( #46 )
CI / test (push) Successful in 20s
CI / docker (push) Skipped
2026-09-08 21:41:29 -05:00
poslop
b3112d2a35
History: sortable column headers with client-side sort ( #42 )
CI / test (push) Successful in 21s
CI / docker (push) Skipped
2026-09-08 21:36:53 -05:00
poslop
6a6f4d1587
History: URL + ID columns at end, custom_slug in /api/public ( #44 )
CI / test (push) Successful in 20s
CI / docker (push) Skipped
2026-09-08 21:33:08 -05:00
poslop
e31aa44ecb
History: paste name under Paste column, drop Description column ( #43 )
CI / test (push) Successful in 21s
CI / docker (push) Skipped
2026-09-08 21:32:10 -05:00
poslop
5b7198fb3c
Settings gear in topbar linking to placeholder /settings page ( #36 )
...
CI / test (push) Successful in 20s
CI / docker (push) Skipped
- layout.html: inline SVG gear icon top-right, styled as .iconbtn.gear pill
- new settings.html template reusing standard layout with under-construction card
- register GET /settings route in main.go
2026-09-08 21:27:02 -05:00
poslop
efa8c7145c
Language detection: switch to go-enry with hint-seeded classifier ( #41 )
...
CI / test (push) Successful in 35s
CI / docker (push) Skipped
- Add github.com/go-enry/go-enry/v2 dependency to go.mod
- guessLang: JSON fast path, then enry strategies (shebangs, XML, modelines,
content heuristics), then enry's Linguist-trained Bayesian classifier over
regex-hint candidate languages; curated dropdown expanded with typescript,
html, css, xml, php, ruby, perl, lua, dockerfile, toml, ini, diff, csharp
- enry display names normalized to lowercase stored ids (Dockerfile->dockerfile,
Shell->bash, C#->csharp); unsupported languages render unhighlighted
- Tests: existing languages, all new languages, magic markers (enry shebang/
DOCTYPE/FROM/diff handling), canonical mapping
2026-09-08 21:25:36 -05:00
poslop
7410b5c9cf
Paste view: collapsible stats pill under title ( #17 )
CI / test (push) Successful in 19s
CI / docker (push) Skipped
2026-09-08 21:14:44 -05:00
poslop
3facff3d1e
Syntax highlighting, rate limiting, creator auto-unlock ( #1 , #2 , #26 )
...
CI / test (push) Successful in 19s
CI / docker (push) Skipped
#1 : server-side regex highlighter (highlight.go) for go/python/js/json/bash/sql;
token span classes styled in app.css; per-line so gutter stays aligned.
#2 : in-memory token-bucket rate limiter (ratelimit.go) on POST /api/pastes,
/api/guess-language and unlock POST; 429 + Retry-After + X-RateLimit headers.
#26 : new-page JS POSTs the password to /{id} with ?next= after creation; the
unlock handler honors same-origin ?next= redirect so the creator lands on the
unlocked paste. POST /{id} route added.
Tests: ratelimit_test.go (burst/429, refill, unlock limit, highlight, auto-
unlock e2e); existing tests updated for per-test limiter isolation.
2026-09-08 21:09:25 -05:00
poslop
9d75d2f80d
password reveal: slash through eye icon while password hidden
CI / test (push) Successful in 17s
CI / docker (push) Skipped
2026-09-08 20:55:25 -05:00
poslop
1f162c4003
sweeper: release custom URLs on expiry and after 30-day reservation ( #29 )
CI / test (push) Successful in 17s
CI / docker (push) Skipped
2026-09-08 20:50:40 -05:00
poslop
0bbe65ce05
capitalization: fix placeholder casing ( #12 )
CI / test (push) Successful in 19s
CI / docker (push) Skipped
2026-09-08 20:29:37 -05:00
poslop
db17bd20b0
UI polish: radius tokens, layered shadows, pill selections, default filenames, live search, hidden result card, em dash removal
...
CI / test (push) Successful in 17s
CI / docker (push) Skipped
Fixes #6 #7 #8 #9 #10 #11 #13 #14 #15
2026-09-08 20:28:13 -05:00
poslop
f542ce0407
new: split editor into title bar card, body card, standalone create button
CI / test (push) Successful in 17s
CI / docker (push) Skipped
2026-09-08 20:01:02 -05:00
poslop
c32a6e406d
UI: scale up another 1.5x, widen history page container to fit
CI / test (push) Successful in 17s
CI / docker (push) Skipped
2026-09-08 19:54:35 -05:00
poslop
ec8f75d80b
UI: scale everything up ~15% for readability on smaller devices
CI / test (push) Successful in 17s
CI / docker (push) Skipped
2026-09-08 19:51:31 -05:00
poslop
efa551c566
new: language auto-detect - /api/guess-language, refresh button, guess on paste
CI / test (push) Successful in 17s
CI / docker (push) Skipped
2026-09-08 19:41:11 -05:00
poslop
c6233dbbec
Real web UI: /new editor, /history with live pagination, paste view with gutter and deletion banner, /unlock page; size in public API
2026-09-08 16:50:44 -05:00
poslop
f66c0e777b
Burn after read + deletion tokens: single-read pastes, hard-delete via token redeem
2026-09-08 16:12:25 -05:00
poslop
faf768ad80
Custom URLs: validated slugs with reserved words, uniqueness across pastes and cans
2026-09-08 16:09:43 -05:00
poslop
6f6954395e
Cans API: multipart create with mixed items, password-protected cans, item fetch inheriting can auth
2026-09-08 16:08:33 -05:00
poslop
7375de249d
Phase 1 API: pastes CRUD, password lock (argon2id), expiry sweeper, soft delete with 7d grace, public list
2026-09-08 16:04:34 -05:00