Repository navigation
[ImgBot] Optimize images - #4
Closed
imgbot[bot] wants to merge 48 commits into
Closed
imgbot[bot] wants to merge 48 commits into
imgbot[bot] wants to merge 48 commits into
Conversation
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…configuration Co-authored-by: Cursor <cursoragent@cursor.com>
…APK build Co-authored-by: Cursor <cursoragent@cursor.com>
…yphs Co-authored-by: Cursor <cursoragent@cursor.com>
…naryMark Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…rong matches Co-authored-by: Cursor <cursoragent@cursor.com>
…der page Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
This reverts commit 6f21812.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…ality Co-authored-by: Cursor <cursoragent@cursor.com>
…ndalone shell Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…d orange Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…grid, readable orange text Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…fy on Monad Connects an injected browser wallet, switches to or adds Monad testnet (chain 10143), shows address and MON balance, and reads the note seal straight from NoSusCanary.noteOf through the wallet or the public RPC. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…tro nav and labels Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
… roomier spacing Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…e live pixel canary Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…py size check Each copy carries an invisible marker every 10 words, so copies are about 1.75x the note in bytes. 5,000 characters keeps every copy of a 100-reader note under the server's 12,000-character ciphertext cap; createNote now measures each encrypted copy and asks the sender to trim if one is over. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Paper, ink and orange README with animated SVGs (banner, story, leak battle), a 60-second try-it, and a judge checklist with the live URL, NoSusCanary contract 0xb1a1...0e68 and its Sourcify verification. Regenerate with: node tool/build-readme.mjs (reads readme.config.json). The previous README moves to docs/TECHNICAL_README.md. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The centre links now show from 1440 px and the testnet badge from 1180 px, so the bar no longer overflows next to a connected wallet at 1200 px. The CanaryApp test now loads the real bundled fonts and checks 390, 1200, 1366, 1440 and 1920 px wide for overflows. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Codeword generation packs codewords into ints (XOR + popcount distance check). Output is byte-identical for the same Random; about 4x faster (100 readers at 12 slots: 757 ms -> 178 ms on the VM). - Stop the 3 s status polling once a note is settled (every copy opened and on Monad, or the link expired). Load the owner record once per screen instead of on every rebuild; build the composer plan once per edit. - Guard setState and controller writes after awaits in the leak check, and keep a failed status fetch from surfacing as an unhandled error. - Verify on Monad: read the chain once per dialog (not on every rebuild), add a 15 s RPC timeout and an HTTP status check. - Show friendly messages instead of raw exception text; codeword StateErrors become CanaryUserException. - Remove docs/canary/reference (merged, per its README). Move the fingerprint harness to app/tool (now tests the live engine, FAILURES: 0) and VERIFICATION.md to docs/canary. - dart format the Canary feature, its tests and the harness. Checks: flutter analyze 0 issues; flutter test 133 passed, 1 skipped; flutter build web --release OK; contracts 11 passing; web check OK; tool/check-repository.mjs passed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
nosus-monad was renamed to nosus-canary (old URLs redirect) and now hosts the built site on its gh-pages branch. README regenerated from readme.config.json. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Every note seal and reader open is now one SPL Memo transaction on Solana devnet (hashes only), sent by the edge function's relayer, so readers still need no wallet. Monad becomes optional (off when CANARY_CONTRACT_ADDRESS is unset) and its UI is behind --dart-define=CANARY_MONAD (default off). - edge function: solana.ts (kit 8.4 + memo 0.15, HTTP polling confirm), gating.ts + offline tests, Buffer shim for the Supabase runtime - migration: seal_solana_sig / open_solana_sig, canary_assign_copy - app: Solana proof chips, Solana-only copy, null seal_tx_hash support - docs: STATUS + VERIFICATION evidence, Solana-first README, devnet spike Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ceipt - Remove contracts/ (Solidity), web/ (Next.js threshold-decrypt spike), tool/threshold-spike, the root supabase/ schema for that spike, the .cursor rules and the docs that only described it. History keeps them. - Remove the unreachable features/monad screens and their tests, the /monad route, and the live-network db_test diagnostic. ExperimentFrame moves to lib/components and no longer names a chain. - Retire the README generator and its unused retro SVGs. - Contact email on the legal pages is shubhamsahu@nosus.foo. - pubspec.lock picks up the same transitive bumps as the local chore/canary-hardening working copy. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- packages/receipts-ts (@nosus/receipts): encode/parse the v1 memo, compute the hashed ids, parse relayer keys, send a memo with @solana/kit 8.4, fetch and decode a receipt, plus a verify CLI. - packages/receipts-dart (nosus_receipts): the same format, ids, Explorer links and an RPC client, plus bin/verify.dart. - packages/test-vectors: shared vectors and five real devnet transactions; both languages test against them offline. - The relayer's solana.ts now imports receipts-ts; memo bytes are unchanged (solana_test.ts checks the real devnet memos). Not deployed. - docs/RECEIPTS_SPEC.md: the v1 format and how to verify by hand. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Flutter analyze + test + fingerprint harness (now exits 1 on failure), relayer type-check, tests and bundle, receipts-ts check/lint/fmt/test, receipts-dart analyze/format/test. Replaces the old contract/web job. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- README: pitch, real demo GIF from the live site, problem, insight, product, traction, why Solana, architecture, real devnet receipts, 5-minute local run, security notes, roadmap. - SUBMISSION.md: judge FAQ and a 2-minute demo script. - SECURITY.md: data map, hash formulas, threat model, measured leak matching, secret-scan result. - docs: new ARCHITECTURE, SELF_HOSTING, STATUS and VERIFICATION. - Banner wordmark gets its grey square stop; social preview image. - .env.example lists the relayer secrets; LICENSE (Apache-2.0), NOTICE. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The canary function was redeployed (version 7) from this branch and smoke-tested on devnet: create, open and status all 200, both memos decode with cli.ts --note. - README and SUBMISSION link the pitch (2:24) and narrated demo (1:18) on the v0.1.0 release. - Receipt count is now 31 (19 seals, 12 opens, 0 failed). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Canary: Solana devnet receipts; Monad optional and hidden
Judge-ready repo: Solana-only, receipts library v0.1, CI, docs
*Total -- 7,219.23kb -> 6,257.85kb (13.32%) /app/assets/icon/transparent_foreground.png -- 1.07kb -> 0.31kb (71.19%) /app/assets/screenshots/2.png -- 34.95kb -> 12.22kb (65.02%) /app/assets/screenshots/5.png -- 55.17kb -> 19.74kb (64.23%) /app/assets/screenshots/6.png -- 25.03kb -> 8.98kb (64.13%) /app/assets/screenshots/1.png -- 35.74kb -> 12.96kb (63.75%) /app/assets/screenshots/19.png -- 221.72kb -> 80.54kb (63.67%) /app/web/icons/Icon-maskable-192.png -- 3.16kb -> 1.34kb (57.44%) /app/web/icons/Icon-maskable-512.png -- 14.29kb -> 6.39kb (55.29%) /app/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png -- 4.45kb -> 2.21kb (50.26%) /app/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png -- 6.57kb -> 3.42kb (47.88%) /app/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png -- 2.62kb -> 1.38kb (47.45%) /app/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png -- 17.87kb -> 9.84kb (44.93%) /app/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png -- 11.70kb -> 6.45kb (44.89%) /app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -- 100.58kb -> 57.80kb (42.53%) /app/android/app/src/main/res/drawable-xhdpi/ic_launcher_monochrome.png -- 6.58kb -> 3.96kb (39.87%) /app/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_monochrome.png -- 19.31kb -> 11.67kb (39.58%) /app/android/app/src/main/res/drawable-xxhdpi/ic_launcher_monochrome.png -- 12.24kb -> 7.43kb (39.28%) /app/assets/icon/adaptive_foreground.png -- 18.78kb -> 11.64kb (38.01%) /app/assets/icon/adaptive_monochrome.png -- 18.78kb -> 11.64kb (38.01%) /app/android/app/src/main/res/drawable-hdpi/ic_launcher_monochrome.png -- 4.34kb -> 2.70kb (37.83%) /app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -- 35.55kb -> 23.23kb (34.66%) /app/assets/screenshots/16.png -- 23.08kb -> 15.31kb (33.66%) /app/android/app/src/main/res/drawable-mdpi/ic_launcher_monochrome.png -- 2.36kb -> 1.59kb (32.56%) /app/assets/screenshots/15.png -- 39.68kb -> 27.90kb (29.69%) /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png -- 2.35kb -> 1.69kb (28.02%) /app/assets/screenshots/10.png -- 35.25kb -> 25.47kb (27.73%) /app/assets/screenshots/9.png -- 48.48kb -> 35.29kb (27.2%) /app/assets/screenshots/7.png -- 62.90kb -> 45.93kb (26.98%) /app/assets/screenshots/11.png -- 186.64kb -> 136.99kb (26.6%) /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -- 2.42kb -> 1.77kb (26.6%) /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -- 2.42kb -> 1.77kb (26.6%) /app/assets/screenshots/18.png -- 50.71kb -> 37.27kb (26.51%) /app/assets/screenshots/13.png -- 89.92kb -> 66.11kb (26.48%) /app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -- 13.81kb -> 10.22kb (25.97%) /app/assets/screenshots/8.png -- 63.50kb -> 47.02kb (25.96%) /app/web/icons/Icon-192.png -- 4.63kb -> 3.45kb (25.6%) /app/assets/screenshots/17.png -- 59.87kb -> 44.85kb (25.08%) /app/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png -- 1.89kb -> 1.44kb (23.87%) /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -- 4.40kb -> 3.36kb (23.75%) /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png -- 1.96kb -> 1.51kb (23.28%) /app/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png -- 3.17kb -> 2.44kb (22.93%) /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png -- 3.17kb -> 2.44kb (22.93%) /app/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png -- 4.80kb -> 3.75kb (21.81%) /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -- 3.84kb -> 3.02kb (21.38%) /app/assets/screenshots/4.png -- 66.09kb -> 52.02kb (21.29%) /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -- 3.39kb -> 2.67kb (21.23%) /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -- 1.65kb -> 1.30kb (21.17%) /docs/media/landing.png -- 135.03kb -> 107.74kb (20.21%) /app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -- 5.55kb -> 4.43kb (20.19%) /docs/media/leak-check.png -- 99.49kb -> 80.21kb (19.37%) /docs/media/dashboard.png -- 83.06kb -> 67.33kb (18.94%) /app/web/icons/Icon-512.png -- 23.60kb -> 19.22kb (18.54%) /docs/media/compose.png -- 80.54kb -> 67.50kb (16.19%) /docs/media/explorer-receipt.png -- 86.57kb -> 73.09kb (15.57%) /docs/media/reader-copy.png -- 129.23kb -> 110.40kb (14.57%) /assets/social-preview.png -- 25.72kb -> 22.21kb (13.64%) /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -- 1.36kb -> 1.18kb (13.18%) /app/assets/icon/app_icon.png -- 21.99kb -> 19.22kb (12.59%) /app/assets/icon/LuxandNox.png -- 665.15kb -> 581.54kb (12.57%) /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png -- 1.23kb -> 1.09kb (10.82%) /app/android/app/src/main/res/mipmap-hdpi/launcher_icon.png -- 1.23kb -> 1.09kb (10.82%) /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -- 1.38kb -> 1.23kb (10.62%) /docs/media/canary-demo.gif -- 3,716.89kb -> 3,528.50kb (5.07%) /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -- 0.97kb -> 0.93kb (3.73%) /app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -- 2.17kb -> 2.09kb (3.29%) /app/assets/images/avatar_chaos.png -- 24.26kb -> 23.67kb (2.4%) /app/assets/images/avatar_archivist.png -- 21.65kb -> 21.28kb (1.71%) /app/assets/images/avatar_builder.png -- 20.65kb -> 20.31kb (1.67%) /app/assets/images/avatar_academic.png -- 22.26kb -> 21.91kb (1.57%) /app/assets/icon/founder_avatar.jpeg -- 54.98kb -> 54.19kb (1.44%) /app/assets/images/avatar_researcher.png -- 20.68kb -> 20.38kb (1.43%) /app/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_background.png -- 265.76kb -> 262.04kb (1.4%) /app/assets/images/avatar_creator.png -- 19.55kb -> 19.28kb (1.37%) /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -- 56.98kb -> 56.31kb (1.18%) /app/android/app/src/main/res/drawable-xxhdpi/ic_launcher_background.png -- 162.04kb -> 160.85kb (0.73%) /assets/readme/banner.svg -- 36.39kb -> 36.15kb (0.66%) Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
This comment has been minimized.
This comment has been minimized.
https-shubhamsahu
force-pushed
the
main
branch
from
October 20, 2026 13:36
97136c1 to
40f641f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Beep boop. Your images are optimized!
Your image file size has been reduced by 13% 🎉
Details
📝 docs |
repo | 🙋🏾 issues | 🏪 marketplace
~Imgbot - Part of Optimole family