[object Object]

← back to New Items Dashboard

harden: broaden .gitignore + 404-guard for snapshot files

793d2e234bf2a725b4b5c40da740ad994fd5b993 · 2026-05-19 21:17:54 -0700 · Steve Abrams

- .gitignore now covers *.bak.*, *.pre-*, *.orig, *.rej, *.swp, *~
  (was only *.bak). Prevents editor scratch + Claude pre-edit snapshots
  from sneaking into the repo.
- New Express middleware before express.static returns 404 for any
  request to a snapshot/editor-scratch path so even if one accidentally
  lands under public/ it never serves to a browser.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

Files touched

Diff

commit 793d2e234bf2a725b4b5c40da740ad994fd5b993
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Tue May 19 21:17:54 2026 -0700

    harden: broaden .gitignore + 404-guard for snapshot files
    
    - .gitignore now covers *.bak.*, *.pre-*, *.orig, *.rej, *.swp, *~
      (was only *.bak). Prevents editor scratch + Claude pre-edit snapshots
      from sneaking into the repo.
    - New Express middleware before express.static returns 404 for any
      request to a snapshot/editor-scratch path so even if one accidentally
      lands under public/ it never serves to a browser.
    
    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---
 .gitignore | 8 ++++++++
 server.js  | 9 +++++++++
 2 files changed, 17 insertions(+)

diff --git a/.gitignore b/.gitignore
index e33f758..d1b3d72 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,4 +14,12 @@ tmp/
 
 .env.*.local
 .env.*
+
+# Snapshot / editor scratch files — never commit
 *.bak
+*.bak.*
+*.pre-*
+*.orig
+*.rej
+*.swp
+*~
diff --git a/server.js b/server.js
index 08c4903..ec39ea3 100644
--- a/server.js
+++ b/server.js
@@ -9,6 +9,15 @@ const app = express();
 app.use(helmet({ contentSecurityPolicy: false }));
 const PORT = process.env.PORT || 7201;
 
+// Snapshot/editor scratch-file 404 guard — never serve *.bak, *.pre-*, *.orig, etc
+// even if one accidentally lands under public/
+app.use((req, res, next) => {
+  if (/\.(bak|orig|rej|swp)(\?|$)|\.bak\.|\.pre-|~(\?|$)/i.test(req.path)) {
+    return res.status(404).send('Not found');
+  }
+  next();
+});
+
 // Serve static files
 app.use(express.static('public'));
 

← 56106db snapshot: 1 file(s) changed, ~1 modified  ·  back to New Items Dashboard  ·  feat: sort + density controls on wines & handbags grids 7d0b816 →