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