{"id":16528393,"url":"https://github.com/danvk/historytoy","last_synced_at":"2026-05-31T21:31:20.403Z","repository":{"id":20208913,"uuid":"23480401","full_name":"danvk/historytoy","owner":"danvk","description":"Crafting navigation in a single page web application","archived":false,"fork":false,"pushed_at":"2014-09-11T04:57:16.000Z","size":172,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-04-17T00:17:38.128Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/danvk.png","metadata":{"files":{"readme":"README.md","changelog":"history.js","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-08-29T23:20:18.000Z","updated_at":"2014-09-03T04:42:18.000Z","dependencies_parsed_at":"2022-07-27T01:02:09.683Z","dependency_job_id":null,"html_url":"https://github.com/danvk/historytoy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/danvk/historytoy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danvk%2Fhistorytoy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danvk%2Fhistorytoy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danvk%2Fhistorytoy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danvk%2Fhistorytoy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danvk","download_url":"https://codeload.github.com/danvk/historytoy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danvk%2Fhistorytoy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33750474,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-10-11T17:40:13.619Z","updated_at":"2026-05-31T21:31:20.388Z","avatar_url":"https://github.com/danvk.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"HTML5 History Toy\n==========\n\nThis is an attempt to build a single page application with very explicit control of its web history.\n\nThe application has three views:\n\n   1. Initial\n   2. Grid view\n   3. Panel view\n   \nTransitions between each of these are triggered by buttons. It is possible to transition between any pair.\n\nThe navigation stack should always look like the list above, never deeper. It could be shorter, but only\nif the user navigates directly to a Panel URL fragment.\n\nThe goal is to write straightforward UI code to wire up the buttons and transitions, then to add the history\nmanagement without muddying up this code.\n\n\nhistory.js\n----------\n\nThis is the heart of the approach. It's a wrapper around `history.pushState` and `history.replaceState` which\nattaches unique IDs to each state. It also attaches links to the previous state, which means that you can never\nget lost in the current history stack. This means that you can walk back through the browser history to find out\nexactly how many states you want to pop back through.\n\n\nDemo\n----\n\nRun:\n\n    $ python -m SimpleHTTPServer\n    \nAnd open `localhost:8000`. You can click the buttons, back/forward and edit the URL however you like.\nYou shouldn't be able to confuse the app!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanvk%2Fhistorytoy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanvk%2Fhistorytoy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanvk%2Fhistorytoy/lists"}