{"id":24791446,"url":"https://github.com/jetsetilly/ivycel","last_synced_at":"2026-03-17T08:34:26.344Z","repository":{"id":251424675,"uuid":"835382765","full_name":"JetSetIlly/Ivycel","owner":"JetSetIlly","description":"Experimental spreadsheet interface for Ivy","archived":false,"fork":false,"pushed_at":"2024-12-14T08:56:37.000Z","size":1688,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-12T15:31:52.404Z","etag":null,"topics":["go","spreadsheet"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JetSetIlly.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-07-29T18:08:19.000Z","updated_at":"2024-12-14T08:56:41.000Z","dependencies_parsed_at":"2024-12-14T09:28:33.292Z","dependency_job_id":"c5971c8b-d856-44d2-ab06-f8031f518d00","html_url":"https://github.com/JetSetIlly/Ivycel","commit_stats":null,"previous_names":["jetsetilly/ivycel"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JetSetIlly/Ivycel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JetSetIlly%2FIvycel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JetSetIlly%2FIvycel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JetSetIlly%2FIvycel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JetSetIlly%2FIvycel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JetSetIlly","download_url":"https://codeload.github.com/JetSetIlly/Ivycel/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JetSetIlly%2FIvycel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30619216,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-17T08:10:05.930Z","status":"ssl_error","status_checked_at":"2026-03-17T08:10:04.972Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","spreadsheet"],"created_at":"2025-01-29T19:17:01.222Z","updated_at":"2026-03-17T08:34:26.321Z","avatar_url":"https://github.com/JetSetIlly.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ivycel\n\nIvycel is an experimental spreadsheet-like interface for [Ivy](https://github.com/robpike/ivy).\n\nThe initial motivation for the project was the desire for a spreadsheet\napplication that could handle calculations in binary and hexadecimal without\nhaving to resort to cumbersome function calls.\n\nWhen I discovered that Ivy handled binary and hexadecimal, I thought it would be\ninteresting to use it as the engine for such a spreadsheet. Ivycel is the result\nof this experimentation\n\n### Limitations\n\nCurrently, Ivycel offers the bare minimum of functionality that you might expect\nfrom a spreadsheet application. The loading and saving of worksheets is currently\nunimplemented.\n\nThe process of cell recalculation is not well thought out and certainly requires\noptimisation. There may also be situations where the recalcuation will be incomplete.\n\nThe interface with Ivy is entirely through Ivy's run.Run() function. Ivy has not been\nchanged at all.\n\nAll Ivy expressions should work except the \"special commands\" and the `op` and\n`opdelete` commands. \n\nThe GUI is created using [GIU](https://github.com/AllenDang/giu) which itself is based on [Dear Imgui](https://github.com/ocornut/imgui). Unfortunatly, GIU has additional development requirements see [the 'install' instructions for GIU](https://github.com/AllenDang/giu?tab=readme-ov-file#install) for more information.\n\nCurrently, the GUI code is entirely in the main.go file and definitely\nrequires tidying and clarifying.\n\n### Demonstration Videos\n\nThe following videos demonstrate Ivycel in operation, showing how a spreadsheet\nstyle interface can work with Ivy.\n\n1) The first video shows basic arithmetic and referencing of cells. References can be typed\n   or the referenced cell can be double-clicked. Double-clicking is often more convenient\n   because the cell reference must be inside braces.\n  \n   The ability of Ivy to output results in different number bases is also demonstrated.\n\nhttps://github.com/user-attachments/assets/a3099eb5-6cd2-45a6-992f-2994854610c6\n\n2) Some Ivy results come in parts. In this video the Ivy keyword `iota` is used.\n\n   The video also shows how a reference to a cell can be made using the context menu (accessible\n   with the right mouse button on most computers).\n\nhttps://github.com/user-attachments/assets/502e2d3f-3764-4f12-8c68-b61c960a491d\n\n3) This video demonstrates how the results of the Ivy keyword `rho` are displayed. Similar to the\n   previous example, individual elements in the result can be references or the expression as a\n   whole can be referenced.\n\nhttps://github.com/user-attachments/assets/d78bf7b3-2aec-4807-93a7-ade3ac7af90f\n\n4) A much larger `rho` result in this video. Also, the video shows how a multi-part result will be\n   displayed when it comes into contact with another result (ie. an occupied cell).\n\n   The cropped result is still valid and can be referenced but requires the index notation.\n\n   Deleting the blocking expression, causes the `iota` expression to be re-evaluated and the result shown in full.\n\nhttps://github.com/user-attachments/assets/e47c698b-802d-433d-b9d5-842e9a07a717\n\n5) This video shows the insertion of columns and rows. In particular, it shows how references are preserved. It also\n   shows the effect insertion has on multi-part results.\n\n   For example, when the column is inserted at column F, the `iota` result is moved along but the `rho` result is\n   unaffected (because the `rho` expression is rooted at a cell before column F.\n   \nhttps://github.com/user-attachments/assets/7f0c8412-9c7e-44e2-b4f9-1dce5bbf5f82\n\n6) This final video demonstrates some features of Ivy. Rational numbers, exponents, trignonometry and complex numbers.\n\nhttps://github.com/user-attachments/assets/175f4a06-a9ee-43cb-93ee-ce260c73e515\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjetsetilly%2Fivycel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjetsetilly%2Fivycel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjetsetilly%2Fivycel/lists"}