From 20a51f980b5fb7a0bbd70904f11e6bb5c2ad307e Mon Sep 17 00:00:00 2001 From: k Date: Tue, 25 Jun 2024 14:46:23 +0200 Subject: [PATCH] general: snapshot --- CHANGELOG.md | 27 ++-- README.md | 2 + app/src/app/components/background.tsx | 9 ++ .../frames/chart/components/actions.tsx | 59 +------- .../frames/chart/components/button.tsx | 36 +++++ .../frames/chart/components/buttonShare.tsx | 20 +++ .../frames/chart/components/legend.tsx | 2 +- .../frames/chart/components/timeScale.tsx | 74 +++++---- app/src/app/components/frames/chart/index.tsx | 7 +- app/src/app/components/frames/favorites.tsx | 4 +- app/src/app/components/frames/history.tsx | 7 +- app/src/app/components/frames/settings.tsx | 9 +- .../frames/tree/components/tree.tsx | 140 +++++++++--------- app/src/app/components/update.tsx | 4 +- app/src/app/index.tsx | 13 +- app/src/env.ts | 10 +- app/src/scripts/datasets/base.ts | 40 +++++ app/src/scripts/datasets/date.ts | 30 ++-- app/src/scripts/datasets/height.ts | 28 ++-- app/src/scripts/datasets/resource.ts | 18 +-- .../scripts/lightweightCharts/chart/create.ts | 3 + .../scripts/lightweightCharts/chart/price.ts | 14 +- app/src/scripts/utils/tick.ts | 5 + app/src/styles.css | 6 + assets/latest.jpg | Bin 0 -> 526960 bytes assets/v0.1.0.jpg | Bin 0 -> 578047 bytes assets/v0.1.1.jpg | Bin 0 -> 606326 bytes 27 files changed, 342 insertions(+), 225 deletions(-) create mode 100644 app/src/app/components/frames/chart/components/button.tsx create mode 100644 app/src/app/components/frames/chart/components/buttonShare.tsx create mode 100644 app/src/scripts/datasets/base.ts create mode 100644 app/src/scripts/utils/tick.ts create mode 100644 assets/latest.jpg create mode 100644 assets/v0.1.0.jpg create mode 100644 assets/v0.1.1.jpg diff --git a/CHANGELOG.md b/CHANGELOG.md index 880eda9ac..39a57ec3c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,23 +2,26 @@ ## v. 0.1.2 | WIP -### Parser - -- +![Image of the Satonomics Web App version 0.1.2](./assets/v0.1.2.jpg) ### App +- Performance + - Improved app's reactivity + - Added some chunk splitting for a faster initial load + - Global improvements that increased the Lighthouse's performance score from the low 30s to the high 70s - Chart - - Fix legend hovering on mobile not resetting on touch end + - Fixed legend hovering on mobile not resetting on touch end + - Updated legend padding so that the scrollbar, if visible, is less in the way + - Added yearly time scale setters (from year 2009 to today) - Misc - Support mini window size, could be useful for embedded views - -### Server - -- + - Hopefully made scrollbars a little more subtle on WIndows and Linux, can't test ## v. 0.1.1 | 849240 - 2024/06/24 +![Image of the Satonomics Web App version 0.1.1](./assets/v0.1.1.jpg) + ### Parser - Fixed overflow in `Price` struct which caused many Realized Caps and Realized Prices to have completely bogus data @@ -26,7 +29,7 @@ ### Server -- Added the chunk, date and time in the terminal logs +- Added the chunk, date and time of the request to the terminal logs ### App @@ -53,7 +56,7 @@ - Strip - Temporarily removed the Home button on the strip bar on desktop as there is no landing page yet - Settings - - Add version + - Added version - PWA - Fixed background update - Changed update check frequency to 1 minute (~1kb to fetch every minute which is very reasonable) @@ -64,3 +67,7 @@ ### Price - Deleted old price datasets and their backups + +## v. 0.1.0 | 848642 - 2024/06/19 + +![Image of the Satonomics Web App version 0.1.0](./assets/v0.1.0.jpg) diff --git a/README.md b/README.md index 684b9cf82..91686a10d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # SATONOMICS +![Image of the Satonomics Web App](./assets/latest.jpg) + ## Description TLDR: Free, open source, verifiable and self-hostable Bitcoin on-chain data generator and visualizer diff --git a/app/src/app/components/background.tsx b/app/src/app/components/background.tsx index 417e65da1..44def2c50 100644 --- a/app/src/app/components/background.tsx +++ b/app/src/app/components/background.tsx @@ -4,6 +4,7 @@ const texts = [ "satonomics", "satonomics", "satonomics", + "satonomics", "stay humble, stack sats", "21 million", @@ -29,6 +30,14 @@ const texts = [ "be your own bank", "resistance money", "foss", + "permissionless", + "great reset", + "orange pill", + "borderless", + "anonymous", + "nyknyc", + "low time preference", + "absolute scarcity", ]; export const LOCAL_STORAGE_MARQUEE_KEY = "bg-marquee"; diff --git a/app/src/app/components/frames/chart/components/actions.tsx b/app/src/app/components/frames/chart/components/actions.tsx index be422a4d2..142e65ab6 100644 --- a/app/src/app/components/frames/chart/components/actions.tsx +++ b/app/src/app/components/frames/chart/components/actions.tsx @@ -1,9 +1,7 @@ -import { generate } from "lean-qr"; - import { chartState } from "/src/scripts/lightweightCharts/chart/state"; import { setTimeScale } from "/src/scripts/lightweightCharts/chart/time"; -import { classPropToString } from "/src/solid/classes"; -import { createRWS } from "/src/solid/rws"; + +import { Button } from "./button"; export function Actions({ presets, @@ -14,6 +12,10 @@ export function Actions({ qrcode: RWS; fullscreen?: RWS; }) { + const ButtonShare = lazy(() => + import("./buttonShare").then((d) => ({ default: d.ButtonShare })), + ); + return (
@@ -37,18 +39,8 @@ export function Actions({ )} -
); } - -function Button({ - title, - icon, - colors, - onClick, - disabled, - classes, -}: { - title: string; - icon: () => ValidComponent; - colors?: () => string; - onClick: VoidFunction; - disabled?: () => boolean; - classes?: string; -}) { - return ( - - ); -} diff --git a/app/src/app/components/frames/chart/components/button.tsx b/app/src/app/components/frames/chart/components/button.tsx new file mode 100644 index 000000000..e2e2dcbd8 --- /dev/null +++ b/app/src/app/components/frames/chart/components/button.tsx @@ -0,0 +1,36 @@ +import { classPropToString } from "/src/solid/classes"; + +export function Button({ + title, + icon, + colors, + onClick, + disabled, + classes, +}: { + title: string; + icon: () => ValidComponent; + colors?: () => string; + onClick: VoidFunction; + disabled?: () => boolean; + classes?: string; +}) { + return ( + + ); +} diff --git a/app/src/app/components/frames/chart/components/buttonShare.tsx b/app/src/app/components/frames/chart/components/buttonShare.tsx new file mode 100644 index 000000000..e7642ba66 --- /dev/null +++ b/app/src/app/components/frames/chart/components/buttonShare.tsx @@ -0,0 +1,20 @@ +import { generate } from "lean-qr"; + +import { Button } from "./button"; + +export function ButtonShare({ qrcode }: { qrcode: RWS }) { + return ( + - - - + + + + - - - - + + + + + index + 2009) + .reverse()} + > + {(year) => ( + + )} + ); } @@ -43,25 +57,25 @@ function Button(props: ParentProps & { onClick: VoidFunction }) { ); } -function setTimeScale(days?: number) { - const to = new Date(); +function setTimeScale({ days, year }: { days?: number; year?: number }) { + let from = new Date(); + let to = new Date(); - if (days) { - const from = new Date(); + if (year) { + from = new Date(`${year}-01-01`); + to = new Date(`${year}-12-31`); + } else if (days) { from.setDate(from.getUTCDate() - days); - - chartState.chart?.timeScale().setVisibleRange({ - from: (from.getTime() / 1000) as Time, - to: (to.getTime() / 1000) as Time, - }); } else { - // chartState.chart?.timeScale().fitContent(); - chartState.chart?.timeScale().setVisibleRange({ - from: (new Date( - // datasets.candlesticks.values()?.[0]?.date || "", - GENESIS_DAY, - ).getTime() / 1000) as Time, - to: (to.getTime() / 1000) as Time, - }); + from = new Date(GENESIS_DAY); } + + setRange({ + from: (from.getTime() / 1000) as Time, + to: (to.getTime() / 1000) as Time, + }); +} + +function setRange(range: TimeRange) { + chartState.chart?.timeScale().setVisibleRange(range); } diff --git a/app/src/app/components/frames/chart/index.tsx b/app/src/app/components/frames/chart/index.tsx index aabf8cc12..b16d6ee4a 100644 --- a/app/src/app/components/frames/chart/index.tsx +++ b/app/src/app/components/frames/chart/index.tsx @@ -27,6 +27,10 @@ export function ChartFrame({ }) { const legend = createRWS([]); + const Chart = lazy(() => + import("./components/chart").then((d) => ({ default: d.Chart })), + ); + return (
@@ -56,7 +60,6 @@ export function ChartFrame({ diff --git a/app/src/app/components/frames/favorites.tsx b/app/src/app/components/frames/favorites.tsx index 32ba7ef62..9f40b348b 100644 --- a/app/src/app/components/frames/favorites.tsx +++ b/app/src/app/components/frames/favorites.tsx @@ -12,7 +12,9 @@ export function FavoritesFrame({ return (