 (defn fetch-repo-repl-options []
   (first (keep parse-known-repl-opts (read-all-ns-forms "cljs.repl" :compiler))))
 
+(def ignored-repo-options
+  {:compiler
+   #{:ups-externs       ; this is implicitly computed from upstream deps (user input ignored)
+     :ups-foreign-libs  ; this is implicitly computed from upstream deps (user input ignored)
+     :ups-libs          ; this is implicitly computed from upstream deps (user input ignored)
+     :source-map-inline ; only applies to repl
+     :emit-constants}    ; this is implicitly computed from optimize-constants (user input ignored)
+   :repl
+   #{:watch-fn}}) ; already in compiler options
+
 (defn fetch-repo-options []
   (with-version! (last @published-cljs-tags)
     {:compiler (fetch-repo-compiler-options)
      :repl (fetch-repo-repl-options)}))
 
-;; TODO: track ignored compiler/repl options (for each source?)
-
 (defn notify-new-options-from-site []
   (let [{:keys [compiler repl]} (fetch-site-options)
-        new-compiler (apply disj compiler (keys compiler-options))
-        new-repl (apply disj repl (keys repl-options))]
+        new-compiler (difference compiler
+                       (set (keys compiler-options))
+                       (:compiler ignored-site-options))
+        new-repl (difference repl
+                   (set (keys repl-options))
+                   (:repl ignored-site-options))]
     (when (seq new-compiler)
       (println "\nNew Compiler Options (via site):\n")
       (doseq [opt (sort new-compiler)]

   :rewrite-polyfills {:added "1.9.562"}
   :source-map {:added "0.0-1798"}
   :source-map-asset-path {:added "1.9.90"}
   ; :source-map-inline {:added "0.0-2911"} ; this is listed in known-opts, but only applies to repl
   :source-map-path {:added "0.0-2060"}
   :source-map-timestamp {:added "0.0-2505"}
   :static-fns {:added "0.0-1424"}
   :target {:added "0.0-971"}
   ; :ups-externs {:added "0.0-993"}      ; this is implicitly computed from upstream deps (user input ignored)
   ; :ups-foreign-libs {:added "0.0-993"} ; this is implicitly computed from upstream deps (user input ignored)
   ; :ups-libs {:added "0.0-993"}         ; this is implicitly computed from upstream deps (user input ignored)
   :use-only-custom-externs {:added "0.0-971"}
   :verbose {:added "0.0-971"}
   :warning-handlers {:added "1.7.10"}


(defn notify-new-options-from-repo []
  (let [{:keys [compiler repl]} (fetch-repo-options)
        new-compiler (difference compiler
                       (set (keys compiler-options))
                       (:compiler ignored-repo-options))
        new-repl (difference repl
                   (set (keys repl-options))
                   (:repl ignored-repo-options))]
    (when (seq new-compiler)
      (println "\nNew Compiler Options (via repo var):\n")
      (doseq [opt (sort new-compiler)]
