~severeoverfl0w

https://dominic.io

Trackers

~severeoverfl0w/wedge

Last active 2 months ago

~severeoverfl0w/public-todo

Last active 5 months ago

#494 sort lost after opening message using maildir a day ago

Ticket created by ~severeoverfl0w on ~sircmpwn/aerc2

If I, e.g. :sort date and then open a message, upon returning the sort has been returned to the default (:sort -r date I think).

#488 add indicator /disable :sort if imap can't sort server side 7 days ago

Comment by ~severeoverfl0w on ~sircmpwn/aerc2

Gmail? Sort is not supported on gmail.

Yeah, I'm using gmail.

#488 add indicator /disable :sort if imap can't sort server side 8 days ago

Ticket created by ~severeoverfl0w on ~sircmpwn/aerc2

Using :sort -r date doesn't seem to update the UI at all but does say "Sorting complete".

This happens when the remote server doesn't support the extension. We need to disable :sort in that case instead of just ignoring it when explicitly sorting.

#30 Separate config from system API 2 months ago

Comment by ~severeoverfl0w on ~severeoverfl0w/wedge

This is a great example of integration woes. It stems from the framework nature of Wedge (this isn't a problem when you're putting the pieces together yourself).

With the combined integrant-aero namespace there was a clear responsibility for integrating the two parts. When you make these separate, even were you to build some auto-combination-functionality, where would you document it? This moves clearly into occult rather than an explicit, clear process.

Stepping back a little bit, the problem is that the config cannot be read in a bubble. To read the config, you must know the system. So there's an inherent coupling there. That's not always true though, environ doesn't have this problem until the transform phase (which is inherently coupled to the system, it's glue!). There's a parallel with read-eval. While they're decoupled, you sometimes need to configure read using data_readers.cljc in order to actually read something such that it can be evaluated.

Options:

  • Retain the combined config-system step
  • Add mechanism to wedge which can detect combined pairs and execute code
  • Add plugins to Wedge which would be explicitly loaded: {:system integrant :config aero :plugin [integrant-aero]}
  • Don't support aero, only support configs which can be read without additional context
  • Systems provide a function for loading them for a given config system.
  • Configs dynamically load any extensions based on what's on the classpath (rather than what's actually in use)
  • Systems dynamically load any config extensions based on what's on the classpath :)

Going back to the problem statements that drove this:

  • There are use-cases for pulling from the config that aren't systems, but we'd still like to derive everything from config
    • reading a figwheel build rather than starting it as part of your system (required for clip).
  • There's high friction to adding new system or config libraries as the work is M×N rather than M+N.

Constraints:

  • Clear documentation - when this is activated, what's it activated by
  • Forked system or config support
  • Allow adding new integrations to existing configs or systems that Wedge has never heard of (e.g. adding fern support to Wedge's integrant or integrant support to Wedge's aero)

#30 Separate config from system API 2 months ago

Comment by ~severeoverfl0w on ~severeoverfl0w/wedge

One minor problem with this is tight integration between config/system, e.g.

(defmethod aero/reader 'ig/ref [_ _ value]
  (ig/ref value))

(defmethod aero/reader 'ig/refset [_ _ value]
  (ig/refset value))

One option is for known combinations to be loadable in some way that would allow for this tight integration to remain.

#30 Separate config from system API 2 months ago

Comment by ~severeoverfl0w on ~severeoverfl0w/wedge

Instead of (config-system) I think we can define the pipeline as (-> config transform-config system). The place funny business happens is in "transform-config".

transform-config is variable dependent on the use-case. The transformation for starting a system is distinct from the transformation applied when finding your Figwheel build.

transform-config will be called with the config only, meaning no opts are available. This will allow maximal use of plain functions. Perhaps an transform-opts option may be read in somewhere and if present be provided as a second arg, tbd.

#31 Automatically remove gitlibs from refresh dirs 3 months ago

on ~severeoverfl0w/wedge

REPORTED RESOLVED IMPLEMENTED

#31 Automatically remove gitlibs from refresh dirs 3 months ago

Ticket created by ~severeoverfl0w on ~severeoverfl0w/wedge

#25 Make `stop` optional 3 months ago

Comment by ~severeoverfl0w on ~severeoverfl0w/wedge

Perhaps a function is needed to allow defining your own behavior for a missing function, e.g. (when-let [stop (wedge.system/fn 'stop)] (stop …)).

#30 Separate config from system API 3 months ago

beta added by ~severeoverfl0w on ~severeoverfl0w/wedge