Merge branch 'tournaments'
[brisk.git] / TODO.txt
1  TODO |
2 ------+
3
4   FEATURES |
5  ----------+
6    WIP - CONTINUE FEATURE
7      . replace explicit strings with multilanguage array
8
9      DONE . save points every game
10      DONE . modify points calculation to include order and mazzo
11      DONE . exclude not standard types from statistics
12          DONE . daily reports (1 for each active tournament)
13          DONE . monthly stats (for normal match only)
14
15      DONE . show current match ID when created
16      DONE . add info about continue to the info page
17      DONE . add command to continue
18        DONE . check consistency of the request
19      DONE . rearrange users and game status to continue the selected match
20
21      DONE . investigate user reordering ??
22
23    - WEBSOCKET TRANSPORT
24      . refactoring $enc attribute management
25      DONE . reintroduced $enc = 'plain' for websocket
26      DONE . fallback for not correct WS version
27      DONE . fini of ws stream
28      DONE . reactivate compression
29      DONE . fix xynt_test01
30      DONE M2: brisk working
31      DONE . manage multiport apache config
32      DONE . manage headers correctly in sac-a-push
33      DONE . manage transport.close method where required
34      DONE . xynt_stream: manage fallback to multiple ports
35      DONE . manage fini for ws
36      POST . server: manage input data from clients
37      POST . manage ping/pong (seems not required)
38
39      DONE . client (xynt_streaming.js)
40      DONE . server (transport.phh)
41
42      DONE M1: xynt_test01.php working
43
44
45    - improved S
46      . db update (add components, maybe single string)
47      . filter in index.php
48      . filter in index_wr.php
49
50    - prefs API:
51      . prefs_assign(content): assign json content as output var
52      . prefs_apply(prefs_new): apply new content to g_prefs and system
53      . prefs_load(content): load json content and apply to g_prefs and system
54
55      . prefs_update: update preferences temporarly
56      . prefs_save: save to the server the new prefs
57
58    - preferences (listen into preferences)
59         // js var, volatile server, (db server || cookie)
60         temporary: js var, volatile server
61         permanent: js var, volatile server, (db server || cookie)
62
63      . data from db OR, if missing, from cookies
64
65      . update values
66      . database change
67      . MANAGE NOT AUTH USERS
68
69    - preferences (with "modifiable S")
70      . Mod. S: new flag into database
71      . graph infrastructure
72      . new box to edit color
73
74   MAJOR |
75  -------+
76    - BUG: some connection to the named socket fails
77    - Not simultaneous more then one stream
78
79
80   MINOR |
81  -------+
82    WIP - try to be more antivirus-friendly
83    - multiple rows between games
84    - packetize and automatize php-ancillary and apache module
85    - DISABLED_TO_FIX: DNS access (perform blocking dns requests, must be fixed)
86
87
88   DONE |
89  ------+
90    DONE - temporarly server hung not reflected on user timeouts
91    DONE - timeouted users are still be able to sit down (only the first at the table is banned)
92    DONE - page still opened after the server restart
93    DONE - log_legal address fix
94    DONE - manage too fast reload in xynt-streaming
95    DONE - add xhr as transport layer and manage different streams better
96    TEST - BUG: pari + 72 non fa 4x ma attualmente fa 3x, da correggere
97    TEST - BUG: lurker are logged out (and remain a pending socket opened (look the spush log)
98    DONE - save/restore database
99    DONE - into the room local step remains -1
100    DONE - centralize all '<script ...' incapsulation to allow multiple transport system.
101    DONE - BUG: access with password from 2 diff browsers the second go in strange "page not found" 
102           in the first tentative, the second works
103    DONE - BUG: access with password from 2 diff browsers place the first in a strict loop (the 
104           problem was a call to a static parent method instead of the overrided child method,
105           substitute self:: with the dynamically get class::)
106    DONE - garbage management
107
108    DONE/FROZEN - problem with getpeer (HOSTADDR)
109
110    DONE - slow cards distribution
111    DONE - substr to mb_substr
112    DONE - parametrizations:
113           . parametrization of $DOCUMENT_ROOT  var in brisk-spush.phh file
114           . parametrization of SITE_PREFIX(_LEN) define
115           . move the name of the named socket into the configuration file
116    DONE - manage and test cross forwarder between table and room
117    DONE - setcookie (for tables only and persist prefs)
118    DONE - images flickering on slow windows: try to poll stream every 300 ms (seems to be download problem)
119    DONE - database connection fails after a while, check close and try PGSQL_CONNECT_FORCE_NEW.
120    DONE - unneeded garbage_time.expired access
121    DONE - BUG: fast loop on stream index_rd_ifra page (js watchdog start without timeout corrupt counts)
122    DONE - BUG: logout failed (fixed with a garbage_collector wrapper at sac-a-push level
123    DONE - 404 wrong page management (remove directories redirections (es. brisk/))
124    DONE - configuration file management
125    DONE - app level keep-alive
126    DONE - index_wr other issues
127    DONE - from room to table
128    DONE - from table to room
129    DONE - chunked
130    DONE - bug: read from a not resource handle (already closed because a new socket substitute it)
131    DONE - partial write for normal page management
132    DONE - index_rd_ifra: last_clean issue
133    DONE - fwrite failed error management (select, buffer where store unsent data, and fwrite check and retry)
134    DONE - bug: after restart index_rd.php receive from prev clients a lot of req
135    DONE - index_wr.php::chat
136    DONE - index_wr.php::exit
137    DONE - index_rd.php porting
138    DONE - generic var management from internet
139    DONE - index.php auth part
140    ABRT - index_wr.php::reload - reload is js-only function
141    ABRT - keepalive management - not interesting for our purposes
142
143  BRISK4 (mammuth)
144  ======
145
146  - STEP MANAGEMENT VERIFY
147  Slim Paragraph
148  DONE - move the garbage timeout on file
149  DONE - in index_rd load all data only when required
150  - briskin5 alignment
151    DONE . extern del garb_timeout
152    DONE . user_load parameters verify
153    DONE . Bin5::load_data and Bin5::save_data refactoring with
154           data split
155    . move many function into "Bin5 class"
156  - garbaging of .step files
157
158  DB: - initial usage
159      DONE - configurabilità file o db
160      DONE - aggiornare le funz di gestione db in modo che prevedano anche il flag DISABLE
161      DONE - travasatore file to pg
162        DONE - travaso punteggi
163        DONE - memorizzazione nuovi i punteggi nel db
164        DONE - gestione classifiche in SQL
165          DONE - produrle
166          DONE - mostrarle
167
168      STEP 1.1
169        DONE - points archiver
170
171      STEP 1.2
172        DONE - partial usability if database go down.
173
174      STEP 1.5
175      - sistema di inserimento nuovi utenti (riversatore da form di inserimento)
176
177      STEP 2
178      - aggiornare le funz di gestione db in modo che prevedano anche il flag SUSPEND
179      - modifica password   
180      - ripristino password 
181
182      STEP 3
183      - comunicazioni di aggiornamento (stato salvato sul server) 
184
185  DONE - var $G_base aggiunta per gestire include in include da path differenti
186
187  BRISK3 (trusty)
188  ======
189   DONE - donameter
190     DONE - G_donors
191     DONE (WOW!) - js object with infos
192     DONE - main logic at login (cookie check in index_rd.php; show_message and createCookie via snippets with block
193            to prevent fast reload)
194     DONE - cookie per non assillare e visualizz.
195     DONE - graphical donameter
196     WIP content (in conf.)
197
198   DONE - numero di tavoli auth-only nel .brisk-install
199   - isolation
200     TEST - ricalcolo delle persone in piedi quando si cambia modalità
201     DONE - se si e' in isolation non si può cambiare nick perdendo l' auth
202     DONE - non leggere le chat di quelli non autenticati (in isolation)
203     DONE - regole per passare alla modalita' (in piedi o ai tavoli autenticati) 
204     DONE - treni non auth da nascondere 
205     DONE - verso gli altri ??: uguale a prima
206
207   finire multilingua (briskin5/index_wr.php e altri se ce ne sono)
208   coniglio
209   only auth strictly
210   placing limits to config file
211
212 Dunque, 
213
214 - come vengono aggiornate le classifiche: ogni giorno alle 23:58
215
216 - cosa cambia tra le tre coppie di classifiche: 
217   ci sono le classifiche dell' ultima settimana, quelle dell' ultimo mese,  e quelle dell' ultimo trimestre,
218   per ognuno di questi lassi di tempo poi c'è la classifica di chi ha giocato più di TOT partite o meno di TOT partite, con TOT che cambia a seconda del lasso di tempo.
219
220 - come vengono calcolate le classifiche: per ogni utente vengono presi tutti i punti fatti ai tavoli con lucchetto nel lasso di tempo preso in considerazione (ultima settimana, ultimo mese o ultimo trimestre), sommati e divisi per il numero di partite fatte in quello stesso lasso di tempo per normalizzare i valori; poi siccome la gente quando vede 0.18734 sbarella ho deciso di moltiplicare il tutto per 100.
221
222 Un esempio per chiarire:
223
224   l'utente 'pippo' che è nuovo gioca 4 partite nell'ultima settimana con i seguenti punteggi:
225     -2, 1, 2, 1
226   lo score viene { [ (-2) + (1) + (2) + (1) ] / 4 }  * 100 = 50.0
227   
228   a parità di score tra utenti va più in alto chi ha giocato più partite.
229
230 Se dopo quelle 4 partite 'pippo' non ne giocherà più, passata una settimana dall'ultima giocata 
231 sparirà dalla classifica settimanale e rimarrà in quelle mensili e trimestrali.
232
233
234   
235
236
237
238
239  BUG
240  ---
241  
242   DONE - paste da demauroparavia
243   DONE - recupero partita per re-login con password
244   DONE - problema "|" nei nomi (manca enhance degli script lato server)
245   - problema col treno se mouse sopra mentre stringe (verif)
246   
247  MINOR
248  -----
249
250  NORMAL
251  ------
252
253   - win test
254   WIP - /listen 
255     DONE - skin della textarea
256     DONE - set cookie 
257     DONE - init client (read from cookie) - ALWAYS BY SERVER
258     DONE - init server
259     DONE - after cookie check auth-only when no-auth case
260     DONE - aggiungi info accanto a "Chat"
261   DONE - /mesgtoadm
262   DONE - img dei comandi
263
264   DONE - form per garantire utenti (accoda in un file nel formato corretto)
265   DONE -   process request
266   DONE -   show form
267   DONE -   close butt
268   DONE -   submit form
269   DONE -   process form js side 
270   DONE -   process form
271   DONE -   documentazione in help
272
273   DONE - user status
274
275   DONE - aggiornare help
276   DONE -   overflow management
277   DONE -   for status
278   -   for password
279
280   DONE - reload home
281   - notify for long pages
282
283   - buddy list
284   - silenziastolti vari (fino al buddy import)
285   - restrict challenge per IP
286   - restricted charset for login
287   - watchdog
288
289   - db (minimal)
290     - db admin page
291     - user db admin
292     - use db 
293     - admin db
294
295     - studiare un anti-dos
296   - login modify
297  DONE  - db (fake)
298  DONE  - display auth
299     - manage preferences 
300
301  minor
302  -----
303    - auth after login
304
305 ----- done ------
306
307  BUG
308  ---
309   DONE   righe troncate
310   DONE - questione "a monte" che:
311   DONE   - lascia fuori il bottone
312   DONE   - scrive &agrave e compagnia
313   DONE - refresh act_table when unauthorized
314   DONE - problema ghost autenticato (ne prendi il posto ovunque sia)
315
316  MINOR
317  -----
318   DONE - refactoring of the owner name (auth attr for owner name)
319   DONE   - room
320   DONE     - at chat input line 
321   DONE     - in the chat output line
322   DONE     - deauth management
323   DONE - table
324   DONE   - at chat input line
325   DONE   - in the chat output line
326   DONE   - for user area of other users
327   DONE   - deauth management
328   DONE - alart to one user
329
330
331  NORMAL
332  ------
333   DONE - strong ban: "expire time|IP|session|(nick if authenticated)"
334   DONE   - login: se auth      -  verifica solo gli expire per quel nick
335   DONE   -        se non auth  -  verifica gli expire per IP e sessione
336   DONE   - riscrivere messaggi
337
338   DONE - login 
339   DONE   - se pass:
340   DONE     - richiede per l' utente un token (tutta la parte backend va un minimo studiata)
341   DONE     - lo legge, ci hasha la password
342   DONE     - invia la pass al server hashata
343   DONE   - se non pass:
344   DONE     - check del login e return corretto
345   DONE     - oggetto in shm single table con ( "ip", "login", timestamp ) e suo management
346   DONE     - rename ghost if logged
347   DONE     - onunload_cb e onbeforeunload_cb !!! 
348   DONE   - da change attrs a change class (input field)
349   DONE     - colore del bg per arrivare ad essere omogeneo
350   DONE     - cambiare path e file di config
351   DONE   - login with or without pass
352   DONE   - registered nick notice (METTERE IL MSG NELLA PAG DI LOGIN)
353   DONE     - segnalare tavoli solo per auth
354   DONE     - rename restriction at auth table
355   DONE     - change nick (strcasecmp)
356   DONE   - refact js tables to handle flags
357   DONE - room javascript refactoring
358
359   DONE - work background
360   DONE - reserved tables
361
362
363  BRISK2 (spawn)
364  ======
365
366    
367    URGENT - tables spawn
368             DONE - link with photos
369             DONE - top banner in Etc file
370             DONE - spawn of a table
371             DONE - data to cookies (removed table_idx from xhr calls also)
372             DONE - set subst to shutdowner/shutdowned
373             DONE - return to index.php
374             DONE - game's token
375             DONE - recover of corrupted table data
376             DONE - closure of a table
377             DONE - flush of the table
378             DONE - security checks for right scope access
379             DONE - garbage collector management
380             DONE -    recursive garbage - howto ?
381             DONE - stat & subst in browser
382             DONE - laccwr setting and exit if all players are unactive for some time
383             DONE - the list of test case
384             DONE - shm dimension
385             DONE - remove unused parts
386             DONE - move images
387             DONE - optimizations
388             DONE - cambiare titolo al tavolo
389             DONE - shutdowning lock tables
390             DONE - topbanner
391             DONE - public announcements
392             DONE - 10 sec to exit from table
393
394             FAR - inheritances
395    
396    TRAIN  -  DONE - add again in reload   
397              DONE - wag_set refact
398              DONE - filtra char speciali per title
399              DONE - chatt_send refact 
400              DONE - elenco dei giocatori
401              DONE - documentazione online
402              DONE - timeout management     
403              LATER - border color a muzzo
404        
405    NORM   - testament
406    NORM   - public announcements
407    NORM   - 10 sec to exit from table
408    NORM   - moving label for tables click
409
410 ----------------- join -----------------
411    NORM   - map
412
413    NORM   - restart preload img
414    NORM   - tools dir with a main and some pages where check briscola tools.
415    NORM   - watchdog
416
417    NORM   - chat vecchie in reload (forse)
418
419  MIDDLE TODO
420  ===========
421
422    - user assistant (with button to enable disable)
423    - documentation
424
425
426  FAR TODO
427  ========
428    NORM - internationalization
429    NORM - img -> div + css
430    
431  WEB
432  ===
433
434    - link to stable/unstable
435
436 -------------------------------------------------------------------
437  DONE
438  ====
439
440    ABORTED - asta: highlight buttons (css hover) - change pointer when over
441    DONE - step proxy
442    DONE - special chars in js
443    DONE - ban temporaneo dai tavoli
444    DONE - flash player to play sound
445    DONEBUG - (aum. il timeout) - carte giocate che restano girate
446          Sembra non migliorare di molto la cosa, gestita la cache
447          correttamente, sono apposto.
448
449    DONE - one player reject a game, to less points (<= 2)
450    DONE - help page
451    DONE - test di download per la cache
452    DONE - se passano tutti tranne l'ultimo l'asta va al penultimo.
453           Corretto il codice, occorre verificare se questo
454           ingenera qualche problema.
455    DONE - raddoppiato il numero di righe nella chat
456    DONE - corretto bug del /nick
457    DONE - carosello pubblicità altout
458    DONE - smammamorti
459    DONE - unload of the stream
460    DONE - standup centrati
461    DONE - current player - in info
462    DONE - HELP butt con ABOUT, REGOLE, VERSIONE
463    DONE - welcome lines in the chats (room and table)
464    DONE - welcome lines in the chats (room and table)
465    DONE - nomi in primo piano se vai sul quadrato   
466    DONE - to pass explicit config file to INSTALL.sh
467    DONE - flag to create a config file
468    ABRT - bottoni => immagini
469    DONE - aggiungere bottone al login
470    DONE - nomi in primo piano se vai sul quadrato   
471    DONE - installer to set cookie path
472    DONE - change name
473    DONE - automatic and manual logout
474    DONE - cache problems solved via .htaccess
475    DONE - all players out of the auction
476    DONE - time to send cards
477    DONE - hide cards before sends at a new game
478    DONE - well recognization of the browser and O.S.
479    DONE - login consistency !!!!
480    DONE - functionalization of garbage
481    DONE - call garbage function into login
482    DONE - game
483    DONE - manage the reload from scratch of the table page
484    DONE - table reset
485    DONE - sendcard => card_send(idx, ....)
486    DONE - show table for game
487    DONE - points calculation
488    DONE - make-up of the chooser
489    DONE - where place the briscola on the table
490    DONE - users info
491    DONE - show current auction position
492    DONE - table with internal management of the transition between pages.
493    DONE - server side page abort management  
494    DONE - cookie problem with Ajax
495    DONE - spostare il tasto "esco"
496    DONE - to pass explicit config file to INSTALL.sh 
497    DONE - 8 tables
498    DONE - safety out management
499    DONE - info enhancement and related button (how win the last game and
500           with how much points ?)
501
502  WEB
503    DONE - homepage
504    DONE - screenshots
505
506 DOC
507    CHAPTERS
508       HTTP Streaming
509       Local serializer
510       Database on shmem
511       Page abort (reload on http streaming case)
512       Chat
513       Cookies management
514       CSS tricks
515
516 CHECK ON NEW SERVERS
517 .htaccess AllowOverwrite mode for Cache-Control directive
518
519
520
521
522 */
523