A utility application to capture and review search results from Swift Package Index.

Related tags

Layout swiftui
Overview

SPISearch

An app (macOS & iOS) to explore the search results from Swift Package Index.

Testflight Links:

Search Ranking

I ran into an issue with the search mechanisms in Swift Package Index. This app is a means of invoking searches against the production instance of Swift Package Index, and in the future a local instance, in order to compare and rate the search results for different implementations.

The core question that this tooling is meant to help answer is "Are these search results better". Ranking search results is an inherently subjective measure, with a human needing to provide feedback to know "Is the search result relevant".

In the bug I opened, Dave provided me with a number of potential searches to use as a baseline, and I wanted to be able to query them easily and get a comparison, as well as have a quick little tool that would make it easier to capture what someone thought of as relevant. That's what this app is about.

The provided test queries:

Using the App

This utility app is a document-based app, which unfortunately makes understanding what it is, and does, quite obtuse - as it starts with a document browser and no explanation or detail. To start, make a new document - and with any empty new document, the app presents a text field for query terms. Update the terms to your liking, hit return (or the search button), and a new document will be created with the search results.

Once the search results are stored, you can see any sets of stored search results, store another set of search results for the same query, and add relevance review details to the results.

The primary goal of this utility app is to have a single set of query terms, and to capture one or more sets of search results, add relevancy rankings to them - to be be able to compare those to saved or future searches.

Document Format

The app uses a Codable data model, so the end results stored from the document as straight JSON that can be opened and read by any text editor, or processed conveniently using tools such as jq.

Contributing

Pull requests and contributions are welcome. Please be considerate. I'm tracking my development plans (and progress) for this app with GitHub Issues, and progress with on an SPISearch project board. All submissions to the project are accepted under the MIT license. If you don't agree with this licensing of your submission, please don't make a pull request.

The current code has some internal documentation, viewed within Xcode, by invoking Product > Build Documentation.

