Skip to content

Latest commit

 

History

History
88 lines (66 loc) · 4.59 KB

File metadata and controls

88 lines (66 loc) · 4.59 KB

v0.8.0

  • Removed apps/
    • Apps are dead. It was a dumb idea. Just use normal emacs packages.
    • Code is moved out of lisp/apps/ to lisp/, so this might break existing setup if anyone is using Spookfox
  • Removed apps/spookfox-windows.el and apps/spookfox-org-tags.el
    • They weren’t doing anything, and I haven’t been able to allocate enough resources to spookfox to revamp them. I’ll reintroduce them when I can. No need to keep dead code around until then.
  • Removed nix stuff
    • It wasn’t doing much, was just setting up a dev environment. I have moved away from Nix since then, and I think this can be removed.
  • Add guix stuff
    • A guix package definition, which also doubles to setup development environment
    • A guix channel so I can install spookfox without having to use cumbersome (in my experience) tools like straight or elpaca
  • Remove parcel and typescript
    • Parcel is finicky, and don’t add much value for a web extension. I am tired of the complexity JS-ecosystem brings. In an attempt to minimize it, I am getting rid of things that aren’t absolutely necessary.

v0.7.0

  • Removed jscl and org-tabs apps
    • jscl: jscl appear to be dead or almost dead; I don’t want to build too much on top of it. The way it unconditionally add console logs on startup and all the hacks I had to do to include it in the addon don’t give confidence.

      I have decided to remove jscl from Spookfox. I hope nobody was using it.

      I still want to make Spookfox extensible with a lisp. I’ll probably add a scheme which has better support than jscl. Or compile ECL to wasm. Or guile-hoot is looking good too. But for now, no more jscl.

    • org-tabs: This was the original feature for which I created spookfox. I haven’t used it since forever though because it is also most clunky. It probably didn’t even work. Keeping tabs in sync with Emacs needs a lot of state-management. Which becomes an impossible task given that browser don’t provide any way to uniquely identify a tab. Things like tab IDs change b/w browser restarts, browser emits tons of events per tab which can pretty much freeze Emacs etc.

      I want to pivot this to a simpler “archive all tabs” “restore tabs from archive” feature. org-tabs were kept around for this. But I think it’s better to let them go and build from scratch when I get to implement the pivot.

  • Switch to tabs from all open browser windows

    spookfox-switch-tab now show tabs from all windows of browser, instead of just one.

v0.6.0

  • No more apps on elisp side.

    They were meant to be more, but haven’t grown. I deemed them a result of over-engineering, and have simplified installing/setting-up spookfox by removing them.

v0.5.0

  • Extended spookfox-js-injection-eval to run JS in user selected tabs. Inspired by #38

    spookfox-js-injection-eval now support 'tab context, and additional select-tab=p argument. select-tab-p is a lambda which receives each open browser tab from all connected spookfox clients (i.e all browser windows) as a plist of shape (:id :url :windowId :title). js is injected into each tab for which select-tab-p returns non-nil value, their results are collected, and returned to lisp in Emacs.

    E.g following code to run a script in all tabs which are visiting bitspook.in:

    (spookfox-js-injection-eval
     "console.log('Hello from Emacs'); 5 + 5;"
     'tab
     (lambda (tab)
       (s-contains-p "bitspook.in" (plist-get tab :url))))
    ;; => ((:tab (:id 35 :url "https://bitspook.in/projects/spookfox/" :title "Spookfox" :windowId 1) :result [10]))
        

v0.4.1

  • Fix behavior of spookfox-js-injection-eval-in-active-tab in response to #37

    This function is meant to run js in active tab in browser. Use case is “User switches from browser to Emacs, and want to quickly run some JS in browser. e.g when taking notes for a web page”. However this function wasn’t taking care of multiple browser-windows, and was running JS in active tab of all windows.

    This behavior is now changed. This function now runs js only in active tab of current window.