GithubHelp home page GithubHelp logo

internet4000 / find Goto Github PK

View Code? Open in Web Editor NEW
34.0 4.0 3.0 830 KB

URL & local first client side actions for the browser omnibox

Home Page: https://internet4000.github.io/find/

License: GNU General Public License v3.0

HTML 2.44% JavaScript 83.55% CSS 14.01%
cli url-builder omnibox unhosted bangs web-components router url-router search-actions find

find's Introduction

Find!

Find (I4kFind) is a privacy friendly, client side, local/URL first toolkit, to customize a web browser's URL Omnibox (the search/address bar).

There are more examples of usages, and development notes in the ./docs folder.

Remember, this is an experimental project, please make regular backups of your custom syntax, and "pin a package version that works" if you are running a custom instance. For full privacy, run a personal instance.

It does not need to be installed as a browser extension or addon, though the UX feels more fluid when used as "default search engine" (can be self hosted, but does not need to in order to be customized).

It does not make any search request itself, "just builds URLs" of specialized websites, to which is passed the user's "search query" (it could also be the value of URL parameters of any destination application).

Usage

On internet4000.github.io/find it is possible to make queries to Find, such as !docs usage which will redirect the browser page, to this document (to the link with #usage).

How it could be used:

  • as fallback when the browser does resolve a URL address
  • "normal web search" by default (and if no Find syntax is found), to the "default web search engine"
  • decide with which sites and application to share a search query, by "routing them" directly to a destination site
  • choose on which search engine to search, web search (default), map position (!m), contacts (!c), wikipedia (!w) new spreadhseet (+sheet), matrix link &mx @user:domain.tld, create a WebRTCPeer data channel to &rtcmx @user:domain.tld) etc. It is all built on open standard web technologies
  • DuckDuckGo also supports Bangs!, which will then be used if Find does not know a "search ! engine"; ex: !def find (will will delegate the to DDG, which knows what to do with !def)
  • save "user defined URLs" as engine(s) (a sort of "bookmark"), to be re-accessed from their "shortcode", !exhttps://example.org
  • "route" the user query (with arguments), to any website (application), by building its URL
  • build (custom) "destination URL" from patterns and placeholders https://example.org/my-app/{}/?query={} (no support for named placeholders yet)
  • URL utilility, build URIs, "data URL" (ex: data:text/html,<h1>Hello world</h1>), to copy/share/edit/store temporary data, in various formats
  • "pipe" outputs of other web-apps together, by their "(URL) outputs"
  • re-assign and customize the syntax, engines URLs and actions (under the exisiting symbols); so it is the "user's favorite applications/sites" that are used by default
  • synchronize between device(s) and browsers, without additional user account (export/import to JSON, save as "site credentials", in JSON, and optionally synchronize with the user/browser's password manager)
  • host a custom instance (with CI/CD or drag and drop), implemented in vanilla HTML/CSS/Javascript(web-components), with no dependency and no build-system (could be implemented with wasm or other tools)
  • define a new custom/local/browser-based "open search" engine
  • "locally self hosted", with the web interface (git clone, npm i && npm run serve, open https://localhost?q=%s, should be discoverable as browser "open search engine"; and could use a different "suggestion API"; or under VPN, such as a Tailscale tailnet, for all devices to share)
  • (experiemental) get typing suggestions from a client side API (web-worker following the OpenSearchDescription suggestion specification, catching "fetch queries" made to its own domain (window.location/api/suggestions/))
  • (experiemental) "proxy/polyfill URISchemeProtocol <protocol><:><//><ressource>, to support a fallback when user requests gopher://gopher.floodgap.com, gemini://kennedy.gemi.dev, finger://, text:// etc.
  • as an accessible starting template to experiment with what can the browser URL can be used for, and how to interpret and execute queries, manage user defined data, syntax, functions
  • an open "finder/Alfred/CLI" for the web; can be used to suggest custom prefilled links and utilities (ex: community projects +issue or +chat)
  • embeded in an other app/site (ex: matrix.org iframe widget)
  • test/explore/save other aplication(s) "URL params", connect them together, transform their output(s)
  • explore new URI schemes and string data de/encoding patterns
  • customize a user browser's starting page, default new tab, homepage, HTML input and text string encoding/decoding/evaluation

For additional usages see the documentation folder.

How

Find is opened by the browser, as a search engine, with the query typed by the user in their web-browser's URL bar (or from a query inside a <i4k-find-search/> web-component, or a call to Find.find("my query") etc.).

From the query, it will try to look for "the pattern it knows", to see it the user typed a Find query, if there are none, it will default to seaching, like a usual web-search, to the user's default search engine (to be defined by the user)

Help

For community chat and support, see the #i4k-find:matrix.org room, or the git issues, as you see fit. Feedback, bug reports, engine/symbol/feature requests, suggestions welcome.

For new URL patterns, syntax and engine suggestions >i4kfpm <queyr> for searching github repo with topics: "i4k-find+package

Install

It is possible to use Find with

  • the default find instance website
  • a personal find instance website (can customize more)

As a browser search engine

In general, the UX should feel nicer when any instance is defined as the default web browser's search engine. Otherwise it is also possible to use a browser search engine keyword (still need to install a Find instance as a search engine in the browser, but no need to defined as the default one, as long as it has a keyword, which has to be prefixed to every find query).

As a npm package

  1. use the npm package i4k-find.
  2. check the ./index.html file for how to import the package and the GUI.
  3. customize the assets/opensearch.xml file for the new instance URL and information

It should be also available through a CDN: !cdn i4k-find to import.

About

The URL bar of web-browsers is used to write text, websites adresses and search queries. Find is a tool that offers a user the possibility to customize the functionalities of any (device) web-browser's URL Address Bar (aka the omnibox).

It is similar (and a lighweight, self-hostable, customizable, free software alternatieve) to DuckDuckGo bangs, and runs only in the user browser.

The code is javascript running client side, and can be customized with new search engines, synchronised across devices using the native browser's password manager (treating the user search engines custom configuration as a passwrod for the instance of find you're using).

It aims to be a lightweight way to enhance the URL bar, the URI building user-experience, accesible to use and install on personal instance(s).

It is Free software that can be customized and hosted quickly at your convenience.

The fastest way to try its features, is by testing it with the example queries on this page: try Find! here.

If you want to have the best experience, try it as your web browser's default search engine; so all the features are accesible directly in your URL bar (tip: focus the omnibox with the keyboard shortcut Control + l, the keys Control and the lowercase letter L, aka C-l ).

Examples

By default, a Find search query, goes to the default search engine (!d) in our case, duckduckgo, and it is possible to re-assign the "default search engine's value".

Here are example usage of user queries, one can type in an input supporting Find queries (such as the one on the homepage). A Find search input will try to suggest the available symbols (!&+#) and their associated engines.

In the examples, lines prefixed with ;; are comments, with ;;→ outputs URL or Find queries.

Example search with ! symbol:

;; "default search", without anything "Find related"
Hello world
;;→ https://duckduckgo.com/?q=hello+world

;; A "map" search, defaults to google map (can be re-assigned to open street map etc.)
!m egypt
;;→ https://www.google.com/maps/search/egypt

Example build with & symbol:

;; go to, or buid a github profile/actor url
&gh
;;→ https://github.com

&gh internet4000
;;→ https://github.com/internet4000

&gh internet4000 find
... and more (all customizable)

;; to build a "matrix link to room/user" URL
&mx #i4k-find:matrix.org
;;→ https://matrix.to/#/%23i4k-find%3Amatrix.org

Example do with + symbol:

Type any of these in a Find search input, or in your browser URL bar (if Find is one of your browser search engine).

;; create a new google spreadsheet (with a title)
+sheet my new sheet

;; draw a new "google draw"
+draw hello world

;; take a note
+note My note content

;; create temporary "URL space" with text/|data
+space my data

;; create a "data json url" value
;; can be copied again to a new URL, stored as bookmark etc.
+data-json {"my-json": true}

Example command with the # symbol prefix (functions cannot currently be user defined, only the other exisiting symbols):

;; to "save" an engine as a new "user defined engine" (userEngines)
#add ! ex https://example.org/
;;→ will save this URL, can be called as !ex

;; to add a new engine, with URL placeholders
#add ! ex https://example.org/blog/{}
;;→ will save this URL, can be called as !ex <blog-article-id>

;; to add a new "buid" engine, with URL placeholders
#add & ghi https://github.com/internet4000/{}
;;→ will save this URL, can be called as &ghi find (to reach the project)

Why

Some reasons why this project exists:

  • gain (self) control of where search queries go after leaving the web-browser.
  • to reflect on where all browser search queries and actions go (and their ammount)
  • experiement with what can be done from typing into any browser's URL (is the current cursor in a URL bar, a text search input, a REPL, a notebook? Or it is just me typing on the keyboard?)
  • experiment with maybe storing URL as bookmarks more easily; "local first/only" database explorations of "my own content" (could also optin keep track of searches, to re-use and edit, as .bash_history etc.)
  • try to handle "not just search" (alternative URL client entry point to DDG or Searx)
  • explore using the different URI/URL(s) outputed by the "user/Find search queries", by the output(s) of the "web-app/sites" they serve, and what the user is intending to do
  • share practical and nice URL(s) (+wr and +wri for serendipity, placeholders)
  • interacting with computing interface(s) (url, shell, repl, notes, chats, links) and other actors

Some reasons why DuckDuckGo is the default search engine:

  • it supports ! bangs (13,563+ bangs! search engines)
  • it seems more privacy friendly that the rest (that support bangs; are there any other?)
  • SearX instances have bangs suppport; maybe users can decide for themselves which one to use. (ref: issue#96)

Cons for DDG:

  • seems to "re-writte" the search results when you visit the search result page, again, after visiting a first result's page

License

The code of this software uses the GNU General Public License v3, which makes it Free software (see /license.txt).

find's People

Contributors

4www avatar hellerve avatar hugurp avatar jfalxa avatar oskarrough avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

find's Issues

!w!imdb to open both urls

It could be nice is some situations, when you want to find on multiple engines, to be able to search them in one query.

Something like that !w!imdb spiderman to open on both wikipedia and imdb (this one is not in the default's engines).

  • Is it useful?
  • Can the query be better designed?
  • what about site you search many times? !w!imdb!netflix!itunes?
    #add !movies {!w!imdb!netflix!itunes}?

Add possibility of new "action" types

Right now it is possible to use !.

This prefix will complete a search (a "find") on the requested sites.

I propose to experiment with new prefix symbols, such as +, or ? (if they make sense).

+k a note could for example open the Google Keep page with a new note prefilled with a note.

Are there any sites working with such funcitonnality? I'd like that for +r4 $youtubeUrl.

Second level of action: `!gmail !u1`

In theory it is possible to build a more complex query for querying a particular search engine

As an illustration, let's say gmail example, where !gmail hello searches gmail for hello.

The url pattern of gmail, when there are multiple users are logged in gmail at the root url is https://mail.google.com/mail/u/0/#inbox, where in mail/u/0/#inbox:

  • mail is a root prefix that does not seem to change across the mail app
  • u is a prefix for saying there are multiple user accounts that are used on this browser and terminal (maybe, see next point)
  • 0 is the local id of the stored user (probably in local storage etc). If you open your second inbox you'll see that number becoming 1
  • #inbox is some sort of query param that is bound to the search input, but not just to simple search, to a more advanced boolean search in:inbox, or is:draft for #draft

This seems to be very similar on Google Drive too.

Therefore we can imagine a find queries such as:

The only new thing in these examples, is the second level of bang !, which would be the thing that has to be investigated and defined in feature design.

list engines + user customization (of engines) in a new application

We could keep vanilla javascript for the part that are executed for each query (lighter file size), but use a JS framework (because working with DOM) for an application that could be used by the end user to customize which are the search engine in their list — and how to backup and "synchronise" their customization between different devices and browsers.

Remember that the objectives of this project are:

  1. never setup search engines preferences again
  2. get a better url bar actions (not only search), without coding a browser extension
  3. possibility to self host this software easily as it is just front-end, so anyone can host their instance and be more in control of their privacy (you odn't get track for each request you do) and the customization of their software

Details

Right now the site consists of one index.html page and a vanilla main.js file.
In a new folder customization, we could have the same setup for a new index.html page, and it would be used to make the user customization application.

This way there will be a separation between the engine and the customization, which don't have the same requirements in term of weight.

Store user customization (actions) in local storage, then in distributed storage

First, allow a user to customize the dictionnary of available actions.

Then store their customization in local storage.

Problem will emmerge, what if the user clears its cache? Or just wants its customization on an other device?

That means somehow it needs to synced.

The best way to me, is to make that data anonymous, and public, so it can have a unique URL, modifiable by the user only.

One of these two options would be could to try.

https://www.datprotocol.com/
https://remotestorage.io/

Then a user would get:

  • some unique url they can use to sync the data on a new device.
  • the possibility to authorize new devices to edit that data
  • the possibility to clone any public data, and start editting the clone. So if you lose you authorization you can from a url retrieve your old public data, and start editing the clone.

like `Find.find(query)` explore `Find.unfind(URI)`, to "decode" a URL into a "Find syntax"

It could be interesting to see if from a URL it is possible to look for matching symbol and engines.

That way for example a <a href="https://github.com/internet4000/find"/> could be parsed, and:

  • could result in &gh internet4000 find
  • could be used to add a title="" with the find query value, as "usage example"
  • a utility to convert list of links (by new lines, like the queries in the node script), to a list of "equivalent" find queries
  • as a "translator" to input a URL/URI and get possible "find representation" to get the same resulting URL

For example, in the case of https://github.com/internet4000/find and pseudo code:

const my_url = "https://github.com/internet4000/find"
const result = Find.unfind(my_url)
console.log(unfind)
{
  input: "https://github.com/internet4000/find",
  matches: [
   {
      exact: true,
      output: "https://github.com/internet4000/find",
      query: "&ghi4k find"
    },
    {
      exact: true,
      output: "https://github.com/internet4000/find",
      query: "&gh internet4000 find"
    },
   {
      exact: false,
      output: "https://github.com/internet4000/find/issues",
      query: "*ghi_i4_find" // could be `*` a bookmark symbol, like firefox
    },
    [...]
  ]
}

Could test matching symbol.engines URLs from the domain, and their path, and figure if there are matching symbols to build such a resulting URL.

If there are domains matching, find from the "placeholder patterns" how to split the query and fit that in a URL, and compare to the originally requested result (and maybe stop if a few are exact match, or so that it feels like typing suggestions)

move `window.open` (or `window`) out of find

  • so find does not open itself the window, but the app requesting it does
  • so a resulting find query also advices for an action to take, usually open, but there is display, exec already defined etc.
  • so browser/node.js have better compatibility (tests and cli usages)
  • so find does not need an init, but the context can call it and feed it with a search from a query param it does not know about?
  • so find "needs" nothing from its context, but can gather, and be fed, information

github pages action has the wrong URL on instances (test deployment recipies)

In the case of the fork https://github.com/4www/find

and its deployment page https://4www.github.io/find/

the view-source:https://4www.github.io/find//assets/opensearch.xml has incorrect values, and point to the internet4000.github.io/find instance

the workflow job https://github.com/internet4000/find/blob/main/.github/workflows/static.yml#L26-L27

is called to generate the XML (for each deploy) in this script https://github.com/4www/find/blob/main/src/scripts/opensearch-xml.js#L46

and uses I4K_FIND_URL from the env vars.

It should be customized manually in github UI, by should be used with a value provided by github actions runners https://github.com/internet4000/find/blob/main/.github/workflows/static.yml#L28-L29

Not sure why it does not pick it.

  • generally, try each deployment recipe, and see Find works correctly (generating the files etc.) for each of them, without the need of any user configuration

update !d from DDG to searx(ng); decide for instance (support !bangs)

since https://en.wikipedia.org/wiki/Searx supports bangs https://searxng.no-logs.com/info/en/search-syntax (! only)

we could move from DDG as default search engine to, maybe add one more layer of privacy?

https://searx.space/ lists public instances of searx, but it is hard to find an obvious choice to go for.

https://no-logs.com/:

- All analytics and nginx and user logs disabled.
- Up since 2023.
- Server located in 🇸🇪 Sweden.

Alternative could be to register a "few of them somehow", and "alternate between instances" for each search; a bit like a random round robin to distribute searches across searx instances (if that helps not sharing all searches in the same basket).

find symbols and protocols

now that, in the I4kFindSymbols, !&+# have the same level, and function (it seems) as the new "protocol symbols" (they all end up by a :, as the new URL(window.location).protocol has), gopher:, git:, finger: etc.

  • how should they handle a "Find query"? new URL(<protocol_scheme_other_than_http>) might not give detail on the URI parsing
  • by default we're in a web browser (first used case), and trying to resolve the user request, even though the browser does not support this (but some remote/local web-URL might be able to proxy them for us, if we build the proxy_app + protocol path correctly)
gemini:hello world
gemini: hello world
gemini:      hello world
gemini:!d hello world
gemini:!m tokyo
gemini:+capsule hello world
gemini:&network username capsule-id
gemini://my-gemini-capsule.example.org/some/path

Or more generally (pseudo https://en.wikipedia.org/wiki/Web_Ontology_Language)

other-protocol://<scheme>
other-protocol:[<;symbol><;engine>]%20[query]

https only check

Make a check in the script that prevents it to run on non https connections.

It is one check more for every request, but it seems important to prevent anyone to use it on non https connections.

Does this make sense? @hellerve ?

"community" engines and knowledge

additionally to the wide internet, community chat, repo issues, it would be interesting to allow some sort of distribution of the information on "how people use find"; which engines, cool URLs, new symbols etc.

would be nice somehow to be able to use something similar to https://github.com/internet4000/4000.network, maybe finding within "forks of Find", and get a list of custom engines shared by a user/instance/actor

It could also relate to "how Find is -customly- instanciated", for example from a /.env.json file served by the find instance (to feed it with initial data) etc.

Broken search when special characters in search query: #, +

This search test #3232323 does not take in consideration all the part from the # and on.

Example searches:

  • 1 + 2 : this should just default to duck duck go and it would say that it equals 3, but right now the + sign is stripped out from the search query

Experiment with IPFS and dat:// (decentralized storage from URL queries)

same goes for dat:// https://docs.dat.foundation/docs/intro

Not sure if the crypto thing makes it still interesting, but the decentralized idea behing IPFS decentralized storage had interest.

They have storage service thing that support HTTP api calls (POST; to store data, GET, to get a stored CID).

We added basic support for ipfs: scheme protocol, and the &ipfs <CID> build pattern could maybe explore:

+ipfs <URL_or_data>
>ipfs <CID>
+ipfs <DATA> | >ipfs <$1> | +qr-code

experiment with engine suggestions (like an autocomplete's)

It is possible from the open search documentation to have suggestions from a search engine.

Therefore it is possible to have some sort of general suggestions from Find, directly in the URL bar.

In several ways:

  • one for existing engines, when the URL bar is focused and its search content empty
! — search engines
+ — action engines
& — test engines
  • one for when a symbol is selected, so it lists all available engines from what is typed:
!g # search
-> !gh github # theoritical search result
  • one for when an engine is selected, exists, a query is typed and an open search / api specification to get results exists
!g internet4000
-> internet4000 (organisation)
-> internet4000/find (repo)
-> internet4000/radio4000 (repo)
-> ...

Also with other symbols than search, API could be used to provide search results:

Provided that `#add & ghi https://github.com/internet4000/{}``

&ghi ra # search
-> radio4000
-> radio4000-api
-> radio4000-sdk
-> radio4000-player
-> ...

I am not sure such thing can work, but it would be interesting to experiment.

new custom instances of find, initial configuration

it would be nice to have a simple mechanism to make a custon config for a Find instance, to feed it with initial data (engines, symbols etc.).

Currently, Find as default browser search engine, should load only the /src/index.js file, because CSS and interface in JS are not needed, the user is "passing by" to its final URL destination. The browser has probably already cached all static assets, but we don't want to make a fetch() query every time the find pages load.

Therefore, the configuration of a custom instance should be "load(able/ed) by the user", without slowing "transient find executions" (also Find has no build pipeline).

Refs:

Firefox changes default search url from self-host instance of i4k to the find.internet4000.com site

I host my own i4k instance and when i add it to firefox as the default search engine it works correctly for some time, but eventually always changes from my own instance to the https://find.internet4000.com/ website and to fix it i need to delete the search engine from firefox and re-add it, but is just a matter of time until it changes again to https://find.internet4000.com/
funnily enough firefox for android doesnt seem to have this issue, is there any way to avoid this bug?

consider replacing `#` commands with "dedicated micro web app(s)"

currently there are Find # commands, such as:

  • #add <symbol> <engine> <url> and #del <symbol> <engine>
  • #import <json_string> and #export to JSON
  • #help half working help, making a query to find with the user; used as example

All these functions, are provided with the Find instance as first argument, and the user query (without the command) as second arg.

These commands are defined under the # symbol, and instead of being under the key .engines like other symbols, these commands/functions are defined under the .fns key of the js symbol map.

It is practical as a semantic to demonstrate the separation of meaning, and "execution type", between symbols.

Maybe these functions, could be replaced, by an other already existing symbol, for example:

+find-add-engine-for-symbol <symbol> <engine> <url>
+find-add <symbol> <engine> <url>
+fadd <s> <e> <u> (a sym)
;; or any semantic; ++add could work too (symbol + engine +add )

This could build the URL(s), for destination of the "internal Find client", with a different query param: f for find, s for settings, or with a different "user query value than the initial"; i4k-find:// for find "URI building scheme", or i4k-find: to match protocol syntax.

https://example.org/find-instance/#f=<web-component-call-to-find>
https://example.org/find-instance/#q=i4k-find:[,//]<command>/<query_with_spaces>/
https://example.org/find-instance/#q=i4k-find:<command>?<query_uri_encoded>:<command>?<query>:

There are interesting examples https://en.wikipedia.org/wiki/List_of_URI_schemes om how to make "list of ressources", contact, notes, tags, fm, dns, etc. with various patterns, maybe to nest and chain queries/commands.

That way the functions/commands could be moved together with the rest and follow the classic engine(s) behavior (or opening a new URL with the user query into the URL patterns, and let the app handle how to interpret what to do with it)

Add remote storage to store and synchronise custom engines accross devices

Can start from here https://remotestoragejs.readthedocs.io/

The idea is to synchronize everything between devices, in either Google drive, Dropbox or remote-storage-providers (5apps for example).

So with remote-storage each change are saved by default to localStorage, we need to be sure that it is saved to the i4kfind key which is used by find and find-settings.
Then if the user is logged in it will be saved to its provider of choice.

missing Find symbol/engines/"output web apps" list

In the case of a user starting to type in their omnibox, and wanting to "complete an action", such as ex:

  • would like to convert a/this file in an other fomat
  • would like to CRUDSearch information somewhere,
  • generally accessing a web app, and maybe getting a "url pipeable output"
  • etc.

some pattern of missing engines, symbols and semantics emerge, can try to list them until we find an app that provides the desired functionalities.

Maybe can also be discussed on:

add placeholder into engines URL

Currently, the search engine URLs are just used as is.

I think, like browser do, we could use a place holder %s to be replaced with the search query.

Mobile app

Of course a mobile app should be avoided! No reason to maintain that.

But, is it the only solution to have access to !Find from the home screen of a android phone?

What about that on the image?

find android widget

Add user customizable symbols

Because, why not, it is a fun feature to play and experiment with as a end user.

Currently having fun defining engines under symbol &, but more and more it feels like this hashtag is not called test test because what is autofilling url.

Explore support for `|` pipe "operator"

Since find() will transform a user query from "find syntax" to a URI, it would be possible not the user does not want to "just open this URL" for a search or accessing a ressource, but to give this result to an other url, or again to find (also if the find result is not a URL, but a find query it self).

<symbol><engine>%20<query>
!m tokyo hotel

<symbol_N><engine_N>%20<query_N> | <symbol_N+1><engine_N+1>%20<query_N+1>

Could also explore the . "meta symbol prefix", if that works, or parenthesis followed by a symbol etc.

.>jsonapi<query>.+space<to html web components>.+qrcode<with content>
.>jsonapi(query).+space(to html web components).+qrcode(with content)

URL placeholders handling, and find pattern syntaxes

To improve URL placeholders.

Used in:

  • find query, replace query in URL placeholder
  • i4k-find-info replace placeholders with highlighting

Ideas;

  • named placeholders
  • "placeholder pattern language" like w3c OWL, to describe the URL and what it can accept (and interpret more the user query, or give it a syntax to accept "named arguments somehow", maybe by combining multiple queries
  • https://api.github.com/search/repositories?q=fork:true+topic:i4k-find+topic:package+ has already placeholder in the URL, made for humans, but could be used to gather info
  • filling placeholders during suggestions
  • placeholder data types, could be stored with the pattern
  • i4k-find://<info>/<url> when info could be describing the URL and expected output (from the app, its actions and accessible/forwarded data)

mobile: does not work at all

On mobile it does not work at all.

The latest 1.0.1 release has been made to allow the possibility to add the search engine on mobile.

Reproduce

In fact, on Chrome (android) it is not possible to add a custom search engine, Alphablet decides to make Google by default, and a selection of few that pay to be listed in the possible.

On firefox (android), to add a new search engine, you will need to find the input element on the search engine index.html page, right click (long click) it, and add to search engine.

Then you will have to go to settings/search and make Find your default search engine by long click on it.

Expected behavior

When Find is the default search engine on Firefox (because only this one can work), we want to be able to write a "find query" in Firefox's omnibox (url bar), such as !m brazil.

Right now, it just opens https://find.internet4000.com, where it should open https://find.internet4000.com/q=!m+brazil (q=!m brazil), and then the javascript script will execute App.init() which:

Todo

Absolutely no idea why it behaves like this, will have to investigate.

  • find out how to debug firefox mobile
  • fix behavior so an actual url opens (we should not see the find.internet4000.com page)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.