Comments
  • progress indicator while enabling ranking progress is indeterminate w/ iOS 15.5 and earlier

    progress indicator while enabling ranking progress is indeterminate w/ iOS 15.5 and earlier

    version 1.0 (5) - iOS 15.5

    Spotted during usage and testing, the progress indicator is crap for iOS 15 - looks fine for iOS 16, but kind of useless prior, so probably should just "make it go away" for the earlier versions, or replace it with a custom view if it's super interesting to see.

    bug 
    opened by heckj 0
  • (macOS only) CLI option to print search metrics

    (macOS only) CLI option to print search metrics

    Add some CLI options to allow the macOS version of the app to open a specified file, read the details, and print the search metrics (if available) for the rankings stored on those files.

    enhancement 
    opened by heckj 0
  • show ranking within search results

    show ranking within search results

    • [x] make a picker view in the StoredSearchResultView to allow you to select between a "combined average" of the rankings and any single specific ranking for the display of the metrics.
    • [x] add visual indicator of ranking on the side
    enhancement 
    opened by heckj 0
  • Navigation updates to make this more usable

    Navigation updates to make this more usable

    • [x] get rid of the tabView navigation
    • [x] replace the tab that takes you to an editing view with stack navigation that takes you to an editor (if you match the reviewer) or viewer (if you don't match). That way you can at least SEE the other rankings, even if you can't edit them.
    • [x] In the overview, merge the Relevancy Rankings and Stored Searches into a single list, so we don't have lists fighting and breaking up the vertical space.
    • [x] In the ranking editor view, merge the keywords and search result ranking lists, again so we don't have lists fighting and breaking up the vertical space.
    bug enhancement 
    opened by heckj 0
  • stack nav for iOS/iPadOS

    stack nav for iOS/iPadOS

    After using the alpha app on iOS and iPadOS a bit, it's clear that I don't get a choice about being embedded within a NavigationView when I'm using a DocumentGroup style app. So any view implementation on those devices needs to account for the top-space consumption. Additionally, on iOS there's just insufficient vertical space to make any meaningful progress on viewing a stored search or ranking a search that's been stored.

    It's clear that I need to just bite the bullet and engage NavigationView (aka StackNavigation in future iOS versions) and deal with the navigation as expected.

    bug 
    opened by heckj 0
  • SPI update includes count in Keywords

    SPI update includes count in Keywords

    While working on https://github.com/heckj/SPISearch/pull/14, I found that SPI had updated it's layout, now including a count along with the keywords - and the HTML/soup parser I'm using is appending the counts onto the keywords. At best it should capture that information separately, but just capturing the keyword itself is far more useful for a proper relevancy review so that keywords match the one exposed in the packages.

    bug 
    opened by heckj 0
  • enable CI

    enable CI

    currently there's an iOS CI PR (#1) - but Github Actions macOS CI is lagging in Xcode and macOS OS 12.4 support, at least last I looked. Ideally there'd be a matrix of iOS and macOS build and test verification.

    Alternately, I could try out the Xcode cloud setup

    opened by heckj 0
  • add utility to strip localhost results from search rank file

    add utility to strip localhost results from search rank file

    expand the, or potentially add another, CLI tool with an additional command:

    • stripping (the last)|(all) localhost stored searches from a .searchrank file

    Turns out manually iterating through all the various pieces to see how it was doing was kind of a pain, and a CLI tool to do that would be SO much nicer.

    It may well be that I'd like to re-capture for all local searches as well - so not just "get rid of", but also "add one for this search", just to make the iterative development a bit easier.

    enhancement 
    opened by heckj 0
  • active collaboration experiment

    active collaboration experiment

    The rankings setup is specifically oriented towards active collaboration, and would make a great fit for https://developer.apple.com/documentation/sharedwithyou/. Any edition of this editor that supports that capability would, however, be constrained to iOS 16+ or macOS 13+.

    Notably, no SwiftUI support - so this would be an IOS only feature/capability it seems...

    enhancement 
    opened by heckj 0
Owner
Joseph Heck
Joseph Heck
A Swift utility to make updating table views/collection views trivially easy and reliable.

ArrayDiff An efficient Swift utility to compute the difference between two arrays. Get the removedIndexes and insertedIndexes and pass them directly a

Adlai Holler 100 Jun 5, 2022
A AutoLayout Utility for iOS

QLayout is an Utility to make Auto Layout easy on iOS. Contents Requirements Installation Usage Credits License Requirements iOS 8.0+ Swift 3.0+ Insta

Jose Quintero 3 Nov 14, 2021
This "Calculator" application is a simple one screen design of calculator screen i have made this single screen design application just to practice AutoLayout concepts.

Calculator Layout This "Calculator" application is a simple one screen design of calculator screen i have made this single screen design application j

Chetan Parate 1 Oct 29, 2021
SwiftUI package to present a Bottom Sheet interactable view with the desired Detents. Also known as Half sheet.

BottomSheetSUI BottomSheetSUI is a package that gives you the ability to show a Bottom sheet intractable, where you can add your own SwiftUI view. You

Aitor Pagán 8 Nov 28, 2022
An open source package for as-you-type formatting in SwiftUI.

DiffableTextViews An open source package for as-you-type formatting in SwiftUI. Features Feature Description ⌨️ Responsive Formats text as you type ??

Oscar Byström Ericsson 46 Dec 5, 2022
Breezz: an application with which it is easy and simple to practice breathing exercises and meditation

breezz will help you relax Breezz is an application with which it is easy and si

dumojo 1 Jan 18, 2022
An IOS/IPad OS application that demonstrates various capabilities and functions of ARKit and RealityKit.

Augmented Reality Development Demos based on ARKit and RealityKit Summary This repository contains an IOS application that shows the capability of App

yukun 2 Oct 30, 2022
This is a simple chat application made in Swift using send and receive interface.

Flash Chat ????‍♂️ Overview This is a simple chat application made in Swift using send and receive interface. ⚙️ How it works The user needs to first

Sougato Roy 2 Aug 4, 2022
A simple game application using SpriteKit, physics, blend modes, radians and CGFloat

Pachinko A simple game application using SpriteKit, physics, blend modes, radian

NIKOLAY NIKITIN 1 Oct 20, 2022
How to build and sign your iOS application using Azure DevOps

How to build and sign your iOS application using Azure DevOps Sample source code

null 0 Dec 29, 2021
Application iOS de l'outil ViteMaDose

Vite Ma Dose pour iOS Présentation du projet Vite Ma Dose est un outil permettant de détecter les rendez-vous de vaccination. Cette application rapide

CovidTracker 32 Feb 9, 2022
A declarative UIKit for improve layout productivity when developing an iOS application

TifoKit A declarative UIKit for improve layout productivity when developing an iOS application Requirements Min. iOS 11 Swift 5+ Installation Currentl

Tifo Audi A.P 22 Aug 9, 2022
This page contains an iOS Application that uses Modelplace.AI Cloud API

Modelplace iOS App This page contains an iOS Application that uses Modelplace.AI

OpenCV.AI 7 Jan 21, 2022
UndrDawg: a sport-betting application for iOS

Table of contents What Is UndrDawg Our Mission Technologies Setup Features What

norman chiflen 0 Dec 26, 2021
Olvid-ios - Olvid client application for iOS

Olvid Olvid is a private and secure end-to-end encrypted messenger. Contrary to

Olvid 42 Dec 6, 2022
Registre-aqui - Mobile Application that displays infrastructure issues that your city may have

Registre Aqui About | Features | Technologies | Requirements About Mobile Applic

Gian Carlo Mantuan Dala Rosa 1 Jan 4, 2022
An iOS application enables you explore art works provided by DeviartArt.com with high quality UX.

Iris.iOS Iris is a model mobile application based on iOS. It provides basic functions allow users to explore on DeviantArt and check Daily Arts, Notif

Xueliang Chen 63 Dec 13, 2022
open source VIPER application

Overview Rambler&IT is an open source application, which highlights the basic approaches to mobile application architecture used in Rambler&Co. You ca

Rambler Digital Solutions 334 Sep 21, 2022
FreeOTP is a two-factor authentication application for systems utilizing one-time password protocols

FreeOTP FreeOTP is a two-factor authentication application for systems utilizing one-time password protocols. Tokens can be added easily by scanning a

FreeOTP 551 Dec 28, 2022