p4-web
Changes
Guide
GitHub ↗
한국어
Search index, hardening, and this site
65268 Landing page: GitHub repository and source .zip download links
65266 Landing page: fix mobile zoom-out caused by the hero diff overflow
65265 GitHub Pages custom domain (docs/CNAME → p4-web.woojinkim.org)
65264 Project landing page (docs/index.html)
65225 Changes view picks its engine automatically — the user-facing “Fast” toggle is gone (index for description/filename/date browsing, live p4 for pending and path prefixes)
65221 Date filters accept YYYY-MM-DD as plain text inputs (native date pickers rendered browser-locale formats)
65220 Per-user changelist search index — instant description and filename search that respects protections
65218 Graceful session-expiry: re-login notice, prefilled username, location preserved
65217 Ops hardening: proxy-header allowlist pinned, sessions.db permissions re-tightened on every open
65216 DoS hardening: streamed raw downloads, bounded upload spooling, per-session API rate limit
Review features and a security pass
65207 Standing security review (code review + audit + red team) with three defense-in-depth fixes
65206 Change detail: file paths are clickable — text opens the viewer, binaries download
65196 Inline comments: file/line and changelist threads, markdown bodies, resolve/edit/delete
65193 Path favorites with a root dashboard (recent changes per favorite)
65192 Markdown rendering: README panels in browse, Rendered/Source toggle (marked + DOMPurify, vendored)
2026-07-16
day 1 · evening
Write operations
65184 Dark mode (system default with a manual toggle) + docs wrap-up
65182 Sortable depot listings; line-number permalinks
65181 Shelve / unshelve / delete shelf from My Changes
65178 Write UI: My Changes page, web editor, uploads, submit confirmation
65175 Write backend: per-user server-side workspaces, own-changelist guard, audit log
65170 Login rate limiting (per account and per IP) and Secure cookies
2026-07-16
day 1 · afternoon
P4V parity and operations
65168 Mobile UX pass: whole-row tap targets, slide-over tree, responsive tables
65165 Deployment: Dockerfile + compose, launchd and systemd units, SSL trust-on-first-use
65162 User autocomplete on changelist filters
65161 SVG revision graph tab with integration provenance
65157 Friendly error translation for common p4 failures
65155 Sessions persist in SQLite — restarts don't log anyone out
65153 Mobile layout foundations
65151 Depot tree sidebar, lazy-loading and synced with deep links
65149 Metadata browsers: labels, jobs (with fixes), branches, streams, users & groups
65148 Raw view/download and inline image previews (CSP-sandboxed)
65147 Diff suite: side-by-side everywhere, revision pairs, folder diff, time-lapse annotate
65145 Depot search: file names across depots, content via p4 grep
2026-07-16
day 1 · morning
The read-only core
65139 README, /api/info, login-screen polish
65138 Changelist browsing: filters, keyset paging, detail view with per-file diffs
65137 File history (renames included), unified diffs, annotate
65135 Depot browser and file viewer with offline syntax highlighting
65134 Project skeleton: FastAPI app, p4 -G wrapper, ticket-based login