* start on script
* Revert "Remove category filters"
This reverts commit d6e808e1a3.
* Convert categories to official default groups
* Add new users to default groups
* Rework group cards
* Cleanup
* Add unique bettors to contract and sort by them
* Most bettors to most popular
* Unused vars
* Track unique bettor ids on contracts
* Add followed users' bets to personal markets
* Add new users to welcome, bugs, and updates groups
* Add users to fewer default cats
* Add TipTap editor and renderer components
* Change market description editor to rich text
* Type description as JSON, fix string-based logic
- Delete make-predictions.tsx
- Delete feed logic that showed descriptions
* wip Fix API validation
* fix type error
* fix extension import (backend)
In firebase, typescript compiles imports into common js imports
like `const StarterKit = require("@tiptap/starter-kit")`
Even though StarterKit is exported from the cjs file, it gets imported
as undefined. But it magically works if we import *
If you're reading this in the future, consider replacing StarterKit with
the entire list of extensions.
* Stop load on fail create market, improve warning
* Refactor editor as hook / fix infinite submit bug
Move state of editor back up to parent
We have to do this later anyways to allow parent to edit
* Add images - display, paste + uploading
* add uploading state of image
* Fix placeholder, misc styling
min height, quote
* Fix appending to description
* code review fixes: rename, refactor, chop carets
* Add hint & upload button on new lines
- bump to Tailwind 3.1 for arbitrary variants
* clean up, run prettier
* rename FileButton to FileUploadButton
* add image extension as functions dependency
* Simple limit order UI
* Update bet schema
* Restrict bet panel / bet row to only CPMMBinaryContracts (all binary DPM are resolved)
* Limit orders partway implemented
* Update follow leaderboard copy
* Change cpmm code to take some state instead of whole contract
* Write more of matching algorithm
* Fill in more of placebet
* Use client side contract search for emulator
* More correct matching
* Merge branch 'main' into limit-orders
* Some cleanup
* Listen for unfilled bets in bet panel. Calculate how the probability moves based on open limit orders.
* Simpler switching between bet & limit bet.
* Render your open bets (unfilled limit orders)
* Cancel bet endpoint.
* Fix build error
* Rename open bets to limit bets. Tweak payout calculation
* Limit probability selector to 1-99
* Deduct user balance only on each fill. Store orderAmount of bet. Timestamp of fills.
* Use floating equal to check if have shares
* Add limit order switcher to mobile bet dialog
* Support limit orders on numeric markets
* Allow CORS exception for Vercel deployments
* Remove console.logs
* Update user balance by new bet amount
* Tweak vercel cors
* Try another regexp for vercel cors
* Test another vercel regex
* Slight notifications refactor
* Fix docs edit link (#624)
* Fix docs edit link
* Update github links
* Small groups UX changes
* Groups UX on mobile
* Leaderboards => Rankings on groups
* Unused vars
* create: remove automatic setting of log scale
* Use react-query to cache notifications (#625)
* Use react-query to cache notifications
* Fix imports
* Cleanup
* Limit unseen notifs query
* Catch the bounced query
* Don't use interval
* Unused var
* Avoid flash of page nav
* Give notification question priority & 2 lines
* Right justify timestamps
* Rewording
* Margin
* Simplify error msg
* Be explicit about limit for unseen notifs
* Pass limit > 0
* Remove category filters
* Remove category selector references
* Track notification clicks
* Analyze tab usage
* Bold more on new group chats
* Add API route for listing a bets by user (#567)
* Add API route for getting a user's bets
* Refactor bets API to use /bets
* Update /markets to use zod validation
* Update docs
* Clone missing indexes from firestore
* Minor notif spacing adjustments
* Enable tipping on group chats w/ notif (#629)
* Tweak cors regex for vercel
* Your limit bets
* Implement selling shares
* Merge branch 'main' into limit-orders
* Fix lint
* Move binary search to util file
* Add note that there might be closed form
* Add tooltip to explain limit probability
* Tweak
* Cancel your limit orders if you run out of money
* Don't show amount error in probability input
* Require limit prob to be >= .1% and <= 99.9%
* Fix focus input bug
* Simplify mobile betting dialog
* Move mobile limit bets list into bet dialog.
* Small fixes to existing sell shares client
* Lint
* Refactor useSaveShares to actually read from localStorage, use less bug-prone interface.
* Fix NaN error
* Remove TODO
* Simple bet fill notification
* Tweak wording
* Sort limit bets by limit prob
* Padding on limit bets
* Match header size
Co-authored-by: Ian Philips <iansphilips@gmail.com>
Co-authored-by: ahalekelly <ahalekelly@gmail.com>
Co-authored-by: mantikoros <sgrugett@gmail.com>
Co-authored-by: Ben Congdon <ben@congdon.dev>
Co-authored-by: Austin Chen <akrolsmir@gmail.com>
* Show tip notifications
* Optimizing notifications for mobile
* Unused vars
* Move income reason logic to income notif
* Remove unnecessary icons
* Unused vars
* create pseudo-numeric contracts
* graph and bet panel for pseudo numeric
* pseudo numeric market layout, quick betting
* Estimated value
* sell panel
* fix graph
* pseudo numeric resolution
* bets tab
* redemption for pseudo numeric markets
* create log scale market, validation
* log scale
* create: initial value can't be min or max
* don't allow log scale for ranges with negative values (b/c of problem with graph library)
* prettier delenda est
* graph: handle min value of zero
* bet labeling
* validation
* prettier
* pseudo numeric embeds
* update disclaimer
* validation
* validation
* add trigger for updated user
* Add referral bonuses and notifications for them
* Cleanup
* Add share group button, cleanup
* Cleanup
* Add referrals list to user profile
* Remove unused
* Referral bonus => constant
* Refactor
* Add referral txn to helper fn
* Move reads into firebase transaction
* Use effects to write referral info
* Flex-wrap profile objects
* Small ui changes
* Restrict referral user to one update
* Remove rogue semicolon
* Note about group referral query details
* Track referrals, add them to settings list
* Update resolve-market to be a v2 function
* Cleanup API error responses
* Update frontend to use v2 version of resolvemarket
* Appease ESLint
* Address review comments
* Appease ESLint
* Remove unnecessary auth check
* Fix logic bug in FR market validation
* Make it so you can specify runtime opts for v2 functions
* Cleanup to resolve market API resolutions input, fixes
* Fix up tiny lint
* Last minute cleanup to resolvemarket FR API input validation
Co-authored-by: Benjamin <ben@congdon.dev>
* More liberal .gitignores on TS output directories
* Use project references for Typescript functions project
* Use /dist dir for Cloud Functions deployment payload
* Fix Github actions functions tsc job
* More liberal .gitignores on TS output directories
* Use project references for Typescript projects
* Use /dist dir for Cloud Functions deployment payload
* Disable `next build` typechecking
* Fiddle with GitHub tsc jobs
* Set up Firestore structure for mana bounty links
* Split up manalinks into successes and failures
* Allow clients to create manalinks
* Track txnId and successful users
* Store custom amounts in the link
* List all manalinks you've created
* Support backend for claiming manalinks
* Add some more error handling
* Tweak readme
* Fix typescript breakage
* Revert "Convert common imports in functions to be absolute"
This reverts commit c03518e906.
* Scaffolding so `claimManalink` works
* Clean up imports
* Barebones endpoint to claim mana
* Fix rules to only allow link creators to query
* Design out claim giftcard
* List all claimed transactions
* Style in a more awesome card
* Fix import
* Padding tweak
* Fix useManalinkTxns hook
* /send -> /link
* Tidy up some details
* Do a bunch of random manalinks work
* Fix up LinksTable to build
* Clean up LinksTable an absurd amount
* Basic details functionality on manalinks table
* Work on manalink claim stuff
* Fix up some merge mess
* Not-signed-in flow implemented
* Better manalinks table
* Only show outstanding links in table
* Use new `ManalinkTxn` type
* /link -> /links
* Change manalinks page UI to use nice looking tabs
* Many fixes to manalinks UI
* Default to 1 use
* Tidying up
* Some copy changes based on feedback
* Add required index
Co-authored-by: Marshall Polaris <marshall@pol.rs>
* [Leaderboards] Added period toggle for leaderboards
* [Leaderboards] TopBettors now calculates by period correctly
* [Leaderboard] Use a subcollection for the portfolio caching
* [Leaderboard] Switches to a tab view, temporarily hides the missing topBettors periods
* [Leaderboard] Reverts random yarn.lock changes
* Fix type error from merge
* Increase timeout on update metrics
* Update firebase rules to allow reading user portfolioHistory
Co-authored-by: Pico2x <pico2x@gmail.com>
* Folds=>groups
* Show groups on user profile
* Allow group creation from /create
* Refactoring to groups
* Convert folds to groups
* Add new add to group notification
* Fix user profile tab bug
* Add groups nav and tab for my groups
* Remove bad profile pages
* remove comments
* Add group list dropdown to sidebar
* remove unused
* group cards ui
* Messages=>Comments, v2, groupDetails
* Discussion time
* Cleaning up some code
* Remove follow count
* Fix pool scoring for cpmm
* Fix imports
* Simplify rules, add GroupUser collection
* Fix group cards
* Refactor
* Refactor
* Small fixes
* Remove string
* Add api error detail handling
* Clear name field
* Componentize
* Spacing
* Undo userpage memo
* Member groups are already in my tab
* Remove active contracts reference for now
* Remove unused
* Refactoring
* Allow adding old questions to a group
* Rename
* Wording
* Throw standard v2 APIError
* Hide input for non-members, add about under title
* Multiple names to & # more
* Move comments firestore rules to appropriate subpaths
* Group membership, pool=>volume
* Cleanup, useEvent
* Raise state to parent
* Eliminate unused
* Cleaning up
* Clean code
* Revert tags input deletion
* Cleaning code
* Stylling
* Limit members to display
* Array cleanup
* Add categories back in
* Private=>closed
* Unused vars
* Create Top Followed Users leaderboard
* Switch to increment/decrement approach for caching user follower counts
* Backfill script for user follow counts
* Appease ESLint
* Address review comment
Co-authored-by: James Grugett <jahooma@gmail.com>
* Clean the user's display name on update.
The user's display name should always be clean (see for example
functions/src/create-user.ts). However, change-user-info.ts does not
enforce this, thus potentially allowing a malicious user to change their
name to something that doesn't satisfy the rules for clean display
names.
Note: this cannot happen currently because all callers (in profile.tsx)
clean the name. However, doing it here is good defense in depth
(similar to how the userName is cleaned).
* Update display name max length to 30
* Add a script to hunt down too-long display names
* Make util.isProd a function
* Don't access admin.firestore() on top level of utils.ts
Co-authored-by: Jonas Wagner <ltlygwayh@gmail.com>
* Add tip arrows UI (visual)
* move tipper into its own component
* simplify score calculation
* Add tip txns
- more specific txn types
- fix transact cloud function to be able to create tip txns
- insert tips into comments via a context
* Refactor tipper to send tip txns
* Stop tipping yourself. Disable anons.
* Style tipper (smaller)
* remove default exports
* capitalize tooltips
* rename stuff
* add exhausting hook dependencies
* replace context with prop threading
* fix eslint unused vars
* fix: thread tips correctly into fr comments
* Add tip arrows UI (visual)
* move tipper into its own component
* simplify score calculation
* Add tip txns
- more specific txn types
- fix transact cloud function to be able to create tip txns
- insert tips into comments via a context
* Refactor tipper to send tip txns
* Stop tipping yourself. Disable anons.
* Style tipper (smaller)
* remove default exports
* capitalize tooltips
* rename stuff
* add exhausting hook dependencies
* replace context with prop threading
* fix eslint unused vars
* Consolidate metrics updates into one batch job
* Try batching updates of metrics
* Don't look up all bets again for all contracts
* Tidying up
* Make computeTotalPool less needlessly inefficient looking
* Added radio buttons to market creation (non functional)
* Ignoring vs code files
Should this be done in the repo or should everyone using VS Code do that himself globally on his machine(s)?
* Removed 'automatic' resolution
* added union type for resolution
* revert: resolution could be anything here (non binary markets)
* Expanded ChoicesToggleGroup for string choices
* Added combined resolution and required buttons to market creation
* restricted automatic resolution to binary markets
* added automatic resolution to contract
* added automatic resolution to contract overview
* string or number array to mixed array
* created const for resolutions
* Added comments for leading semicolons
* configuration of auto resolution on market creation
* v1.22.19
* v1.0.0
* v0.0.0
* v1.0.0
* v1.22.19
* Mock display automatic resolution
* Revert changes to market creation
* Revert "v1.22.19"
This reverts commit 22f59adc9c.
* Removed resolutiontype from contract creation
* Added auto resolution time to contract
* Auto resolution date editable
* refactoring
* Editable interface for auto resolution
* New edit interface for auto resolution
* Setting of auto resolve date when changing close date
* prohibited changing other peoples markets
* removed unnecessary export
* refactoring
(cherry picked from commit 4de86d5b08)
* Added comments for leading semicolons
(cherry picked from commit 60739c7853)
* Ignoring vs code files
Should this be done in the repo or should everyone using VS Code do that himself globally on his machine(s)?
(cherry picked from commit 944de9398a)
* removed unused imports and variables
* added type for binary resolution
* Prettier
* const for binary resolutions
* using the type "resolution"
* Prettier
* Re-added comment
* Update functions/src/create-contract.ts
* Revert "Ignoring vs code files"
This reverts commit 09aea5c207.
* launch config for debugging with vs code WIP
* "Launch Chrome" does not work since login via google is not possible in debugger-chrome
* Breakpoints are unbound when attached to chrome
* Revert "Added comments for leading semicolons"
* prettier
* linebreak crlf
* vscode settings
* correct linebreaks
* search exclusion
* automatic prettifier
* vscode settings
* correct linebreaks
* search exclusion
* automatic prettifier
* Working debugger config
* fix merge
* Removed comments, default resolution MKT
* removed vscode from gitignore
* refactoring description update
* Added auto resolution to LiteMarket
* fix date, setDate mutates object
* fixed firestore.rules
* script to add auto resolution to all markets
* regularely auto resolve markets
* fix description error
* moved calculate ts for access in firebase
* Revert "moved calculate ts for access in firebase"
This reverts commit 8380bf4f72.
* fix reference to calculate for firebase
* fixed references to time
* renamed function
* added description
* added auto resolution to description
* direct bool check instead of != null
* direct bool check instead of != undefined
* remove explicit type
* Fix free response markets
* removed contract from functionname
* interval set to 1h
* query instead of filter
* folds ~> contracts
* query instead of filter
* promise.all instead of foreach
* removed contractDoc from function header
* removed autoResolution from function header
* batchedWaitAll instead of promise.all
* removed unused parameter
* replaced auto resolution with constant
* suggestions from PR
* fix comment
* removed unused imports
* added scripts to add close dates on prod
* optimization
* removed test script
* security: only auto resolve markets which are closed
* consistency checks
* re-added type check for binary markets
* moved check of probability into switch case block
* removed unused import
* auto resolution every minute
* auto resolution time optional
* pr fixes
* Make updateFooMetrics functions manually testable
* Add logging, test script to metrics update functions
* Improve on `batchedWaitAll` for update functions
* Change authed endpoints to not look up users unnecessarily
* Parallelize some extremely parallelizable DB requests
* Clean up overcomplicated sellshares logic
* Create following button that opens follow list in modal.
* Move react query deps to web package.json
* UseFollowers hook
* Following and followers button, dialog with tabs.
* Fix line endings
* Remove carriage return from default vscode eol
* Add placeholder message if no users followed / no followers
* Tweak spacing
* Migrate sellBet to v2
* Kill sellBet warmup requests
* Point client at new v2 sellbet function
* Clean up `getSellBetInfo`
* Fix up functions index.ts
* Revert "Revert "Notifications ux fixes - wip (#383)""
This reverts commit 699b03eb42.
* Group & provide more control over notification display
* UI/UX improvements
* Remove unused text key
* Refactor
* Refactor
* Show answer resolution in notification
* Disable eslint on single linefor exhaustive deps
* Handle arbritrary notifications
* Refactor
* Remove unused vars
* Add follow user
* Various UX improvements, add follow notif
* Various small ui changes
* Show notification settings breakdown
* Improve notification status lines
* Upgrade firebase-functions 3.16.0 -> 3.21.2
* Use Secret Manager instead of config
* Small refactoring on new stripe/mailgun initialization
* Teach README about new secrets workflow
* refactoring
(cherry picked from commit 4de86d5b08)
* removed unused imports and variables
* added type for binary resolution
* Prettier
* const for binary resolutions
* using the type "resolution"
* Prettier
* Update functions/src/create-contract.ts
* launch config for debugging with vs code
* "Launch Chrome" does not work since login via google is not possible in debugger-chrome
* Breakpoints are unbound when attached to chrome
* Notifications generating on comment,answer,contract update
* Notifications MVP
* Submitted an answer => answered
* Listen for unseen notifications
* Fix userlink formatting, move page
* Fix links
* Remove redundant code
* Cleanup
* Cleanup
* Refactor name
* Comments
* Cleanup & update notif only after data retrieval
* Find initial new notifs on user change
* Enforce auth rules in db
* eslint update
* Code review changes
* Refactor reason
* Add todos
* Show question in notifiation title
* Allow larger width on md
* Condense on mobile
* Decrease padding, hide title on mobile
* Line clamp notifications
* Shrink text
* Add tsconfig.json for common
* Prefer `const` over `let` over `var`
* Kill dead code
* Fix some trivial Typescript issues
* Turn on Typescript linting in common except for no-explicit-any
* Correctly specify tsconfig dir name in functions eslintrc
* Give react children explicit types
* Add explicit types to removeUndefinedProps
* Create StripeSession type
* Give event in Dropdown an explicit type
* Revert "Give event in Dropdown an explicit type"
This reverts commit 80604310f2.
* Give bids in NewBidTable an explicit type
* Cast results of removeUndefinedProps when neccessary
* Fix type of JoinSpans
* Revert "Cast results of removeUndefinedProps when neccessary"
This reverts commit 5541617bc8.
* Revert "Add explicit types to removeUndefinedProps"
This reverts commit ccf8ffb0b5.
* Give React children types everywhere
* Give event a type
* Give event correct type
* Lint
* Standardize React import
Co-authored-by: Marshall Polaris <marshall@pol.rs>
* Add the great Zod as a dependency to help us
* Tweak eslint
* Rewrite a ton of stuff in createContract and placeBet
* Clean up error reporting in API
* Make sure the UI is enforcing validated limits on lengths
* Remove unnecessary Math.abs
* Better type on `BetInfo`
* Kill `manaLimitPerUser`
* Clean up hacky parameters on bet info functions
* Validate `closeTime` as a valid timestamp in the future
* Add tsconfig.json for common
* Prefer `const` over `let` over `var`
* Kill dead code
* Fix some trivial Typescript issues
* Turn on Typescript linting in common except for no-explicit-any
* Correctly specify tsconfig dir name in functions eslintrc
This is a hacky patch for a problem that runs more deeply: the use of
floating-point for Mana calculations, along with the associated rounding
errors.
Consider the following example:
```typescript
const balance = 1000
const bet = 5.6e-14
const newBalance = balance - bet
if (newBalance == balance) {
alert(`I placed a bet of ${bet} without changing my balance.`)
}
```
This will actually print a message, because floating-point numbers can
only represent so many digits, and thus we get 1000.0 rather than
999.99999999999994.
This is a purely theoretical attack at this point; nobody could create
enough pico-bets to actually affect their balance using this technique.
However, I believe is worth ensuring a minimum bet amount, and might
prevent other problems such as the UI showing messages like "User Foo
bought M0 of YES", which could confuse users.
For a more definite solution, we would probably need to change some
computation to integers, where addition is always commutative and
value-preserving. This is similar to what most financial software does
(e.g., Bitcoin uses 1 Satoshi = 0.00000001 BTC as their unit).
* Set common package.json sideEffects: false
* Configure SWC to modularize lodash imports
* Import specific lodash functions instead of _
* Add an eslint rule to avoid full lodash import
* Fix ultra embarrassing bug not restricting CORS origins
* Put CORS origin regexps in common
* Static types so I don't muck it up again
* Fixup CORS regex to be more strict
* Fix sloppy imports to actually work
* Remove needless wrappers from API requests and responses
* Return real HTTP status codes instead of status field
* More robustly handle API errors
* Fix broken error handling in NumericResolutionPanel warmup
* Numeric contract type
* Create market numeric type
* Add numeric graph (coded without testing)
* Outline of numeric bet panel
* Update bet panel logic
* create numeric contracts
* remove batching for antes for numeric markets
* Remove focus
* numeric market range [1, 100]
* Zoom graph
* Hide bet panels
* getNumericBets
* Add numeric resolution panel
* Use getNumericBets in bet panel calc
* Switch bucket count to 100
* Parallelize ante creation
* placeBet for numeric markets
* halve std of numeric bets
* Update resolveMarket with numeric type
* Set min and max for contract
* lower std for numeric bets
* calculateNumericDpmShares: use sorted order
* Use min and max to map the input
* Fix probability calc
* normpdf variance mislabeled
* range input
* merge
* change numeric graph color
* fix getNewContract params
* bet panel labels
* validation
* number input
* fix bucketing
* bucket input, numeric resolution panel
* outcome label
* merge
* numeric bet panel on mobile
* Make text underneath filled green answer bar selectable
* Default to 'all' feed category when loading page.
* fix numeric resolution panel
* fix numeric bet panel calculations
* display numeric resolution
* don't render NumericBetPanel for non numeric markets
* numeric bets: store shares, bet amounts across buckets in each bet object
* restore your bets for numeric markets
* numeric pnl calculations
* remove hasUserHitManaLimit
* contrain contract type
* handle undefined allOutcomeShares
* numeric ante bet amount
* use correct amount for numeric dpm payouts
* change numeric graph/outcome color
* numeric constants
* hack to show correct numeric payout in calculateDpmPayoutAfterCorrectBet
* remove comment
* fix ante display in bet list
* halve bucket count
* cast to NumericContract
* fix merge imports
* OUTCOME_TYPES
* typo
* lower bucket count to 200
* store raw numeric value with bet
* store raw numeric resolution value
* number input max length
* create page: min, max to undefined if not numeric market
* numeric resolution formatting
* expected value for numeric markets
* expected value for numeric markets
* rearrange lines for readability
* move normalpdf to util/math
* show bets tab
* check if outcomeMode is undefined
* remove extraneous auto-merge cruft
* hide comment status for numeric markets
* import
Co-authored-by: mantikoros <sgrugett@gmail.com>
* Get answer outcome from comment
* Avoid db call if possible
* Include general comments note in comment emails
* Send market-comment on general comment
* randomString: generate a securely random string.
Also, support lengths > 12 in case that's ever needed.
This is used in at least one case (creating device tokens for users)
where it seems important that the output is unpredictable.
* Try harder to create unique usernames.
The previous version added 16 bits of entropy to the username, which
isn't all that much. Due to the birthday paradox, it would be enough to
create ~256 users with the same prefix to get a collision.
Trying that would probably fail later on, and not create security
issues... but it just seems better to be on the safe side here.
* basic market categories
* use tags to store market category
* display category in market
* display full category
* category selector component on feed
* Move feed data fetching to new file
* Decrease batch size for updating feed to prevent out-of-memory error
* Compute and update category feeds!
* Show feeds based on category tabs
* Add react-query package!
* Use react query to cache contracts
* Remove 'other' category
* Add back personal / friends to feed categories
* Show scrollbar temporarily for categories
* Remove 5 categories, change geopolitics to world
* finance => economics
* Show categories on two lines on larger screens
Co-authored-by: James Grugett <jahooma@gmail.com>
* deduct market ante from profits
* display creator fees in stats
* show creator earnings in stats
* separate out creator, liquidity fees in payouts and deduct from profits
* include creator payout in resolution emails
* deduct liquidity from profits
* hide cost tooltip if daily free market
* deduct market ante from profits
* display creator fees in stats
* show creator earnings in stats
* separate out creator, liquidity fees in payouts and deduct from profits
* Configure functions module to allow absolute imports
* Convert common imports in functions to be absolute
* Convert common imports in web to be absolute
* Convert lib imports in web to be absolute
* Convert hooks imports in web to be absolute
* Convert components imports in web to be absolute
* Store view counts & last viewed time
* Schedule updating user recommendations. Compute using tf-idf.
* Update contract's lastBetTime and lastCommentTime on new bets and comments.
* Remove contract's lastUpdatedTime
* Remove folds activity feed
* Implement getFeed cloud function
* Hook up client to use getFeed
* Script to cache viewCounts and lastViewTime
* Batched wait all userRecommendations
* Cache view script runs on all users
* Update user feed each hour and get feed from cache doc.
* Delete view cache script
* Update feed script
* Tweak feed algorithm
* Compute recommendation scores from updateUserFeed
* Disable lastViewedScore factor
* Update lastCommentTime script
* Comment out console.log
* Fix timeout issue by calling new cloud functions with part of the work.
* Listen for contract updates to feed.
* Handle new user: use default feed of top markets this week
* Track lastUpdatedTime
* Tweak logic of calling cloud functions in batches
* Tweak cloud function batching
* Add components for CPM landing and charity pages
* Remove misc.ts to fix build
* Set up cloud function for writing txns
* More plumbing for txns
* Fix up API call
* Use Date.now() to keep timestamps simple
* Some styles for charity list page
* Hard code charities data
* Pass charity data to charity page
* Update txn type
* Listen for charity txns
* Handle txn to non-user by burning it
* Read txns for charity card and charity page.
* Set images to object contain
* Clean up txn types
* Move pic to top of card. Other misc styling.
* Update charity short & long descriptions
* Add `token` and `category` to Txn
* Fix breakages
* Show Charity link in the sidebar
* Fix typing issues
* Fix not reading from the right type
* Switch out icon
* Also show Charity icon on mobile
* Update copy
Co-authored-by: Austin Chen <akrolsmir@gmail.com>
Co-authored-by: James Grugett <jahooma@gmail.com>
* Allow users a free daily market
* Show confetti on recent created market
* remove unused import
* remove comment
* Did create market -> hook, capitalize buttons
* Check for confetti with interval
* Just check once
* Capitalize create market button on feed
* Just for playing with, bad code
* Whiten answer cards
* Separate answers and comments in FR markets
* Highlight FR answer in bet w/ comment
* Darken answer text and move classname
* Normalcase Comment
* Allow free comments with optional bets
* Send emails for comments without bets
* Refactor to share logic
* No free comments on free response questions
* Minor fixes
* Condense line
* Add legend to free response graph
* Hide answers panel unless resolving. Correctly order answers
* No gray background for add answer & resolve panel. Tweak spacing
* Max answer length 240 chars
* Show answer text in resolution for market page, card instead of number.
* Remove remaining answer #'s. Refactor outcome/resolution labels.
* Move answer panel back up
* Tweak spacing
* Update placement of bet button on mobile for FR answer feed item
* Fix reversed feed for binary markets
* Show multi resolve options
* Clean up unused parts of answer item
* Lighten resolve buttons
* Show answer text in market resolve email
* cfmm migration script
* save dpm shares, pool
* formatMoney: use floor instead of round
* migrate cfmm: use sale amount as shares for sold bets
* migration: make up fake share qty for sold shares
* migration: also convert resolved markets
* migration: don't migrate resolved markets after all
* migration: error checking
* Split BuyAmountInput out of AmountInput
* Buy and sell tabs. Compute some sell info
* In progress
* BuyPanel & SellPanel with banner above that shows current shares and toggle button
* Remove "Remaining balance"
* Bring back 'Place a trade'. Tweaks
* Sell shares cloud function.
* Sell all shares by default. Switch back to buy if sell all your shares.
* Cache your shares in local storage so sell banner doesn't flicker.
* Compute sale value of shares with binary search to keep k constant.
* Update bets table to show BUY or SELL
* Fixes from Stephen's review
* Don't allow selling more than max shares in cloud function
* Use modal for sell shares on desktop.
* Handle floating point precision in max shares you can sell.
* cpmm initial commit: common logic, cloud functions
* remove unnecessary property
* contract type
* rename 'calculate.ts' => 'calculate-dpm.ts'
* rename dpm calculations
* use focus hook
* mechanism-agnostic calculations
* bet panel: use new calculations
* use new calculations
* delete markets cloud function
* use correct contract type in scripts / functions
* calculate fixed payouts; bets list calculations
* new bet: use calculateCpmmPurchase
* getOutcomeProbabilityAfterBet
* use deductFixedFees
* fix auto-refactor
* fix antes
* separate logic to payouts-dpm, payouts-fixed
* liquidity provision tracking
* remove comment
* liquidity label
* create liquidity provision even if no ante bet
* liquidity fee
* use all bets for getFixedCancelPayouts
* updateUserBalance: allow negative balances
* store initialProbability in contracts
* turn on liquidity fee; turn off creator fee
* Include time param in tweet url, so image preview is re-fetched
* share redemption
* cpmm ContractBetsTable display
* formatMoney: handle minus zero
* filter out redemption bets
* track fees on contract and bets; change fee schedule for cpmm markets; only pay out creator fees at resolution
* small fixes
* small fixes
* Redeem shares pays back loans first
* Fix initial point on graph
* calculateCpmmPurchase: deduct creator fee
* Filter out redemption bets from feed
* set env to dev for user-testing purposes
* creator fees messaging
* new cfmm: k = y^(1-p) * n^p
* addCpmmLiquidity
* correct price function
* enable fees
* handle overflow
* liquidity provision tracking
* raise fees
* Fix merge error
* fix dpm free response payout for single outcome
* Fix DPM payout calculation
* Remove hardcoding as dev
Co-authored-by: James Grugett <jahooma@gmail.com>
* Add dev target for TheoremOne
* Restrict signups to theoremone.co emails
* Add new indices
* Forbid reads from unauthenticated users
* Client-side render pages that need auth
These pages are now client-side rendered:
- /home
- /leaderboards
- /market/...
- /fold/...
* Hide 404 for private Manifolds
* Brand instance for TheoremOne
* Hide "Add Funds" and "Personalize your feed"
* "M$" => "T$"
* Hide Discord & About Page too
* Update placeholders for teams
* Update firestore.indexes.json
* Switch /analytics to propz
* Migrate per-env code into common/
* More migrations to PROJECT_ID
* Conditionally use SSG depending on public vs private instance
* Fix props to be empty object
* Move more logic into access
* Spin out config files for each environment
* Generify most of the customizable brand stuff
* Move IS_PRIVATE_MANIFOLD to access.ts
* Rename access.ts to envs/constants.ts
* Add "dev:dev" alias
* Rever firestore rules to existing settings
* Fixes according to James's review
* Loan backend: Add loanAmount field to Bet, manage loans up to max loan amount per market -- buy, sell, and resolve.
* Loan frontend: show your loan amount in bet panel, answer bet panel
* Resolve emails include full payout not subtracting loan
* Exclude sold bets from current loan amount
* Handle bets table for loans. Sell dialog explains how you will repay your loan.
* Floor remaining balance
* Fix layout of create answer bet info
* Clean up Sell popup UI
* Fix bug where listen query was not updating data.
* Reword loan copy
* Adjust bet panel width
* Fix loan calc on front end
* Add comment for includeMetadataChanges.
Co-authored-by: Austin Chen <akrolsmir@gmail.com>
* Reapply Manifold for Teams config changes
* Add Firebase config for TheoremOne
* Fix build
* Check in Firebase indexes
* Whitelist admins and new users by email
* Fix typo 🤦♂️
* Answer datatype and MULTI outcome type for Contract
* Create free answer contract
* Automatically sort Tailwind classes with Prettier (#45)
* Add Prettier Tailwind plugin
* Autoformat Tailwind classes with Prettier
* Allow for non-binary contracts in contract page and related components
* logo with white inside, transparent bg
* Create answer
* Some UI for showing answers
* Answer bet panel
* Convert rest of calcuate file to generic multi contracts
* Working betting with ante'd NONE answer
* Numbered answers. Layout & calculation tweaks
* Can bet. More layout tweaks!
* Resolve answer UI
* Resolve multi market
* Resolved market UI
* Fix feed and cards for multi contracts
* Sell bets. Various fixes
* Tweaks for trades page
* Always dev mode
* Create answer bet has isAnte: true
* Fix card showing 0% for multi contracts
* Fix grouped bets feed for multi outcomes
* None option converted to none of the above label at bottom of list. Button to resolve none.
* Tweaks to no answers yet, resolve button layout
* Show ante bets on new answers in the feed
* Update placeholder text for description
* Consolidate firestore rules for subcollections
* Remove Contract and Bet type params. Use string type for outcomes.
* Increase char limit to 10k for answers. Preserve line breaks.
* Don't show resolve options after answer chosen
* Fix type error in script
* Remove NONE resolution option
* Change outcomeType to include 'MULTI' and 'FREE_RESPONSE'
* Show bet probability change and payout when creating answer
* User info change: also change answers
* Append answers to contract field 'answers'
* sort trades by resolved
* Don't include trailing !:,.; in links
* Stop flooring inputs into formatMoney
* Revert "Stop flooring inputs into formatMoney"
This reverts commit 2f7ab18429.
* Consistently floor user.balance
* Expand create panel on focus
From Richard Hanania's feedback
* welcome email: include link to manifold
* Fix home page in dev on branches that are not free-response
* Close emails (#50)
* script init for stephen dev
* market close emails
* order of operations
* template email
* sendMarketCloseEmail: handle unsubscribe
* remove debugging
* marketCloseEmails: every hour
* sendMarketCloseEmails: check undefined
* marketCloseEmails: "every hour" => "every 1 hours"
* Set up a read API using Vercel serverless functions (#49)
* Set up read API using Vercel serverless functions
Featuring:
/api/v0/markets
/api/v0/market/[contractId]
/api/v0/slug/[contractSlug]
* Include tags in API
* Tweaks. Remove filter for only binary contract
* Fix bet probability change for NO bets
* Put back isProd calculation
Co-authored-by: Austin Chen <akrolsmir@gmail.com>
Co-authored-by: mantikoros <sgrugett@gmail.com>
Co-authored-by: mantikoros <95266179+mantikoros@users.noreply.github.com>
* script init for stephen dev
* market close emails
* order of operations
* template email
* sendMarketCloseEmail: handle unsubscribe
* remove debugging
* marketCloseEmails: every hour
* add id, userId to comment
* change user info cloud function and script; move cleanUsername to common
* change user info script
* fix rules
* add fund button: useLocation hook
* profile page
* merge
* profile stuff
* avatar uploading to storage bucket
* changeUserInfo: use transaction
* Styles for profile page
* Edit mode for profile, and more styles
Co-authored-by: James Grugett <jahooma@gmail.com>
* Fold type, fold page, query for fold contracts
* Tsconfig: target esnext, nounused locals: false
* Store tags in field on contract. Script to update contract tags
* Show tags on fold page
* Load all fold comments server-side to serve better feed
* Fix the annoying firebase already initialized error!
* Add links to /edit and /leaderboards for fold
* Page with list of folds
* UI for creating a fold
* Create a fold
* Edit fold page
* initial commit
* antes
* rename path, compute to contractPath, contractMetrics
* merge
* Include antes as bets; more calculations
* fees on estimated winnings
* mkt payout calculation
* contract: remove startPool, add phantomShares
* Merge branch 'main' into new-dpm
* dpm migration script
* my service account
* script to correct afterProb of last bet
* initial commit
* antes
* rename path, compute to contractPath, contractMetrics
* merge
* Include antes as bets; more calculations
* fees on estimated winnings
* mkt payout calculation
* contract: remove startPool, add phantomShares
* Merge branch 'main' into new-dpm
* dpm migration script
* my service account
* basic working payments
* Select funds amount and prettier funds button / dialog
* Add funds page and nav menu option
* Format funds amount. Use ghost button for back.
* Add mantic dollars description
* Improve styles of add funds page
* about styling
* change faq => about
* change default font to Courier
* header sign out menu item; remove user card
* keep logo font
* fix header issue
* stripe webhook: handle repeat events
* Make add funds button a gradient
* add funds referer url
* Fix add funds page after merge
* Slight VisD tweaks
* Update add funds button position. Mantic => Manifold
* Remove Add funds menu option for now.
* Set up product ids and endpoint for stripe prod
* Swap back order in profile menu
Co-authored-by: mantikoros <sgrugett@gmail.com>
Co-authored-by: Austin Chen <akrolsmir@gmail.com>
* new standard resolution; contract.totalBets; MKT resolution
* recalculate script
* enable resolve MKT
* different approach to resolve MKT
* comment out init
* Count payouts for bets with exluded sales
Co-authored-by: jahooma <jahooma@gmail.com>
* new standard resolution; contract.totalBets; MKT resolution
* recalculate script
* Fix one bug and change script name
Co-authored-by: jahooma <jahooma@gmail.com>